Ранее мы написали небольшой каркас для компонента и сошлись на том, что все можно сделать на нативном 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 в контроллере
Комментарии