| Урок 2. Создание простейшего компонента для Joomla 1.5 (Основы программирования для Joomla 1.5) |
|
|
|
В этом уроке мы создадим простой компонент, который строчку «Hello!» в браузере. Перед тем, как начать создавать компонент, у Вас на сервере должна быть установлена CMS Joomla 1.5. Если Вы еще не установили, то это можно сделать с помощью уроков в разделе «Установка Joomla». В этом уроке сначала создадим папку компонента под названием com_hello, в которую нам нужно добавить пять файлов: В следующих уроках мы будем добавлять еще файлы, и общая файловая структура нашего компонента будет выглядеть так, как показано на рис. 2.1. Скачать архив с исходными кодами можно здесь.
CMS Joomla всегда обрабатывает ссылку в корневом файле index.php для страниц Front End (сайт) или administrator/index.php для страниц Back End (админ-панель). Функция обработки URL загрузит требуемый компонент, основанный на значении 'option' в URL (метод GET) или переданных данных методом POST. Для нашего компонента, URL выглядит так: Это означает, что если пользователь введет в браузере строчку http://имя сайта/index.php?option=com_hello&view=hello, то переменная «option» получит значение «com_hello&view=hello». Эта ссылка запустит выполнение файла, являющего точкой входа в наш компонент: http://имя сайта/components/com_hello/hello.php. Код для этого файла довольно типичен для всех компонент:
<?php
/**
* @package Autor
* @subpackage Components
* components/com_hello/hello.php
* @link http://autor.net/
* @license GNU/GPL
*/
// Защита от прямого обращения к скрипту
defined( '_JEXEC' ) or die( 'Restricted access' );
// Подключение файла контроллера.
require_once( JPATH_COMPONENT.DS.'controller.php' );
// Проверка или требуется определенный контроллер
if($controller = JRequest::getVar( 'controller' )) {
require_once( JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php' );
}
// Создание класса нашего компонента
$classname = 'HelloController'.$controller;
$controller = new $classname( );
// Выполнить задачу запроса
$controller->execute( JRequest::getVar( 'task' ) );
// Переадресация
$controller->redirect();
?>
Примечание к коду:JPATH_COMPONENT – это абсолютный путь к текущему компоненту; в наше случае - components/com_hello. Сейчас мы используем наш базовый контроллер-класс HelloController в com_hello/controller.php. При необходимости, добавляем контроллер HelloControllerController1 из com_hello/controllers/controller1.php. Такой стандарт упрощает схему многозадачного компонента (это будет использоваться в последующих уроках, в данном случае в нашем компоненте одна задача). Теперь мы инструктируем контроллер исполнить задачу, которая определена в URL: index.php?option=com_hello&task=sometask. Если нет определения задачи, то по умолчанию будет задача 'display'. Когда используется задача 'display' , переменная 'display' укажет то, что выводить. Пример стандартных задач - save, edit, new... На последней строке кода контроллер переадресовывает страницу. Обычно используется для таких задач как SAVE. Главная точка входа (hello.php) пропускает управление на контроллер, который обрабатывает выполнение задачи, которая была определена в запросе. Создание КонтроллераТак как наш компонент имеет только одну задачу (вывод «Hello»), то он будет очень прост. Никакой манипуляции данными не требуется. Все что нужно сделать, это загрузить необходимый view. Поэтому, мы будем иметь только один метод в нашем контроллере: view (). Большинство требуемых функциональных возможностей уже встроено в JController класс. Потому мы должны только вызывать метод JController:: view (). Код основного контроллера site/controller.php такой:
<?php
/**
* @package Autor
* @subpackage Components
* @link http://autor.net/
* @license GNU/GPL
*/
// Защита от прямого обращения к скрипту
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller');
/**
* Hello World Component Controller
*
* @package Joomla.Tutorials
* @subpackage Components
*/
class HelloController extends JController
{
/**
* Method to display the view
*
* @access public
*/
function display()
{
parent::display();
}
}
?>
Конструктор JController будет всегда по умолчанию регистрировать задачу display() используя метод registerDefaultTask(), если не определена другая задача. В самом деле, метод display() не нужен после того, но в нашем случае он есть хорошей демонстрацией того, что делает контроллер. Метод JController :: display() метод определит имя view и шаблон из запроса, потом загрузит view и установит шаблон. Когда Вы создаете пункт меню для вашего компонента, менеджер меню позволит администратору выбирать задачу с которой начинать выполнение компонента. В нашем компоненте, view имеет единственное значение - hello и шаблон имеет единственное значение - default (по умолчанию). Создание вида (view)Для создания вида нужно извлечь данные, которые будут отображаться, и передать их в шаблон. Данные передаются в шаблон с помощью метода JView::assignRef Код Вида в файле site/views/hello/view.html.php следующий:
<?php
/**
* @package Autor
* @subpackage Components
* @link http://autor.net/
* @license GNU/GPL
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.application.component.view');
/**
* HTML View class for the HelloWorld Component
*
* @package HelloWorld
*/
class HelloViewHello extends JView
{
function display($tpl = null)
{
$greeting = "Hello World!";
$this->assignRef( 'greeting', $greeting );
parent::display($tpl);
}
}
?>
Создание шаблонаJoomla шаблоны являются файлами PHP, которые создают вид данных. Переменные, переданные с помощью метода JView::assignRef можно получить из шаблона с помощью $this->propertyname.
<?php
defined('_JEXEC') or die('Restricted access'); ?>
Создание hello.xmlКомпонент можно установить вручну путем копирования файлов с помошью FTP-клиента на сервер, и модификации базы данных. Но лучше создать xml файл, и тогда Установщик Joomla все сделает за вас. XML файл может содержать разнообразную информацию и инструкции по установке:
Наш XML файл выглядит так:
Создайте также в каталоге admin файлы admin.hello.php и index.html. Оставьте их пока пустыми. <html><body bgcolor="#FFFFFF"></body></html> С помощью этих файлов будет отображаться пустая страница. Архив исходных файлов для этого урока можно скачать по этой ссылке:
Предыдущие уроки по Основах программирования для Joomla 1.5: |

Z417310586352


