Разрботка расширений для CMS Joomla
Шрифт:
Чтобы использовать для кнопки свою картинку, необходимо создать файл CSS, содержащий подобное выражение:
.icon-32-myiconname { background-image: url(icon-32-myiconfile.png); }
Класс JToolBarHelper будет искать для заданного значения iconname класс .icon-32- iconname. Название файла должно начинаться с "icon-32-".
В таком случае вызов функции JToolBarHelper::custom будет выглядеть так:
JToolBarHelper::custom('someFunction', 'myiconname.png', '', 'Альтернативный текст', false, false);
Ваш файл CSS необходимо подключить в файле admin.myquestions.phpследующим образом:
JHTML::stylesheet('delete.css', 'administrator/components/com_myquestions/');
Предполагается, что файлы delete.cssи icon-32-myiconfile.pngнаходятся
Ключевые термины
JAdministrator - приложение, управляющее функциями для администрирования Joomla. JApplication - класс, позволяющий работать с очередью сообщений, осуществлять перенаправление браузера, получать параметры конфигурации сайта, определять тип запущенного приложения Joomla. JFactory - класс Joomla, реализующий паттерн "фабрика" и позволяющий получить доступ к глобальным объектам фреймворка. JInstallation - приложение, которое запускается при установке Joomla. JRequest - класс Joomla, использующийся для работы с переменными HTTP-запроса. JSite - приложение, отвечающее за компоновку и отображение фронтенда. JToolBarHelper - класс Joomla, содержащий методы, которые генерируют HTML-код для построения кнопок панелей инструментов. XML-RPC - приложение, позволяющее администрировать сайт Joomla удаленно. Библиотека - файл, который требуется для работы фреймворка или сторонних расширений. Бэкенд - система администрирования сайта. Ключ - эквивалент текста, подлежащего переводу. Компонент - основной тип расширений Joomla, вызов которого происходит при каждом обращении к Joomla. Модуль - расширение Joomla, использующееся для отображения небольших фрагментов контента, обычно в левой или правой колонке или верхней или нижней областях страницы. Очередь сообщений - массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы. Перевод - строка, содержащая перевод текста, соответствующего заданному ключу, на какой-либо язык. Плагин - расширение Joomla, позволяющее зарегистрировать функции и классы для обработки каких-либо событий, вызванных Joomla, например, поиск по сайту. Приложение - глобальный объект, использующийся для обработки запросов. Уровень приложения - часть архитектуры Joomla, которая состоит из приложений, расширяющих абстрактный класс JApplication. Уровень расширений - часть архитектуры Joomla, которая состоит из расширений фреймворка Joomla и приложений. Уровень фреймворка - часть архитектуры Joomla, которая обеспечивает ее базовую функциональность с помощью набора библиотек и плагинов и собственно ядра Joomla. Фреймворк Joomla ("ядро") - набор классов, обеспечивающих базовую функциональность Joomla (JDatabase, JUser, JForm, JEditor и т.д.). Фронтенд - часть сайта, доступная пользователю. Шаблон - расширение Joomla, отвечающее за внешний вид сайта. Языковый файл - расширение Joomla, позволяющее представить ее контент на нескольких языках.
Краткие итоги
Фреймворк Joomla состоит из трех уровней: уровень фреймворка, уровень приложения и уровень расширений.
Уровень фреймворка обеспечивает базовую функциональность Joomla с помощью набора библиотек и плагинов и собственно фреймворка Joomla.
Уровень приложения состоит из приложений, которые расширяют абстрактный класс JApplication.
Уровень расширений состоит из таких расширений фреймворка Joomla и приложений, как компоненты, модули, плагины и т.д.
Joomla делится на фронтенд - часть сайта, доступная пользователю, и бэкенд - систему администрирования сайта. Большинство компонентов для Joomla также делятся на фронтенд и бэкенд, и их код соответственно распределяется по двум папкам.
В Joomla определен ряд констант, хранящих значения путей, а также константа _JEXEC, позволяющая проверить, был ли скрипт вызван из Joomla, и DS - разделитель директорий.
Для создания мультиязыкового сайта
используются языковые файлы, хранящие пары "ключ-значение", где ключ - это эквивалент какого-то текста, а значение - перевод этого текста на какой-либо язык.Статический класс JFactory реализует паттерн "фабрика" и позволяет получить доступ к глобальным объектам фреймворка.
Вместо непосредственного использования глобальных массивов $_GET, $_POST, $_REQUEST и др. удобнее применять класс JRequest. Его методы пропускают данные, введенные пользователем, через фильтр во избежание инъекций.
В Joomla существует очередь сообщений - массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы. Добавляя сообщение в очередь, мы можем указывать его тип - сообщение, предупреждение или ошибка.
Глобальный объект JApplication позволяет работать с очередью сообщений, осуществлять перенаправление браузера, получать параметры конфигурации сайта, определять тип запущенного приложения Joomla.
Панели инструментов в бэкенде можно создавать с помощью класса JToolBarHelper, методы которого генерируют HTML-код для построения кнопок. Для отображения кнопок, которые часто используются в компонентах, существуют готовые методы этого класса. Можно также создать собственную кнопку.
Вопросы
Опишите структуру фреймворка Joomla.
Что такое фронтенд и бэкенд?
Какие константы предопределены в Joomla?
Каким образом реализована поддержка мультиязыковых сайтов?
Для чего используется класс JFactory?
В чем преимущество использования методов класса JRequest?
Что такое очередь сообщений?
Для чего используется глобальный объект JApplication?
Каким образом создаются панели инструментов в бэкенде?
Упражнения
Адаптируйте код из раздела " Практика" для своего варианта (см. дополнительные материалы).
Работа с базой данных
Подробно рассмотрена работа с базой данных средствами Joomla. Рассмотрены понятия реального и символического префиксов, этапы выполнения запроса к базе данных и класс JTable.
Цель лекции:Изучить, как происходит работа с базой данных средствами Joomla.
Префикс таблиц базы данных
Префикс таблиц базы данных– это строка, которая присоединяется к названию каждой таблицы Joomla в базе данных. Префикс задается при установке Joomla. В старых версиях по умолчанию использовался префикс "jos_", однако это создавало потенциальную уязвимость сайта, т.к. хакеры знали название таблицы с паролями пользователей - "jos_users". Теперь префикс, предлагаемый при установке, генерируется случайным образом.
Использование префикса позволяет разместить в одной базе данных несколько установок Joomla.
Различают реальный и символический префиксы. Реальный префикс– это то конкретное сочетание символов, которое используется в названиях таблиц базы данных. Символический префикс– это сочетание "#__" (решетка и два знака подчеркивания), которое используется в запросах вместо реального префикса. При обработке запроса вместо символического префикса будет автоматически подставлен реальный. Например, при реальном префиксе "jos_" строка "#__mycomponent_mytable" превратится в "jos_mycomponent_mytable".
При разработке собственных расширений в SQL-запросах всегда указывается символический префикс, а не реальный, так как в других установках Joomla почти наверняка будут использоваться другие реальные префиксы.
Выполнение запроса к базе данных
Чтобы выполнить запрос к базе данных Joomla, необходимо осуществить пять операций:
Получение ссылки на объект JDatabase.
Формирование запроса.
Задание запроса.
Выполнение запроса.
При необходимости - загрузка результата.