- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Включение sql-запросов
Чтобы добавить таблицы для управления Обзорами мы должны выполнить некоторые SQL запросы. Для этого мы добавим файлы с запросами, которые будут выполняться при установке или удалении. Создайте файл install.mysql.sql в /administrator/components/com_reviews и добавьте следующие запросы:
CREATE TABLE IF NOT EXISTS '#__reviews' (
'id' int(11) NOT NULL auto_increment,
'name' varchar(255) NOT NULL,
'address' varchar(255) NOT NULL,
'reservations' varchar(31) NOT NULL,
'quicktake' text NOT NULL,
'review' text NOT NULL,
'notes' text NOT NULL,
'smoking' tinyint(1) NOT NULL default '0',
'credit_cards' varchar(255) NOT NULL,
'cuisine' varchar(31) NOT NULL,
'avg_dinner_price' tinyint(3) NOT NULL default '0',
'review_date' datetime NOT NULL,
'published' tinyint(1) NOT NULL default '0',
PRIMARY KEY ('id')
);
CREATE TABLE IF NOT EXISTS '#__reviews_comments' (
'id' int(11) NOT NULL auto_increment,
'review_id' int(11) NOT NULL,
'user_id' int(11) NOT NULL,
'full_name' varchar(50) NOT NULL,
'comment_date' datetime NOT NULL,
'comment_text' text NOT NULL,
PRIMARY KEY ('id')
);
Есть два отличия от ранее созданных запросов. Во-первых, мы добавили дополнительные условия IF NOT EXISTS. Если была проблема при удалении Компонента и таблицы существуют, возможно, также из резервной копии, это позволит предотвратить возникновение ошибки. Кроме того, в запросе мы используем #_ префикс таблиц, который будет заменен на принимающей стороне Joomla!. В дополнение к установке, мы хотим создать SQL-сценарий удаления, который будет удалять таблицы чтобы не оставить никаких следов Компонента. Создайте файл uninstall.mysql.sql в /administrator/components/com_reviews и добавьте следующий код:
DROP TABLE #__reviews;
DROP TABLE #__reviews_comments;
Код обоих этих файлов будет использован, так как мы определили их в тегах <install> и <uninstall> в XML-файле.
Создание пунктов меню иа
В XML-файле в тегах <administration> мы определяем пункты меню для Компонента в ИА. Если мы будем управлять только одним типом записи, следующего фрагмента будет достаточно для установления связей с ИА:
<menu> Обзоры Ресторанов </menu>
Однако наш Компонент управляет как Обзорами, так и комментариями. Поэтому в пункте Обзоры Ресторанов создадим два пункта подменю. В следующем XML-фрагменте мы располагаем пункты меню в тегах <submenu>. Первый пункт использует link чтобы определить жесткую ссылку на index2.php?option=com_reviews, второй использует task для формирования ссылки index2.php?option=com_reviews&task=comments
<submenu>
<menu link="option=com_reviews">Управление Обзорами</menu>
<menu task="comments">Управление коментариями</menu>
</submenu>
Дополнительные сценарии установки
После установки Компонента, Joomla! отображает стандартное сообщение об успехе вместе с описанием, приводимым в XML-файле. Общее сообщение об удалении также генерируется при удалении. Мы можем переопределить эти сообщения с помощью пользовательского кода. Создадим install.reviews.php файл в /components/com_reviews с таким кодом:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
function com_install()
{
?>
<div class="header">Поздравляем, Компонент Обзоры
Ресторанов готов к работе!</div>
<p>
Поздравляем с покупкой и успешной установкой
Компонента Обзоры Ресторанов!
Несомненно, вы на пороге многих радостных часов
создания и организации всех общепитов вашего
города. Чтобы начать работу, перейдите в
Components / Restaurant Reviews / Manage Reviews
(Компоненты / Обзоры ресторанов / Управление
Обзорами )и нажмите кнопку "New" в правом углу
экрана.
Также не забудьте установить сопровождающие Плагины
и Модули для продвижения ваших Обзоров по всему сайту!
</p>
<?php
}
?>
Для деинсталляции создайте файл uninstall.reviews.php в /components/com_reviews такого содержания:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
function com_uninstall()
{
?>
<div class="header">Обзоры ресторанов удалены из вашей
системы.</div>
<p>
Очень жаль, что Вы удалили Компонент!
Для полного удаления Компонента убедитесь,
что также удалены Модули и Плагины.
</p>
<?php
}
?>
Ссылки на файлы с этими сценариями находятся сразу после <description> в XML-файле:
<installfile>install.reviews.php</installfile>
<uninstallfile>uninstall.reviews.php</uninstallfile>
Joomla! будет загружать файл install.reviews.php при установке и uninstall.reviews.php при удалении и вызывать функции com_install() и com_uninstall() соответственно. Эти функции можно использовать не только для вывода сообщений. Функция com_install() вызывается сразу после завершения процесса установки, так что она может быть использована для первого ознакомления пользователей с конфигурацией. Кроме того, функция com_uninstall() вызывается непосредственно перед удалением Компонента, любой вывод генерируется в буфер и отображается после удаления Компонента. Если com_install() или com_uninstall() возвращает ошибку (false), будет произведен откат. Это может быть использовано для предотвращения установки Компонента, например, когда целевая система не отвечает минимальным требованиям. Также может быть использовано для предотвращения удаления Компонента, который опубликовал ссылки на пункт меню.