Выбрать главу

JHTMLImage

Содержит два метода для поиска изображения в фронтенде и бэкенде соответственно. Каждый из них ищет либо изображение из директории images текущего шаблона сайта/панели управления, либо, если файла с заданным именем там нет, изображение из заданной директории.

string site(string $file, string $folder = '/images/system/', int $altFile = null, string $altFolder = '/images/system/', string $alt = null, array $attribs = null, bool $asTag = true) string administrator(string $file, string $folder = '/images/', int $altFile = null, string $altFolder = '/images/', string $alt = null, array $attribs = null, bool $asTag = true)

где

$file - имя файла; $folder - путь к файлу. Будет использован, если в директории images текущего шаблона не нашлось файла с заданным именем; $altFile - если не задано, то используются значения $file и $folder, при $altFile = -1 метод возвращает пустую строку, при других значениях используются $altFile и $altFolder; $altFolder - другой путь к файлу; $alt - будущее значение атрибута alt; $attribs - ассоциативный массив атрибутов; $asTag - вернуть весь тег <img> с его содержимым или только путь.

Пример:

echo JHTML::_('image.site', 'notice-info.png', '/media/system/images/');

JHTMLList

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

Список для выбора одного из существующих в Joomla уровней доступа

string accesslevel(object &$row)

где $row - объект, имеющий поле access.

Пример:

$query = 'SELECT id,access FROM #__content WHERE id = 1'; $db =& JFactory::getDBO(); $db->setQuery($query); $article = $db->loadObject(); echo JHTML::_('list.accesslevel', $article);

Результат показан на рис. 3.4.

Рис. 3.4.  Список для выбора уровня доступа

Список для выбора изображения

array images(string $name, string $active = NULL, string $javascript = NULL, string $directory = NULL, string $extensions = "bmp|gif|jpg|png")

где

$name - имя поля; $active - выбранный по умолчанию элемент; $javascript - дополнительный код Javascript, который будет выведен внутри тега <select>; $directory - директория, в которой хранятся изображения. Например: components/com_mycomponent/images. Если значение не задано, будет использоваться директория images; $extensions - список допустимых расширений

Например, вывод на экран JHTML::_('list.images','imglist') приведет к отображению такого списка (рис. 3.5).

Рис. 3.5.  Список для выбора изображения

Список незаблокированных пользователей

string users(string $name, string $active, int $nouser = 0, string $javascript = NULL, string $order = 'name', string $reg = 1)

где

$name - название элемента <select>; $active - выбранный по умолчанию пользователь; $nouser - добавлять ли пункт, означающий отсутствие пользователя; $javascript - дополнительный код Javascript, который будет выведен внутри тега <select>; $order - имя поля для сортировки списка; $reg - исключить пользователей из группы " Зарегистрированные".

Например, вывод на экран 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 - название элемента <select>; $extension - расширение, к которому относятся категории; $selected - выбранное по умолчанию значение; $javascript - дополнительный код Javascript, который будет выведен внутри тега <select>; $size - высота списка (значение атрибута size тега <select>); $sel_cat - при null строки " Выберите категорию" в списке не будет.

Пример:

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 - дополнительные атрибуты тега <select>. Могут быть заданы как массив атрибутов или массив опций с ключами list.attr, id, list.select и др.; $optKey - из какого поля объекта, представляющего собой элемент массива $data, брать значение элементов <option>. При $optkey = null будут использованы ключи массива; $optText - из какого поля объекта, представляющего собой элемент массива $data, брать текст элементов <option>. Тег <option> формируется так: <option value="$optkey">$optText</option>; $selected - значение выбранного по умолчанию элемента; $idtag - id тега <select>; $translate - пропускать ли текст через функцию JText::_().

Пример:

$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.  Список для выбора материала

Объект, представляющий элемент <option> выпадающего списка

object option(string $value, string $text = '', mixed $optKey = 'value', string $optText = 'text', bool $disable = false)

где

$value - значение элемента <option>; $text - текст элемента; $optKey - если это строка, то имя того поля возвращаемого объекта, в котором будет храниться значение элемента <option>. Если массив, то это параметры. Возможные ключи массива: attr, disable, label, option.attr, option.disable, option.key, option.label, option.text; $optText - имя того поля возвращаемого объекта, в котором будет храниться текст элемента <option>; $disable - добавлять ли к тегу атрибут disable.

Рассмотрим пример:

$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() создается объект, представляющий элемент <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, которых там нет.