- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Разделение на иа и ип в Joomla
Для всех Joomla! Компонентов, код расширения ИА отделен от кода ИП. В некоторых случаях ИА будет использовать определенные файлы из ИП, например классы таблиц базы данных, но в остальном две отдельные части. Для безопасности не стоит использовать административные функции в коде ИП. Это важно, так как передняя часть и задняя часть похожи по структуре
Так выглядит структура папок Joomla!, также показана структура внутри папки administrator:
Обратите внимание, что папка administrator имеет похожую структуру с корневой папкой. Важно всегда помнить это, чтобы случайно не поместить свой код в неправильную папку.
Регистрация Компонента в бд
Теперь вы знаете, как получить доступ к Компонентам в ИА и ИП. Конечно же вы можете изменять URL, каждый раз, когда вы хотели бы выполнить кусок кода, однако это не будет приемлемым для пользователей. Для правильной навигации необходимо зарегистрировать Компонент в БД путем добавления строки в таблицу Компонентов. Мы проведем регистрацию с помощью следующего запроса. Предполагается, что таблицы БД имеют префикс jos_. Если вы предпочитаете работать с SQL напрямую с помощью командной строки, введите следующий запрос в консоли:
INSERT INTO jos_components (name, link, admin_menu_link,
admin_menu_alt, 'option', admin_menu_img, params)
VALUES ('Restaurant Reviews', 'option=com_reviews',
'option=com_reviews', 'Manage Reviews', 'com_reviews',
'js/ThemeOffice/component.png', '');
Если вы предпочитаете использовать графический интерфейс или веб-менеджер баз данных, такие как PhpMyAdmin, введите
Restaurant Reviews в поле name,
option=com_reviews в поля link и admin_menu_link,
Manage Reviews в поле admin_menu_alt,
com_reviews в поле option и
js/ThemeOffice/component.png в поле admin_menu_img.
Остальные поля оставьте пустыми. Поля menuid, parent, ordering и iscore по умолчанию 0, а enabled по умолчанию 1.
Добавление этой записи дает системе информацию о Компоненте. Здесь указывается имя, которое вы хотите использовать для Компонента. Оно может содержать пробелы и знаки препинания [и кириллицу прим. переводчика]. Вы можете указать и конкретные ссылки для перехода в ИА и ИП. Также определена иконка, используемая в меню Компоненты, описание, что используется в строке состояния браузера - не является необходимым.
После создания основных каталогов и файлов, Компонент готов к выполнению. В любом случае будет добавлен пункт меню в ИА и предоставлена возможность добавить соответствующую ссылку в ИП без использования прямого кодирования URL. После того, как мы записали данные в БД можно обновить ИА в браузере. В меню Компоненты (Components) появятся новые опции:
Теперь, когда Компонент зарегистрирован, вы также можете создать ссылку в ИП. Перейдите в ИА Меню/Главное меню (Menus/Main Menu) и выберите команду Создать (New). На этом экране, выберите Restaurant Reviews. Введите отображаемое название в поле Name [в нашем случае Reviews прим.переводчика] – как показано на рисунке:
Нажмите кнопку Сохранить и перейдите в ИП. Вы должны увидеть Restaurant Reviews.
Теперь Вы можете вспомнить свои навыки PHP-программирования и начать создавать Компонент.
Все запросы к ИП идут через
http://localhost/joomla/index php?option=com_reviews,
а все запросы к ИА через
http://localhost/joomla/administrator/index.php?option=com_reviews. Joomla! является достаточно гибкой, поэтому вы можете делать практически все что пожелаете. В некоторых случаях, у вас уже есть готовый код и Вы, конечно же сможете его использовать. Его нужно будет разделить на соответствующие файлы и разместить в соответствующих папках.
Однако наш Компонент мы будем разрабатывать с нуля. У вас есть возможность использовать ПИ Joomla, пользователей, классы БД и библиотеки по вашему усмотрению. Эти элементы сэкономят вам много времени, как только вы поймете, как они работают.