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

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

pocketpda
# pocketpda 02.03.2016 15:16
неплохое описание, но все равно мало что понятно. Но за попытку объяснить респект