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

ЖАНРЫ

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

Краткие итоги

Joomla содержит методы для генерации и отображения элементов XHTML и поведений JavaScript. Эти методы вызываются с помощью метода JHTML::_. По первому параметру данный метод определяет, какой метод необходимо вызвать, а остальные параметры передаются в этот метод. Таким образом могут быть вызваны как методы самого класса JHTML, так и методы поддерживающих классов.

Методы класса JHTML позволяют вывести следующие элементы: календарь, форматированную дату, элементы <iframe>, <img>, <a>, <script>, <link> и всплывающую подсказку.

Поддерживающие

классы используются следующим образом:

JHTMLBehavior позволяет вывести календарь, дерево элементов, файловый загрузчик и некоторые другие элементы управления.

JHTMLEmail содержит метод для скрытия адреса электронной почты в целях его защиты от спам-ботов.

JHTMLForm содержит метод, который возвращает код скрытого поля формы для уменьшения риска CSRF-атак.

JHTMLGrid позволяет вывести в таблице в панели управления такие элементы, как чекбокс, пиктограмма для переключения состояния "опубликовано"/"не опубликовано", отобразить заголовок столбца как ссылки для сортировки по этому столбцу и др.

JHTMLImage содержит два метода для поиска изображения в фронтенде и бэкенде соответственно.

JHTMLList используется для создания списков некоторых конкретных значений.

JHTMLSelect используется для генерации кода списков.

Вопросы

Каким образом работает метод JHTML::_?

Какие элементы могут быть отображены с помощью класса JHTML?

Для чего используется класс JHTMLBehavior?

Для чего используется класс JHTMLEmail?

Для чего используется класс JHTMLForm?

Код каких элементов генерируют методы класса JHTMLGrid?

В чем преимущество использования класса JHTMLImage?

Для чего используются классы JHTMLList и JHTMLSelect?

Упражнения

Адаптируйте код из раздела " Практика" для своего варианта (см. список вариантов в дополнительных материалах).

Иерархия пунктов меню. Отправка писем. Классы ядра JEditor, JURI, JError, JDate

Рассмотрен принцип хранения иерархии пунктов меню, использующийся в Joomla. Рассмотрены классы для отправки электронной почты, отображения кода визуального редактора, работы с URI, ошибками и датами.

Цель лекции:Ознакомиться со способом программного добавления пунктов меню в Joomla, а также с некоторыми методами классов JMail, JEditor, JURI, JError, JDate.

Организация иерархии пунктов меню в Joomla

Для хранения иерархии пунктов меню в Joomla используются вложенные множества (ссылка: http://en.wikipedia.org/wiki/Nested_set_model). Например, на рис. 4.1 представлена эта иерархия для случая, если бы в ней было всего восемь пунктов: корневой пункт меню Menu_Item_Root, com_bannersс подпунктами com_banners, com_banners_categories, com_banners_clientsи com_messagesс подпунктами com_messages_add, com_messages_read:

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

Рис. 4.1. Пример использования

вложенных множеств для организации иерархии пунктов меню

Каждому элементу иерархии соответствуют два числа - левый и правый ключи.

Для каждого пункта в таблице #__menuхранится idродителя parent_id, уровень levelи левый и правый ключи lftи rgt. На рис. 4.2 оранжевым цветом показаны id, синим - уровни, красным - левые и правые ключи.

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

Рис. 4.2. Данные, хранящиеся для каждого пункта меню как элемента иерархии

Отправка писем (класс JMail)

Класс JMail предназначен для создания и отправки электронных писем. JMail поддерживает три механизма отправки почты: функцию PHP mail, Sendmail и SMTP.

Доступ к глобальному объекту JMail можно получить через метод getMailer класса JFactory:

$mailer =& JFactory::getMailer;

Отправитель письма

Для задания отправителя письма используется метод

JMail setSender(mixed $from)

где $from - либо строка, содержащая e-mail отправителя, либо массив, который содержит e-mail и имя отправителя.

Примеры:

// Первый вариант $mailer =& JFactory::getMailer; $mailer->setSender('vasya@mysite.ru'); // Второй вариант $sender = array('vasya@mysite.ru', 'Вася') $mailer->setSender($sender);

Правильнее будет не задавать эти значения вручную, а получать их из настроек отправки почты, заданных в панели управления ( "Сайт" - "Общие настройки" - "Сервер"):

$config =& JFactory::getConfig; $sender = array( $config->getValue('config.mailfrom'), $config->getValue('config.fromname')); $mailer->setSender($sender);

Адреса для ответа

Адреса для ответа задаются методом

JMail addReplyTo(array $replyto)

где $replyto - пара e-mail-имя или массив таких пар.

Например:

// Первый вариант $reply = array('vasya@mysite.ru', 'Вася'); $mailer->addReplyTo($reply); // Второй вариант $reply0 = array('vasya@mysite.ru', 'Вася'); $reply1 = array('vanya@mysite.ru', 'Ваня'); $replies = array($reply0, $reply1); $mailer->addReplyTo($replies);

Получатель

Для задания получателя, получателя копии (Carbon Copy) и получателя скрытой копии (Blind Carbon Copy), используются методы

JMail addRecipient(mixed $recipient, mixed name = '') JMail addCC(mixed $cc, mixed name = '') JMail addBCC(mixed $bcc, mixed name = '')

где

$recipient, $cc, $bcc - e-mail или массив, состоящий из e-mail; $name - имя получателя или массив, состоящий из имен.

Для примера зададим в качестве адреса получателя адрес текущего пользователя:

$user =& JFactory::getUser; $mailer->addRecipient($user->email);

Задание нескольких получателей:

$recipient = array('vasya@mysite.ru', 'vanya@mysite.ru'); $mailer->addRecipient($recipient);

Тема, текст, вложения

Поделиться с друзьями: