Вторник
14.05.2024, 11:36
Торрент файлы
Приветствую Вас Гость | RSS
Главная Интернет статьи Регистрация Вход
Меню сайта

Категории раздела
Вебка ответы
HTML
CSS
jQuery
PHP
Wordpress
Joomla
SEO
Ucoz
Разное
Flash
C/C++

Мини-чат
Доп.функции

Наш опрос

У вас есть сайт?



Статистика

Форма входа

Главная » Статьи » Joomla

ДОБАВЛЯЕМ ПОДДЕРЖКУ МНОЖЕСТВЕННОГО ВЫБОРА В JELEMENTLIST ДЛЯ JOOMLA 1.5


При разработке модулей периодически требуется параметр, позволяющий выбрать из списка сразу несколько значений. В Joomla 1.7 с этим никаких проблем нет, тип поля формы JFormFieldList, используемый для списков, поддерживает множественный выбор, а вот в Joomla 1.5, в JElementList, этого нет. Однако, все можно исправить.

Для начала небольшое отступление по поводу типов полей в Joomla 1.5 (как это все работает в Joomla 1.7 расскажу в одной из следующих статей), откуда они берутся и как они работают. Все стандартные типы полей в Joomla 1.5 унаследованы от JElement и их реализации находятся в директории /libraries/joomla/html/parameter/element/. Когда Joomla, при разборе параметров (модуля или компонента) находит элемент param, она считывает значение атрибута type и ищет в указанной директории файл с классом, реализующим этот элемент.

Для того, чтобы обеспечить поддержку пользовательских типов параметров у элемента params существует атрибут addpath, с помощью которого можно указать путь к реализациям пользовательских типов параметров. Например, у стандартного компонента com_content есть 2 типа параметров author и article, и для того, чтобы они работали, в XML-файле описания формы параметров материала (/administrator/components/com_content/models/article.xml) используется addpath:

<params addpath="/administrator/components/com_content/elements">

Так вот, если мы у элемента params задаем атрибут addpath, то Joomla 1.5 добавляет этот путь в самый верх списка путей, где будет искаться тип параметра (в этом можно легко убедиться изучив код метода addElementPath класса JParameter).

Вот в этой особенности и кроется основная хитрость, которую я хочу предложить. Мы создаем альтернативную реализацию типа параметра list, добавляем его к нашему модулю (или компоненту) и прописываем путь к папке с нашим элементом. После этого, уже в XML-файле описания параметров (или XML-манифесте модуля или компонента) мы можем использовать тип параметра list с поддержкой множественного выбора.

СОЗДАНИЕ АЛЬТЕРНАТИВНОЙ РЕАЛИЗАЦИИ JELEMENTLIST

Создаем файл list.php следующего содержания:

<?php
defined('JPATH_BASE') or die();
 
class JElementList extends JElement
{
 var $_name = 'List';
 
 function fetchElement($name, $value, &$node, $control_name)
 {
 $ctrl = $control_name . '[' . $name . ']';
 $attribs = '';
 
 if ($v = $node->attributes('class')) {
 $attribs .= ' class="'.$v.'"';
 } else {
 $attribs .= ' class="inputbox"';
 }
 
 if ($v = $node->attributes('size')) {
 $attribs .= ' size="'.$v.'"';
 }
 
 if ($m = $node->attributes('multiple')) {
 $attribs .= ' multiple="multiple"';
 $ctrl .= '[]';
 }
 
 $options = array ();
 foreach ($node->children() as $option)
 {
 $val = $option->attributes('value');
 $text = $option->data();
 $options[] = JHTML::_('select.option', $val, JText::_($text));
 }
 
 return JHTML::_('select.genericlist', $options, $ctrl, trim($attribs), 'value', 'text', $value, $control_name.$name);
 }
}

Как видите, мы добавили поддержку 2-х дополнительных атрибутов: size (для указания количества видимых элементов в списке) и multiple (для поддержки множественного выбора). Теперь, в параметрах нашего модуля (или компонента) для Joomla 1.5 мы можем использовать элемент list так же, как в Joomla 1.7:

<param
 name="fields"
 type="list"
 size="5"
 multiple="true"
 default=""
 label="Select Fields"
 description="">
 <option value="title">Title</option>
 <option value="author">Author</option>
 <option value="date">Date</option>
</param>

Однако, чтобы наши дополнительные атрибуты работали, необходимо не забыть прописать атрибут addpath у элемента params, указав в качестве значения путь к директории с нашей реализацией типа параметров JElementList.

Категория: Joomla | Добавил: SiteStalker (02.08.2012)
Просмотров: 830 | Рейтинг: 0.0/0
Как создать сайт? Текст песни
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024