Донецкий техникум промышленной автоматики

Урок 2. Створення найпростішого компонента для Joomla 1.5 (Основи програмування для Joomla 1.5)

  1. Примітка до коду:
  2. створення Контролера
  3. Створення виду (view)
  4. створення шаблону
  5. створення hello.xml

У цьому уроці ми створимо простий компонент, який рядок «Hello!» В браузері.
Перед тим, як почати створювати компонент, у Вас на сервері повинна бути встановлена ​​CMS Joomla 1.5. Якщо Ви ще не встановили, то це можна зробити за допомогою уроків в розділі « установка Joomla ».

У цьому уроці спочатку створимо папку компонента під назвою com_hello, в яку нам потрібно додати п'ять файлів:
site / hello.php - точка входу в наш компонент;
site / controller.php - містить наше Головне управління компонентом (Контролер);
site / views / hello / view.html.php - обробляє дані і передає їх в шаблон для виведення;
site / views / hello / tmpl / default.php - шаблон для виведення даних;
hello.xml- XML ​​служить для передачі інструкцій для Joomla по установці компонента.

У наступних уроках ми будемо додавати ще файли, і загальна файлова структура нашого компонента буде виглядати так, як показано на рис. 2.1. Завантажити архів з вихідними кодами можна тут.

Завантажити архів з вихідними кодами можна тут

CMS Joomla завжди обробляє посилання в кореневому файлі index.php для сторінок Front End (сайт) або administrator / index.php для сторінок Back End (адмін-панель). Функція обробки URL завантажить необхідний компонент, заснований на значенні 'option' в URL (метод GET) або переданих даних методом POST.

Для нашого компонента, URL виглядає так:
index.php? option = com_hello & view = hello

Це означає, що якщо користувач введе в браузері рядок 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.
Для Front End - JPATH_COMPONENT_SITE
Для Back End - JPATH_COMPONENT_ADMINISTRATOR
DS означає автоматичний вибір слеша (роздільник директорій) '\' або '/'.
JRequest: getVar () знаходить змінну в URL (або в даних POST). Наприклад, наш URL може виглядати так index.php? Option = com_hello & controller = controller_name, тоді ми можемо отримати ім'я потрібного нам контролера, використовуючи:
echo JRequest :: getVar ( "controller").

Зараз ми використовуємо наш базовий контролер-клас 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.
У нашому простому шаблоні site / views / hello / tmpl / default.php ми тільки виводимо на екран вітання.

<? Php defined ( '_ JEXEC') or die ( 'Restricted access'); ?>

створення hello.xml

Компонент можна встановити вручну шляхом копіювання файлів з допомогою FTP-клієнта на сервер, і модифікації бази даних.

Але краще створити xml файл, і тоді Установник Joomla все зробить за вас. XML файл може містити різноманітну інформацію та інструкції по установці:

  • Загальну інформацію про компоненті і автора.
  • Список файлів, які потрібно скопіювати з архіву, із зазначенням куди копіювати;
  • Як і необхідності можна додати скрипти супроводжують установку і видалення компонента;
  • Як і необхідності можна додати файли з sql-запитів, які будуть виконуватися при установці і видаленні компонента.

Наш XML файл виглядає так:

Hello2007 02 22 Повне Автора author собачка mail.net http://www.autor.net КопірайтЛіцензіяComponent Version StringDescription of the component ... index.htmlhello.phpcontroller.phpviews / index.htmlviews / hello / index.htmlviews / hello / view. html.phpviews / hello / tmpl / index.htmlviews / hello / tmpl / default.php Hello World! index.htmladmin.hello.php

Створіть також в каталозі admin файли admin.hello.php і index.html. Залиште їх поки порожніми.
Як Ви помітили, кожна папка містить файли index.html (рис. 2.1). Файли index.html поміщають в кожен каталог, щоб перешкоджати користувачам отримувати лістинг каталогу.
Ці файли містять одну єдину рядок:

<Html> <body bgcolor = "# FFFFFF"> </ body> </ html>

За допомогою цих файлів буде відображатися порожня сторінка.
У нас вийшов найпростіший компонент.

Архів вихідних файлів для цього уроку можна завантажити за цим посиланням:
http://joomla-master.com/com_hello_2.zip

Попередні уроки по Основах програмування для Joomla 1.5:

Вступ

Урок 1. Основи функціонування Joomla 1.5

Php?
Php?
Controller; $ Controller = new $ classname (); // Виконати завдання запиту $ controller-> execute (JRequest :: getVar ( 'task')); // Переадресація $ controller-> redirect (); ?
Php?
Php?
Tutorials * @subpackage Components * / class HelloController extends JController {/ ** * Method to display the view * * @access public * / function display () {parent :: display (); }}?
This-> assignRef ( 'greeting', $ greeting); parent :: display ($ tpl); }}?
Lt;?
Php defined ( '_ JEXEC') or die ( 'Restricted access'); ?