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

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

Жанры

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

Для методов addNew, publish, publishList, makeDefault, unpublish, editList, save, apply заданы по умолчанию два параметра - задача (об ее значении будет сказано ниже) и подпись. Например, значения этих параметров по умолчанию для метода editList выглядят так: $task = 'edit', $alt = 'Edit'. Можно задавать свои задачу и подпись, передавая их как, соответственно, первый и второй параметры.

Метод для удаления объектов имеет прототип

void deleteList(string $msg =, string $task = 'remove', string $alt = 'JTOOLBAR_DELETE')

где $msg - это текст сообщения

с просьбой подтвердить удаление объектов. Если этот параметр задан, то при нажатии кнопки для удаления будет выводиться окно с заданным сообщением и объекты будут удалены только после нажатия кнопки " ОК" в этом окне. Если же параметр $msg не задан, то объекты будут удаляться без предупреждения.

В сложных случаях, когда требуется не просто изменить задачу и подпись, а создать собственную кнопку, используется метод

void custom(string $task = '', string $icon = '', string $iconOver = '', string $alt = '', bool $listSelect = true)

где:

$task - задача, которая будет выполнена; $icon - пиктограмма кнопки; $iconOver - пиктограмма при наведении курсора мыши; $alt - подпись под кнопкой; $listSelect - нужно ли работать только с выбранными элементами списка.

Как правило, в URL Joomla присутствует переменная task, определяющая задачу, которую должен выполнить компонент. В коде компонента в зависимости от полученного значения task вызывается некоторая функция. Например, если URL выглядит как ссылка: http://localhost/joomla/index.php?option=mycomponent&task=show, то компонент mycomponent будет обрабатывать задачу show.

Параметры $icon и $iconOver задают, как ни странно, не название файла изображения, а название класса CSS, для которого задано это изображение в качестве фонового. К названию класса автоматически добавится строка "icon-32-" и будет произведен поиск этого класса в подключенных файлах CSS. Например, если третий параметр функции JToolBarHelper::custom задан как send.png, то будет найден класс .icon-32-send, а в результате картинка будет отображена с помощью кода:

<span class="icon-32-send"></span>

Если данная панель инструментов создана для одной-единственной записи, а не для списка, то параметру $listSelect следует задавать значение false. Если этот параметр имеет значение true, то для события кнопки onclick задается следующий код на Javascript:

if (document.adminForm.boxchecked.value==0) { alert('Пожалуйста, выберите объект из списка'); } else { Joomla.submitbutton('myquestions_sendToExpert') }

Если же $listSelect имеет значение false, то проверка того, выбраны ли в списке какие-либо элементы, не осуществляется:

Joomla.submitbutton('myquestions_sendToExpert')

Для вывода названия панели инструментов и пиктограммы служит метод void title(string $title, string $icon), где:

$title - название панели инструментов; $icon - название класса CSS, для которого необходимое изображение задано в качестве фонового. К названию класса автоматически добавится строка "icon-48-".

Например,

если вы хотите использовать в качестве пиктограммы файл /media/com_mycomponent/images/sample-48.png, то добавьте в CSS класс

.icon-48-sample { background: url('../images/sample-48.png') 0 0 no-repeat; }

Теперь для отображения названия необходимо добавить в код строку:

JToolBarHelper::title('Мой компонент','sample');

Для вывода между кнопками вертикальной черты-разделителя служит метод divider:

void divider;

Практика

Описание учебного примера

Для примера будем создавать компонент системы "вопрос - ответ". Назовем его myquestions. С помощью этого компонента посетители сайта смогут задавать свои вопросы, по желанию помечая их как предназначенные для публикации на сайте или как скрытые. Функциональность, доступная администратору системы:

отправить уведомление о вопросе эксперту по электронной почте;

задать дату снятия вопроса с публикации;

скрыть от посетителей сайта отдельные поля вопроса;

присвоить вопросу категорию;

редактировать список категорий;

ответить на вопрос;

отправить ответ автору вопроса по электронной почте;

удалить вопрос.

Уведомление о каждом присланном вопросе автоматически отправляется модератору по электронной почте. Модератор либо пересылает вопрос эксперту, либо удаляет (например, в случае спама), а также присваивает вопросу какую-либо категорию. Если посетитель пометил свой вопрос как скрытый, но по каким-то причинам его необходимо опубликовать (например, указан некорректный e-mail и отправить ответ невозможно), то модератор задает дату снятия вопроса с публикации. Таким образом, отображаться на сайте будут вопросы, удовлетворяющие следующим условиям:

есть ответ;

либо вопрос не помечен как скрытый, либо дата снятия вопроса с публикации указана и больше текущей даты

Для каждого вопроса будем хранить следующие данные:

id;

имя автора;

дата вопроса;

собственно текст вопроса;

город;

e-mail автора;

IP автора;

id категории;

отображать ли вопрос на сайте;

дата снятия вопроса с публикации;

отправлен ли вопрос эксперту;

ответ на вопрос;

отправлен ли ответ автору вопроса.

Регистрация компонента в базе данных

Зарегистрируем наш компонент в базе данных, добавив запись в таблицу, содержащую данные о расширениях. Перейдите в phpMyAdmin(если вы работаете с Denwer, то для этого вам нужно ввести в адресной строке браузера ссылка: http://localhost/tools/phpmyadmin), зайдите в базу данных, в которую вы установили Joomla, и откройте вкладку " SQL" (рис. 1.3).

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

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Часовое имя

Щерба Наталья Васильевна
4. Часодеи
Детские:
детская фантастика
9.56
рейтинг книги
Часовое имя

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Кротовский, не начинайте

Парсиев Дмитрий
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, не начинайте

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Прорвемся, опера! Книга 3

Киров Никита
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 3

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

Прорвемся, опера! Книга 2

Киров Никита
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Злыднев Мир. Дилогия

Чекрыгин Егор
Злыднев мир
Фантастика:
фэнтези
7.67
рейтинг книги
Злыднев Мир. Дилогия