Разрботка расширений для CMS Joomla - Страница 14
Список незаблокированных пользователей
string users(string $name, string $active, int $nouser = 0, string $javascript = NULL, string $order = 'name', string $reg = 1)
где
$name - название элемента
Например, вывод на экран JHTML::_('list.users','usrlist','42', 1, NULL, 'id', $reg = 1) приведет к отображению такого списка (рис. 3.6).
Рис. 3.6. Список для выбора пользователя
Список категорий
string category(string $name, string $extension, string $selected = NULL, string $javascript = NULL, string $order = null, int $size = 1, bool $sel_cat = 1)
где
$name - название элемента
Пример:
echo JHTML::_('list.category', 'catlist', 'com_content', 2, 'onclick="someFunc()"', 'id', 1, 1);
Данный код выведет на экран список, представленный на рис. 3.7.
Рис. 3.7. Список для выбора категории
JHTMLMenu
Класс используется для отображения элементов меню и не представляет интереса для использования в расширениях.
JHTMLSelect
Класс JHTMLSelect используется для генерации кода списков.
Выпадающий список
string genericlist(array $data, string $name, mixed $attribs = null, string $optKey = 'value', string $optText = 'text', mixed $selected = null, mixed $idtag = false, bool $translate = false)
где
$data - массив данных для отображения. Каждый элемент может быть сгенерирован с помощью метода JHTMLSelect.option() или другим образом; $name - имя элемента HTML; $attribs - дополнительные атрибуты тега
Пример:
$query = 'SELECT id,title FROM #__content'; $db =& JFactory::getDBO(); $db->setQuery($query); $content = $db->loadObjectList(); echo JHTML::_('select.genericlist', $content, 'genlist', 'size='.count($content), 'id', 'title', 2);
Так как мы передали в функцию genericlist() $selected=2, то в сгенерированном списке по умолчанию выделен элемент с id, равным 2 (рис. 3.8).
Рис. 3.8. Список для выбора материала
Объект, представляющий элемент
object option(string $value, string $text = '', mixed $optKey = 'value', string $optText = 'text', bool $disable = false)
где
$value - значение элемента
Рассмотрим пример:
$query = 'SELECT id,title FROM #__content'; $db =& JFactory::getDBO(); $db->setQuery($query); $content = $db->loadObjectList(); foreach ($content as $c) $data[] = JHTML::_('select.option', $c->id, $c->title, 'my_value', 'my_text'); echo JHTML::_('select.genericlist', $data, 'genlist', 'size='.count($data), 'my_value', 'my_text', 2);
В данном примере для каждого материала сайта с помощью метода JHTMLSelect.option() создается объект, представляющий элемент
JObject Object ([_errors:protected]=>Array () [my_value]=>1 [my_text]=>Материал #1 [disable]=>)
Таким образом, значения $optKey и $optText, переданные в функцию option(), стали названиями полей получившегося объекта, а значения $c->id и $c->title - значениями этих полей. Теперь в функцию JHTMLSelect.genericlist() необходимо передать те же названия полей, что и в option(). Если не передать их, то функция genericlist() будет по умолчанию искать в объектах массива $data поля $value и $text, которых там нет.
Результат работы данного примера будет выглядеть так же, как и результат предыдущего.
Список целых чисел
string integerlist(int $start, int $end, int $inc, string $name, mixed $attribs = null, mixed $selected = null, string $format = '')
где
$start - первое число последовательности; $end - последнее число последовательности; $inc - шаг; $name - имя тега; $attribs - массив атрибутов тега; $selected - значение выбранного по умолчанию элемента; $format - формат вывода числа для функции printf().
Пример:
echo JHTML::_('select.integerlist', 1, 10, 1, 'intlist', 'size=10', 3, '%02d');
Этот код выведет список, представленный на рис. 3.9.
Рис. 3.9. Список для выбора числа
Группа переключателей
string radiolist(array $data, string $name, mixed $attribs = null, mixed $optKey = 'value', string $optText = 'text', string $selected = null, bool $idtag = false, bool $translate = false)
где
$data - массив объектов; $name - имя, общее для всех переключателей; $attribs - дополнительные атрибуты тега (могут быть заданы сразу в виде строки); $optKey - из какого поля объекта, представляющего собой элемент массива $data, брать значения элементов ; $optText - из какого поля объекта, представляющего собой элемент массива $data, брать текст элементов ; $selected - значение выбранного по умолчанию элемента; $idtag - префикс id сгенерированных тегов. Для каждого тега id станет равным $idtag
Пример: