![](/user_photo/2706_HbeT2.jpg)
- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Создание пи
Все ПИ в ИА реализуются с кнопками для сохранения, удаления, редактирования и публикации элементов в едином стиле. Вы будете постоянно использовать эти кнопки как неотъемлемую часть своих Компонентов. Для начала, создайте файл в toolbar.reviews.html.php в папке administrator/components/com_reviews с таким кодом:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
class TOOLBAR_reviews {
function
_NEW() {
JToolBarHelper::save();
JToolBarHelper::apply();
JToolBarHelper::cancel();
}
function _DEFAULT() {
JToolBarHelper::title( JText::_( 'Restaurant Reviews' ),
'generic.png' );
JToolBarHelper::publishList();
JToolBarHelper::unpublishList();
JToolBarHelper::editList();
JToolBarHelper::deleteList();
JToolBarHelper::addNew();
}
}
?>
Файлы, содержащие код, как правило, организованы в классы. Как и в данном случае TOOLBAR_reviews. Каждая функция здесь представляет различные панели инструментов. Класс JToolBarHelper содержит функции, которые генерируют необходимый для создания панелей инструментов HTML-код. При желании, вы также можете добавлять пользовательский HTML внутрь этих функций. Обратите внимание, что панель инструментов организована как таблица HTML, вам, вероятно, будет необходимо добавить <td> теги в случае создания пользовательской навигации.
Мы определили ПИ, однако необходимо добавить некоторый код, который будет определять что именно показывать. В ИА Joomla! автоматически загружает файл, начинающийся с имени Компонента и заканчивающийся на .reviews.php в верхнюю правую часть экрана. Добавьте следующий код в папку administrator/components/com_reviews:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( JApplicationHelper::getPath( 'toolbar_html' ) );
switch($task)
{
case 'edit':
case 'add':
TOOLBAR_reviews::_NEW();
break;
default:
TOOLBAR_reviews::_DEFAULT();
break;
}
?>
Строку, содержащую require_once(...) использует функцию getPath() - член класса JApplicationHelper.
[Далее мы будем писать так:
… использует JApplicationHelper функцию getPath()
или так:
… использует функцию getPath() из JApplicationHelper
прим. переводчика].
Вызов getPath () позволяет вызвать toolbar.reviews.html.php файла без привязки к имени Компонента. Позже, даже если вы измените название на "Рестораны", а также измените имена файлов, эта строка кода будет по-прежнему работать вызывая панель инструментов.
Возможно Вы удивитесь тому, что мы создаем два файла toolbar.reviews.php и toolbar.reviews.html.php. Предпочтительный стиль кодирования среди разработчиков Компонентов заключается в сохранении логики обработки в файл полностью отделенный от файла, который фактически производит отображение. Таким образом, упрощается последующее добавление новых функций и существенно уменьшается сам код.
После загрузки файла toolbar.reviews.php, вы должны решить, какие панели инструментов должны быть показаны. Запрашиваемая переменная $task автоматически регистрируется в глобальной области Joomla! и используется для направления потока логики в Компоненте. Обновите браузер в ИА и выберите Restaurant Reviews в Components - вы должны увидеть следующий экран
Чтобы увидеть другие панели инструментов, добавьте &task=add в конец URL в браузере. Панель инструментов должна выглядеть так
Ваши пользователи, конечно, не будут гореть желанием добавлять переменные в конец URL. Как же им использовать Вторую панель? За каждой кнопкой на панели инструментов стоит выполнение определенной задачи. При нажатии в форму будет добавлена соответствующая задача и форма будет передана на обработку. Как только будет размещена соответствующая форма нажатие на кнопку New вызовет эту ПИ. Поскольку мы еще не создали такую форму в ИА, эти кнопки пока не работают. Они начнут работать в следующей главе, когда мы создадим оставшуюся часть ИА