- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Упаковка и распространение
После того как код создан, он легко упаковывается для использования другими.
Список всех файлов добавляется в файл XML. Туда же включаются любые необходимые запросы для создания таблиц. Все файлы сжимаются в архив. Теперь Расширение готово быть установлено на любой сайт с Joomla!
Наш Проект для примера
Мы будем писать расширение Обзора ресторанов (restaurant reviews): создание, поиск, поддержка и перекрестные ссылки. Компонент будет обрабатывать общие данные просматривая все Обзоры, такие как диапазон цен, бронирование, тип кухни и местоположение. Ваши посетители будут иметь возможность поиска и сортировки Обзоров, добавлять свои собственные критерии, чтобы выбрать рестораны на вечер. Некоторые Модули будут показывать новые Обзоры, обращая внимание на частых гостей. Наконец, один из Плагинов будет вставлять части Обзоров в тематические статьи, а другой будет интегрировать их в поиск
Для подготовки к этому проекту, установите новую копию Joomla! 1,5 на веб-сервер с PHP и базой данных (желательно MySQL). Если вы предпочитаете для создания проекта использовать только компьютер и не имеете локального веб-сервера, вероятно, вам будет проще загрузить и установить предварительно настроенный пакет, такой как XAMPP (http://www.apachefriends.org). Таким образом, вы сможете работать со всеми файлами в локальной файловой системе.
Резюме
Joomla! может быть расширена за счет Компонентов, Модулей и Плагинов. Это позволяет добавлять функциональные возможности на сайт с Joomla! без внедрения в код ядра. Joomla! может поддерживаться и обновляться, не нарушая пользовательский код
Приступая к разработке Компонента
Прежде чем начать, необходимо создать несколько файлов и папок, а выполнить запрос. Это не только позволит вам создавать Компоненты, но также поможет проверить различные установки без обширных настроек. Вы также получите краткий Обзор способов организации Компонентов и доступа через Joomla!. Наконец, необходимо добавить несколько панелей инструментов, которые работают так же, как в других Компонентах
Структура Компонента Joomla!
Joomla! использует конкретную схему именования, которая используется во всех Компонентах. Каждый Компонент в системе имеет уникальное имя без пробелов. Код состоит из двух папок, каждая использует в названии префикс com_. Компонент в этой книге будет называться reviews. Таким образом, вам придется создать две папки с названием com_reviews:
-
Одну создайте в папке components для ИП.
-
Вторую - в папке administrator/components для ИА.
Когда Компонент загружается ИП, Joomla! будет искать файл с уникальным именем Компонента и расширением .php. В папке components/com_reviews создайте файл reviews.php.
Кроме того, при загрузке в ИА предполагается наличие файлов начинающихся на admin. далее следует имя Компонента с расширением .php. Добавьте файл admin.reviews.php в administrator/components/com_reviews. Оставьте оба файла пока пустыми
Запуск Компонента
Все запросы в ИП Joomla! проходят через index.php в корневом каталоге. Для загрузки Компонента, устанавливается GET переменная option в URL строке. Если URL для доступа к сайту будет http://localhost/joomla/index.php, то Компонент в ИП можно загрузить так:
http://localhost/joomla/index.php?option=com_reviews.
На данный момент, экран должен быть пуст, кроме общих элементов шаблонов и Модулей. Чтобы сделать наш Компонент более полезным, в reviews.php необходимо добавить следующий код и обновить браузер:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
echo '<div class="componentheading">Restaurant Reviews</div>';
?>
Экран будет выглядеть следующим образом:
Возможно, Вам будет в новинку увидеть вызов defined() в начале файла. Это сделано для того, чтобы убедиться, что код вызывается через Joomla!, а не непосредственно из Компонента /com_reviews/reviews.php.
Joomla! автоматически настраивает среду для некоторой гарантии безопасности, что может быть полезно, если кто-то попытается исполнить код непосредственно для вашего Компонента. Для ИА, вставьте такой код в administrator/components/com_reviews/admin.reviews.php:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
echo 'Restaurant Reviews';
?>
Набираем: http://localhost/joomla/administrator/index.php?option=com_reviews и сравниваем результат: