Ранее мы написали небольшой каркас для компонента и сошлись на том, что все можно сделать на нативном php. Но зачем тогда использовать Joomla если все равно все приходится писать руками. В Joomla есть удобный механизм работы с шаблонами, моделями и контроллерами. народе это называется MVC, но в Joomla это больше mVc. Контроллер и модель реализованы не самым удобным образом, а вод вид довольно интересен. В этой статье поговорим про создание шаблона для нашего компонента.
В файл moy_component.php пропишем несколько строк
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controller');
$controller = JController::getInstance('MoyComponent');
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));
$controller->redirect();
Это сплошная магия, и как оно работает я даже не интересовался. Главное, что работает. В этот файл рекомендую включить подключение всех необходимых для работы компонента файлов.
Далее нужно создать там же, в корне компонента файл controller.php
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controller');
class MoyComponentController extends JController{
function getdata(){
exit(json_encode(array('res'=>1)));
}
}
теперь у компонента будет два рабочих метода. Первый, по умолчанию и второй getdata, обращаться к ним можно соответственно
index.php?option=moy_component
и
index.php?option=moy_component&task=getdata
если со вторым все понятно, его можно использовать к примеру для работы ajax, то что же делает первое. С ajax сайты выглядят гораздо живее и интереснее, такие сайты делает студия www.it-studio.ru
Первый метод просто выводит шаблон компонента по умолчанию на экран. Для того чтобы это работало, его еще нужно создать.
Создаем в папке компонента папку views в ней название шаблона по умолчанию. Оно совпадает с названием контроллера(moycomponent). В ней создаем файл view.html.php
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
class MoyComponentViewMoyComponent extends JView{
function display($tpl = null) {
$this->assign('name','vasya');
parent::display($tpl);
}
}
и папку tmpl. В ней создаем два файла default.php
<?php
defined('_JEXEC') or die('Restricted access');
?>
Hello <?=$this->name?>
и default.xml
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="kakoy_to_text">
<message>kakoy_to_text2</message>
</layout>
</metadata>
В первом файле и есть шаблон. Обычный Native php, без изысков, но и без ограничений (привет Smarty)
Второй файл, нужен для того, чтобы Joomla могла видеть ваш компонент при создании меню.
Создание компонента Joomla с нуля
- Создание компонента Joomla с нуля. Часть 1
- Создание компонента Joomla с нуля. Часть 2. PHP файл
- Создание компонента Joomla с нуля. Часть 3. Создаем установочный файл
- Создание компонента Joomla с нуля. Часть 4. Использование БД
- Создание компонента Joomla с нуля. Часть 5. Роутинг
- Создание компонента Joomla с нуля. Часть 6. Использование шаблонов
- Создание компонента Joomla с нуля. Часть 7 CRUD в контроллере


Комментарии