Шрифт:
function replyToQuestion($option) { $row =& JTable::getInstance('Question','Table'); $cid = JRequest::getVar('cid', array(0), '', 'array'); $id = $cid[0]; $row->load($id); $db = &JFactory::getDBO; $query = 'SELECT name AS text, id AS value FROM #__myquestions_categories'; $db->setQuery($query); $categories = $db->loadObjectList; $list_cat = JHTML::_('select.genericlist', $categories, 'id_cat', ' class="inputbox" ', 'value', 'text', $row->id_cat); HTML_questions::replyToQuestion($row, $option, $list_cat); }
В файле admin.myquestions.html.phpизмените прототип функции HTML_questions::replyToQuestion так:
function replyToQuestion ($row, $option, $list_cat)
Наконец, в коде этой функции измените фрагмент, в котором раньше выводилось текстовое поле с id категории, так:
<tr> <td width="100" class="key"> <?php echo JText::_('COM_MYQUESTIONS_CATEGORY');?>: </td> <td> <?=$list_cat?> </td> </tr>
Перейдите к странице ответа на вопрос и убедитесь, что отображается выпадающий список для выбора категории (рис. 3.13).
Рис. 3.13. Выбор категории вопроса в бэкенде
Ключевые термины
JHTML - класс для вывода элементов XHTML. JHTMLBehavior - поддерживающий класс, который позволяет вывести календарь, дерево элементов, файловый загрузчик и некоторые другие элементы управления. JHTMLEmail - поддерживающий класс, содержащий метод для скрытия адреса электронной почты в целях его защиты от спам-ботов. JHTMLForm - поддерживающий класс, содержащий метод, который возвращает код скрытого поля формы для уменьшения риска CSRF-атак. JHTMLGrid - поддерживающий класс, позволяющий вывести в таблице в панели управления такие элементы, как чекбокс, пиктограмма для переключения состояния "опубликовано"/"не опубликовано", отобразить заголовок столбца как ссылки для сортировки по этому столбцу и др. JHTMLImage - поддерживающий класс, содержащий методы для поиска изображения в фронтенде и бэкенде. JHTMLList - поддерживающий класс для создания списков некоторых конкретных значений. JHTMLSelect - поддерживающий класс для генерации кода списков. Основной метод класса JHTML - метод JHTML::_, который вызывает метод, определяющийся его первым параметром, и передает ему свои остальные параметры. Поддерживающие классы - классы для вывода элементов XHTML и поведений Javascript.
Краткие итоги
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: