Чтение онлайн

на главную - закладки

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

Каждая функция класса TOOLBAR_myquestions соответствует отдельной панели инструментов. Как видите, мы задали две такие панели - первая из них будет отображаться над формой для ответа на вопрос, а вторая - над списком вопросов.

В коде, приведенном выше для ряда кнопок вместо стандартных подписей задаются собственные, которые необходимо перевести в языковом файле вместе с другими надписями. Поэтому создадим языковой файл /administrator/language/ru-RU/ru-RU.com_myquestions.ini:

COM_MYQUESTIONS_TOOLBAR_SEND_TO_EXPERT="Отправить эксперту" COM_MYQUESTIONS_TOOLBAR_SEND_ANSWER="Отправить ответ" COM_MYQUESTIONS_TOOLBAR_TITLE="Моя система «вопрос – ответ»" COM_MYQUESTIONS_REPLY="Ответить / Редактировать" COM_MYQUESTIONS_TOOLBAR_REMOVE_QUESTIONS_CONFIRMATION="Вы

действительно хотите удалить эти вопросы?"

Добавим код, который будет выбирать, какую из определенных нами панелей инструментов отображать. Создайте файл /administrator/components/com_myquestions/toolbar.myquestions.php:

<?php defined('_JEXEC') or die('Restricted access'); require_once(JApplicationHelper::getPath('toolbar_html')); switch($task) { case 'reply': TOOLBAR_myquestions::_REPLY; break; default: TOOLBAR_myquestions::_DEFAULT; break; } ?>

Вызов функции getPath класса JApplicationHelper позволяет обратиться к файлу toolbar.myquestions.html.phpбез указания имени компонента, что удобно, если впоследствии понадобится изменить это имя.

Выражение switch используется для выбора одной из панелей инструментов в зависимости от значений переменной $task.

Обратите внимание, что код распределен по двум файлам - toolbar.myquestions.phpи toolbar.myquestions.html.php, чтобы отделить логику обработки от непосредственного вывода информации.

Обновите страницу в бэкенде и выберите в меню " Компоненты" пункт " Моя система "вопрос - ответ"". Результат должен быть таким же, как на рис. 1.9.

(есть увеличенное изображение)

Рис. 1.9. Первая панель инструментов

Чтобы увидеть другую панель инструментов, добавьте строку &task=reply в конец URL: ссылка: http://localhost/joomla/administrator/index.php?option=com_myquestions&task=reply(рис. 1.10).

(есть увеличенное изображение)

Рис. 1.10. Вторая панель инструментов

Каждая кнопка панели инструментов соответствует некоторой задаче. Когда пользователь нажимает на какую-либо кнопку, соответствующая задача добавляется к форме, и эта форма автоматически отправляется. Поскольку самих форм мы еще не создали, кнопки не работают.

Чтобы использовать для кнопки свою картинку, необходимо создать файл 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находятся в папке /administrator/components/com_myquestions/.

Ключевые термины

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 существует очередь сообщений - массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы. Добавляя сообщение в очередь, мы можем указывать его тип - сообщение, предупреждение или ошибка.

Поделиться:
Популярные книги

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Комендант некромантской общаги 2

Леденцовская Анна
2. Мир
Фантастика:
юмористическая фантастика
7.77
рейтинг книги
Комендант некромантской общаги 2

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Ведьмак. Назад в СССР

Подус Игорь
1. Ведьмак. Назад в СССР
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Ведьмак. Назад в СССР

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Огромный. Злой. Зеленый

Новикова Татьяна О.
1. Большой. Зеленый... ОРК
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Огромный. Злой. Зеленый

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Лорд Системы

Токсик Саша
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Лорд Системы