- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Упаковка Компонента
Хотя подготовка Модулей и Плагинов основном включает в себя создание списка файлов, Компонентам потребуется особое внимание. Они обычно используются для управления записями в базе данных, поэтому есть необходимость добавлять запросы для создания сопровождающих таблиц. Нам необходима ссылка на Компонент в ИА. Наконец, мы, возможно, пожелаем выполнить некоторый дополнительный код сразу после установки или при удалении Компонента. Создадим reviews.xml в components/com_reviews с таким кодом:
<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0">
<name>Обзоры</name>
<author>Sumptuous Software</author>
<creationDate>January 2007</creationDate>
<copyright>(C) 2007</copyright>
<authorEmail>support@packtpub.com</authorEmail>
<authorUrl>www.packtpub.com</authorUrl>
<version>1.5.0</version>
<license>Commercial</license>
<description> Компонент для записи и управления
Обзорами ресторанов.</description>
<installfile>install.reviews.php</installfile>
<uninstallfile>uninstall.reviews.php</uninstallfile>
<install>
<sql>
<file driver="mysql" charset="utf8">install.mysql.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">uninstall.mysql.sql</file>
</sql>
</uninstall>
<files>
<filename>controller.php</filename>
<filename>reviews.html.php</filename>
<filename>reviews.php</filename>
<filename>router.php</filename>
<filename>models/review.php</filename>
<filename>models/all.php</filename>
<filename>views/all/view.html.php</filename>
<filename>views/all/tmpl/default.php</filename>
<filename>views/review/view.html.php</filename>
<filename>views/review/tmpl/default.php</filename>
<filename>views/review/tmpl/default_form.php</filename>
</files>
<administration>
<menu> Обзоры Ресторанов </menu>
<submenu>
<menu link="option=com_reviews">Управление Обзорами</menu>
<menu task="comments">Управление коментариями</menu>
</submenu>
<files folder="admin">
<filename>install.mysql.sql</filename>
<filename>uninstall.mysql.sql</filename>
<filename>admin.reviews.html.php</filename>
<filename>admin.reviews.php</filename>
<filename>controller.php</filename>
<filename>tables/comment.php</filename>
<filename>tables/review.php</filename>
<filename>toolbar.reviews.html.php</filename>
<filename>toolbar.reviews.php</filename>
</files>
</administration>
</install>
[Здесь я перевел некоторый текст, чтобы показать использования кириллицы. прим.переводчика]
Что изменилось со времени Joomla! 1,0?
По большей части, установочные XML файлы Компонента для Joomla! 1,5 аналогичны тем, которые использовались в 1,0.
SQL запросы установки и удаления теперь мигрировали во внешние файлы, с возможностью включения различных файлов SQL для различных типов баз данных. Кроме того, код ИА теперь собирается в отдельную папку. Теперь вы можете указать тег <files> в разделе <administration>. Это помогает избежать конфликтов с названиями файлов.
Как в Модулях и Плагинах мы перечисляем все файлы, связанные с расширением. Однако в Компонентах у нас есть как файлы для ИА, так и для ИП. Файлы ИА помещаются в раздел <administration> в тег <files> где атрибут folder установлен как admin. Файлы, заключенные в <installfile> и <uninstallfile> используются для пользовательских файлов установки и удаления, которые мы сейчас будем создавать. Хотя эти файлы находятся в /components/com_reviews, они будут перемещены в /administrator/components/com_reviews при инсталляции.
Ниже находятся теги <install> и <uninstall> для специальных файлов установки и удаления. Внутри их находятся теги <sql> и <file>. Они используются, чтобы добавить файлы SQL-запросов для процессов установки и удаления. Так как Joomla! поддерживает различные типы баз данных, вы можете включить свой файл для каждого типа (мы будем создавать только один для MySQL).
Заметим, что, в отличие от файлов, перечисленных в <installfile> и <uninstallfile>, оба файла install.mysql.sql и uninstall.mysql.sql указаны внутри тегов <install> и <uninstall> и, также в тегах <files> внутри <administration>. Если их не указать в разделе <administration>, они не будут скопированы и, следовательно, запросы не будут выполнены.