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