Разрботка расширений для CMS Joomla
Шрифт:
MOD_MYQUESTIONS_XML_DESCRIPTION="Выводит вопросы из системы Вопрос - ответ" MOD_MYQUESTIONS_RANDOMIZE_LABEL="Случайный вопрос" MOD_MYQUESTIONS_RANDOMIZE_LABEL_DESC="Выводить один случайный вопрос?" MOD_MYQUESTIONS_ITEMS_LABEL="Количество вопросов"; MOD_MYQUESTIONS_ITEMS_LABEL_DESC="Сколько вопросов выводить?" MOD_MYQUESTIONS_MAXLEN_LABEL="Длина вопроса" MOD_MYQUESTIONS_MAXLEN_LABEL_DESC="Сколько первых символов вопроса отображать?" MOD_MYQUESTIONS_AUTHOR_LABEL="Автор вопроса" MOD_MYQUESTIONS_AUTHOR_LABEL_DESC="Выводить имя автора?" MOD_MYQUESTIONS_DATE_LABEL="Дата вопроса" MOD_MYQUESTIONS_DATE_LABEL_DESC="Выводить дату написания вопроса?"
В панели управления перейдите в " Расширения" - " Менеджер модулей". Выберите из списка модуль " Новые вопросы", и в правой части открывшейся страницы будет отображена группа элементов формы для установки параметров модуля (рис. 8.4).
Рис. 8.4. Установка параметров модуля
Упаковка модуля
Для упаковки модуля добавьте в файл /modules/mod_myquestions/mod_myquestions.xmlвыделенный код:
(есть
Создайте в папке /modules/mod_myquestionsпапку language, в ней - папку ru-RU. Скопируйте в нее файл ru-RU.mod_myquestions.iniиз папки language/ru-RU. Создайте файл /modules/mod_myquestions/language/ru-RU/ru-RU.mod_myquestions.sys.ini:
MOD_MYQUESTIONS="Новые вопросы" MOD_MYQUESTIONS_XML_DESCRIPTION="Выводит вопросы из системы Вопрос - ответ"
Создайте из содержимого папки /modules/mod_myquestionsархив mod_myquestions.zip. Это и есть установочный пакет для модуля. Обратите внимание, что в архиве должно находиться именно содержимое папки mod_myquestions, а не сама эта папка.
Ключевые термины
Манифест - файл XML, содержащий метаданные о расширении, данные для установки и/или описание его настроек.
Краткие итоги
Для каждого расширения Joomla может существовать файл-манифест, содержащий метаданные о расширении, данные для установки и/или описание его настроек. Манифест должен называться <имя расширения>.xmlи находиться в корневой директории установочного пакета.
Настройки расширения описаны для модулей непосредственно в манифесте, а для компонентов - в отдельном файле config.xmlв корневой директории бэкенда компонента.
Установочные пакеты для модуля и для компонента представляют собой ZIP-архивы определенной структуры.
Для компонента установочный пакет включает манифест и папки adminи site, содержащие файлы и папки бэкенда и фронтенда соответственно и, возможно, некоторые дополнительные файлы и папки, например, SQL-скрипты.
Для модуля установочный пакет просто включает все его папки и файлы.
Вопросы
Какие данные содержит манифест расширения Joomla?
Где описаны настройки модулей и компонентов?
Какова структура установочного пакет для модуля и для компонента?
Упражнения
Адаптируйте код из раздела " Практика" для своего варианта (см. список вариантов в дополнительных материалах).
Заключение
В рамках курса были рассмотрены основы программирования под CMS Joomla. Были предложены для изучения такие темы, как архитектура Joomla, работа с базой данных, генерация элементов HTML, организация иерархии пунктов меню, создание и отправка электронных писем, генерация SEF-ссылок, основы реализации архитектуры MVC с помощью Joomla, разработка простых модулей, организация постраничного вывода списков, управление навигационной цепочкой, создание манифестов расширений и установочных пакетов. Изучен ряд классов фреймворка Joomla. Таким образом, успешное освоение материалов данного курса достаточно для разработки небольших компонентов и модулей для Joomla.
Общий глоссарий
JAdministrator– приложение, управляющее функциями для администрирования Joomla. JApplication– класс, позволяющий работать с очередью сообщений, осуществлять перенаправление браузера, получать параметры конфигурации сайта, определять тип запущенного приложения Joomla. JController– абстрактный класс для реализации контроллеров. JDatabase– абстрактный класс, предоставляющий доступ к соединению с базой данных, создающемуся при инициализации приложения Joomla. JDatabaseQuery– класс, методы которого совпадают с ключевыми словами языка SQL и позволяют упростить создание сложных SQL-запросов. JDate– класс для работы с датами. JDocument– класс для работы с документом. JEditor– класс для работы с WYSIWYG-редактором. JError– класс для работы с ошибками. JFactory– класс Joomla, реализующий паттерн "фабрика" и позволяющий получить доступ к глобальным объектам фреймворка. JHTML– класс для вывода элементов XHTML. JHTMLBehavior– поддерживающий класс, который позволяет вывести календарь, дерево элементов, файловый загрузчик и некоторые другие элементы управления. JHTMLEmail– поддерживающий класс, содержащий метод для скрытия адреса электронной почты в целях его защиты от спам-ботов. JHTMLForm– поддерживающий класс, содержащий метод, который возвращает код скрытого поля формы для уменьшения риска CSRF-атак. JHTMLGrid– поддерживающий класс, позволяющий вывести в таблице в панели управления такие элементы, как чекбокс, пиктограмма для переключения состояния "опубликовано"/"не опубликовано", отобразить заголовок столбца как ссылки для сортировки по этому столбцу и др. JHTMLImage– поддерживающий класс, содержащий методы для поиска изображения в фронтенде и бэкенде. JHTMLList– поддерживающий класс для создания списков некоторых конкретных значений. JHTMLSelect– поддерживающий класс для генерации кода списков. JInstallation– приложение, которое запускается при установке Joomla. JMail– класс для создания и отправки электронных писем. JMailHelper– класс для очистки данных перед добавлением к электронному письму и проверки, является ли заданная строка корректным адресом электронной почты. JModel– абстрактный класс для реализации моделей. JPagination– класс для вывода элементов формы для разбивки на страницы списков элементов. JPathway– класс для управления навигационной цепочкой. JRequest– класс Joomla, использующийся для работы с переменными HTTP-запроса. JRoute– класс для создания SEF-ссылок. JSite– приложение, отвечающее за компоновку и отображение фронтенда. JTable– класс, реализующий паттерн Active Record и использующийся для управления таблицами базы данных. JToolBarHelper– класс Joomla, содержащий методы, которые генерируют HTML-код для построения кнопок панелей инструментов. JURI– класс для работы с URI. JUser– класс для работы с данными о пользователе. JView– абстрактный класс для реализации представлений. XML-RPC– приложение, позволяющее администрировать сайт Joomla удаленно. Библиотека– файл, который требуется для работы фреймворка или сторонних
Список сокращений
CCK Content Construction Kit Конструктор контента CMS Content Management System Система управления контентом MVC Model - View - Controller Архитектура "Модель - Представление - Контроллер" SEF Search Engine Friendly Ссылка, удобная для восприятия поисковыми системами
Варианты заданий для лабораторных работ
Варианты заданий для лабораторных работ
1. Интернет-магазинДля товара храните в базе данных его код, название, цену, описание и фотографию (можно хранить название файла с фотографией, а сами файлы помещать в какую-нибудь папку). Пользователь может заказать товар - для этого он нажимает на кнопку " Заказать" и вводит свой адрес. Для каждого заказа храните в базе данных его дату, адрес покупателя и код товара. Должна быть также возможность добавлять и удалять товары, а также просматривать список товаров, страницу с конкретным товаром и список заказов. При удалении товара заодно удаляйте с диска файл с изображением. Формы: добавление товара, заказ товара. 2. Фотогалерея с категориямиДля фотографии храните в базе данных его код, название соответствующего файла, название фотографии, описание фотографии, место съемки, размер файла, код категории. Можно хранить в базе данных только название файла с фотографией, а сами файлы помещать в какую-нибудь папку. Для каждой категории храните в базе данных ее код и название. Обеспечьте возможность добавления и удаления фотографий и категорий, просмотра списка всех категорий, списка всех фотографий в конкретной категории, просмотра одной фотографии. При удалении записи о фотографии из базы данных заодно удаляйте с диска файл с фотографией. Формы: добавление фотографии, добавление категории. 3. Архив mp3 с категориямиДля аудиофайла храните в базе данных его код, название файла, название песни, имя исполнителя, длительность звучания песни, размер файла, код категории. Сам файл храните в какой-нибудь папке на диске. Обеспечьте возможность просмотра списка категорий, списка песен в конкретной категории, просмотра определенной песни (то есть должна быть страница, на которой выводятся все данные об аудиофайле и можно прослушать песню). Должна быть также возможность добавлять песни и удалять их, а также добавлять и удалять категории. Для каждой категории храните в базе данных ее код и название. При удалении записи об аудиофайле из базы данных заодно удаляйте с диска сам файл. Формы: добавление песни, добавление категории. 4. Видеогалерея с категориямиДля видеофайла храните в базе данных его код, название файла, название видеоролика, описание видеоролика, длительность видеоролика, размер файла, код категории. Сам файл храните в какой-нибудь папке на диске. Обеспечьте возможность просмотра списка категорий, списка всех видеофайлов в конкретной категории, просмотра определенного файла (то есть должна быть страница, на которой выводятся все данные о видеофайле и можно посмотреть это видео). Должна быть также возможность добавлять файлы, просматривать их список и удалять их, а также добавлять и удалять категории. Для каждой категории храните в базе данных ее код и название.
При удалении записи о видеофайле из базы данных заодно удаляйте с диска сам файл. Формы: добавление видеоролика, добавление категории. 5. Гостевая книгаДля каждой записи (сообщения) вашей гостевой книги храните в базе данных ее код, имя автора записи, e-mail автора записи, ICQ автора записи, дату добавления записи, текст записи. Для каждого ответа на запись храните его код, текст и код записи, к которой относится этот ответ. Должна быть страница, на которой выводятся все сообщения. Обеспечьте возможность просмотра одного сообщения со всеми ответами на него, добавления сообщения, удаления сообщения, ответа на сообщение. Формы: добавление сообщения, добавление ответа на сообщение.