Фон
Одна вещь, которая устанавливает Joomla! Компоненты от других типов расширений (т.е. модули и плагины) является способность хранить значительные объемы данных в Joomla! MySQL базы данных. Как правило, эти данные будут контента для отображения на странице (например, содержание статьи или ее название) или данные о том, как это содержание должно отображаться (например, установка указания или нет название должно быть показано на рисунке). Компонент обычно создает хотя бы одну таблицу в базу данных для хранения этой информации - например, данные для статей, связанных с com_content компонента хранятся в jos_content таблицы (где Йос является префикс таблицы для сайта).
Однако, выбирая, как именно для хранения каждого элемента данных требует немного больше мысли. Есть по существу два выбора: каждый элемент данных может хранить в своей области, или набор элементов данных, могут храниться в одном поле параметров. (Конечно, нет ничего, чтобы остановить вас с использованием обоих методов, для различных элементов данных, в рамках одного компонента). Какой подход вы используете для данного элемента данных в значительной степени вопрос личного выбора, хотя Есть некоторые факторы, чтобы рассмотреть:
* Основной код включен в Joomla! установки делает его очень легко производить соответствующие элементы формы для ввода данных в параметры в бэк-конец. Если Вы хотите сохранить данные в отдельные поля, вам нужно код соответствующих элементов формы самостоятельно.
* Опять же, Joomla! основной код позволяет установить значения параметров по умолчанию через весь компонент. Индивидуальные комплектующих изделий (например, отдельные статьи) затем могут выбрать для использования значения по умолчанию, или переопределить их со значениями специфических для данного элемента. См. ниже детали того, как это сделать.
* Это не возможно извлечь отдельные значения параметров непосредственно из базы данных. Вместо этого, все поле параметры должны быть извлечены и проанализированы, чтобы получить различные значения параметра. Это означает, что это не очень легко, например, для запуска MySQL запросов, поиск параметра с определенным значением. Любые данные, которые вы хотите выполнять запросы к должна быть с учетом ее собственного поля таблицы.
* Кроме того, это не возможно запустить проверку данных на поля параметров перед сохранением данных.
В целом, параметры обычно используются для хранения данных, касающихся представления информации. Сама информация, как правило, хранятся в отдельных областях.
Типы компонент параметра
1. Компонент всей параметров по умолчанию
Эти параметры задаются один раз за весь компонент, и, как правило, используется для обеспечения параметров настройки "по умолчанию" для компонента на данном сайте.
2. Пункт меню конкретные параметры
Меню ссылку на отдельный элемент компонента (например, статьи) также могут иметь параметры, связанные с ним, которые могут повлиять на Компонент пункт отображается с помощью этой ссылки. Типы параметров, доступных будет зависеть от того пути, что компонент отображается элемент ("Вид" в терминах MVC, но не волнуйтесь, если это ничего не значит для вас!). Тем не менее, точные значения этих параметров могут быть установлены для каждого меню ссылку по отдельности. Если есть другое меню ссылку на этот же пункт компонента, то важно понимать, каждое меню связь может иметь различные значения параметра, а так же статьи могут отображаться по-разному в двух случаях.
Меню ссылку можно переопределить компонент всей параметры по умолчанию, так что переопределить значения (если установлен) используются вместо значения по умолчанию для этого компонента пункта при доступе с помощью этого меню ссылку. Как и следовало ожидать, если не переопределить значение установлено, используется значение по умолчанию, а не в обычном порядке.
3. "Статья" конкретные параметры
Наконец, каждый элемент компонента (например, статья) может иметь параметры, которые относятся к этому пункту, независимо от того, при обращении к нему (то есть через любые доступные ссылки меню, или даже без ссылки на меню на всех!). Если Component Designer хочет, статьи конкретные параметры также могут быть настроены на использование поведение "Перекрыть", так что они по умолчанию текущего значения соответствующего компонента всей параметров, хотя это не является существенным. Опять же, это описано ниже.
Сохранение параметров и их значений.
В общем, набор параметров хранятся в базе данных в одно текстовое поле. Различные параметры разделяются символами новой строки ('\ n' в MySQL - каждый параметр появится на другой линии, когда вы посмотрите на данные в чем-то, как PhpMyAdmin). Каждый параметр состоит из имени параметра и значения, разделенных знаком равенства (=). В качестве примера:
parameter1=parameter1value
parameter2=
parameter3=parameter3value
parameter4=parameter4value
Здесь, параметр1, параметр3, и параметр4 все были присвоены значения, в то время параметр2 не имеет значения. Как правило, параметр будет дано никакого значения, где она создана, чтобы переопределить значения по умолчанию, но "не переопределять требуется" -
то есть желательно, чтобы использовать значение по умолчанию.
1. Компонент всей параметров по умолчанию
Они хранятся в Params поле таблицы jos_components, в строке, соответствующей конкретный компонент, к которым они применяются.
2. Пункт меню конкретные параметры
Они хранятся в Params области jos_menu таблице, в строке, соответствующей конкретному пункту меню, к которым они применяются.
3. "Статья" конкретные параметры
Они хранятся в текстовом поле в таблице созданных компонентов. Хотя не существует строгих правил для именования поля, он является общим продлить выше шаблон с использованием Params имя. Однако, com_content магазинов статьи параметры в поля "attribs.
Доступ к параметрам - Админцентр
Joomla! включает в себя несколько клавиш, чтобы позволить компонента создателей легко добавить параметр формы Админцентр их компонентов. Эти формы позволяют администратору сайта, чтобы ввести значение параметра, например, вводя текст в окне, выбрать из выпадающего списка, или выбрав переключатель. Чтобы создать эти формы, каждый параметр должен иметь связанные <param /> объекта в файл XML. Тип объекта <param /> определяет элементы формы, которая будет показана в бэк-конец. Список доступных элементов формы приведен здесь. Более подробная информация приведена ниже о файле XML названия, структура и место для каждого набора параметров.
1. Компонент всей параметров по умолчанию
Они могут быть созданы при установке компонентов, в том числе по <param /> элементов установки XML файл (обычно называется
COMPONENT_NAME.xml, и находится в корневой папке пакета компонентов. Что касается параметров беспокоит, это XML файл имеет следующую структуру:
<install>
...
<params>
<param />
<!-- Example: the following will create a line in the parameters field
reading 'font_size=16\n': -->
<param name="font_size" default="16" />
...
</params>
<url addpath="....">
<param />
</url>
...
</install>
Каждый элемент <param /> должна быть предоставлена атрибуты имени и по умолчанию, которые определяют имя параметра и значения соответственно. Эти значения затем копируется в jos_components таблицы в базе данных.
Однако, по его собственным это не очень полезно, так как она не позволяет пользователям изменять значения параметров. Для этого параметра элементы формы должны быть определены в файле config.xml, который расположен в /PATH_TO_JOOMLA/administrator/components/com_COMPONENT_NAME/. Файл должен иметь следующую структуру:
<root>
<params>
<url addpath="/administrator/components/com_COMPONENT_NAME/elements">
<param name="cid" type="JELEMENT_TYPE_NAME" scope="com_COMPONENT_NAME" default="0" label="LABEL" description="DESCRIPTION" />
</url>
<param type="type" name="name" description="description" />
<!-- Example: the following will produce a text box 3 characters wide with the label 'Font size:'.
When the user hovers the mouse over the label, a tooltip will pop up which states 'Please enter the
required font size'. On saving, a value entered into the text box will be saved as the 'font_size'
parameter value. -->
<param type="text" name="font_size" size="3" label="Font size:" description="Please enter the required font size" />
...
</params>
</root>
Обратите внимание, что <root> элемент может иметь любое имя вы хотите, но должно быть одним из элементов в корне документа (это требование правильно сформированный документ XML). Вы можете иметь более одного <params> элемент, но только первый из них будет рассматриваться. Это в настоящее время невозможно группы некоторые элементы формы параметра вместе.
<url> Содержит параметры, которые добавляются к URL из пункта меню. Чтобы включить эту функцию, тип атрибута <param> элементы должны указать имя класса, который расширяет JElement, и способен генерировать HTML-формы для отображения и набора параметров. Вы можете использовать один из типов стандартных параметров. Или, вы можете создать свой собственный подкласс JElement. Положите
файл класса определение в /administrator/components/com_COMPONENT_NAME/ каталог, и ссылаться на этот путь в addpath атрибут <URL> элемента.
JToolBarHelper::preferences( 'com_COMPONENT_NAME' );
// Например, для основных компонентов содержания, вы должны использовать JToolBarHelper::preferences( 'com_content' );
которые, как правило, помещаются в файл PHP ответственность за выход с таблицами. (Например, используя структуру MVC, вы можете разместить этот код в верхней части /PATH_TO_JOOMLA/administrator/components/com_COMPONENT_NAME/views/VIEW_NAME/tmpl/default.php.
Это добавляет кнопку Параметры на панели инструментов:

При нажатии на кнопку на панели инструментов создает всплывающие окна, содержащего поля формы для каждого параметра, определенного в файле config.xml.
Обратите внимание, что нет никакой необходимости, чтобы определить атрибуты по умолчанию для <param /> элементов в файле config.xml, так как значения по умолчанию уже будет сохранен в установке компонентов.
2. Пункт меню конкретные параметры
Пункт меню, связанный с определенным видом с фронта компонента в конец - после меню ссылку в Фронтальный будет отображать эту точку зрения. Joomla! 1,5 позволяет определить параметры для конкретного представления, так что копии этих параметров могут быть связаны друг с пункт меню с помощью зрения. Кроме того, вы можете также выбрать для переопределения компонент значение по умолчанию параметры, определенные как выше, так что переопределить значения будут применяться к конкретному пункту меню.
Открыть параметры определены в файле XML хранятся в выходной Фронтальный каталог шаблонов зрения. (Это не следует путать с каталогом шаблон сайта, который отличается!). XML-файл имеет то же имя, как макет использоваться с шаблоном. Для должна приложений, которые вы будете использовать макет по умолчанию. Таким образом, путь к файлу XML-то вроде:/PATH_TO_JOOMLA/components/com_COMPONENT_NAME/views/VIEW_NAME/tmpl/default.xml. Структура файла:
<metadata>
...
<state>
...
<params>
<param />
...
</params>
<url>
<param />
...
</url>
<advanced>
<param />
...
</advanced>
</state>
</metadata>
См. Стандартные типы параметров для полный список основных типов параметров. (Вы можете использовать эти типы в <url> раздел без необходимости поставлять addpath атрибут.)
Отображение формы для этих параметров осуществляется автоматически основной компонент com_menus, что создает ряд слайдер стекла на правой стороне (по крайней мере, если смотреть с использованием стандартных Хепри бэкэнд шаблона сайта) из меню редактирования экрана. Любые параметры, определенные в <params> или <url> теги появится в Параметры - Основные ползунок панели. Любые параметры, определенные в <advanced> теги появится в Параметры - Дополнительно ползунок панели.
Следующий скриншот показывает страницу меню администратора для макета "Список" категории. Вы можете видеть, что параметры - панели "Обычный слайдер открыт, и содержит элементы формы в течение пяти параметрам. Есть никаких параметров "Дополнительно" для этой точки зрения, и так Параметры - Расширенный панели слайдера не показаны:

Для переопределения компонент всей параметры по умолчанию, com_menus использует тот же файл config.xml, как выше, так что нет необходимости для определения этих параметров еще раз. Переопределить форм, автоматически добавляются в панели слайдера имени Параметры - Компонент. Однако Есть ряд изменений от формы, используемые в настройках всплывающие окна (несмотря на то, основан на той же файл config.xml):
* Любой <param type="radio" /> параметр показан не как поле формы кнопку радио, а в раскрывающемся списке.
* Все раскрывающихся списков (как те, которые определены в качестве таковых в config.xml, и те, которые определены в качестве переключателей), приведены дополнительные опции. Этот дополнительный параметр отображает текст "Использование глобальной", но связанные значения пустую строку. "Использование глобальной" опция установлена по умолчанию вариант списка. Таким образом, по умолчанию, эти параметры будут использовать компонент всей значения по умолчанию, а не главной их. (Однако, обратите внимание, что все поля, поле определено значение по умолчанию в config.xml, что сохранить значение по умолчанию, и так будет переопределить компонентов широкого значения по умолчанию, если это разные).
3. "Статья" конкретные параметры
Они определены в файле XML, который может храниться где угодно, но, как правило, помещаются в папку моделей компонентов Back-End (если вы используете структуру MVC) и назван в зависимости от модели, к которым они применяются, т.е. pATH_TO_JOOMLA/administrator/components/com_COMPONENT_NAME/models/MODEL_NAME.xml. XML-файл имеет следующую структуру:
<root>
<params>
<param />
...
</params>
<params group="GROUP_NAME">
<param />
...
</params>
...
</root>
Как и выше, вы можете дать <root> элемент любое имя вы хотите. Вы также можете иметь столько групп <params>, как вам нравится, хотя каждая группа должна иметь атрибут группы с различными GROUP_NAME. Если Есть два или более <params> группы с тем же GROUP_NAME, только последний в списке будут рассматриваться.
Для отображения формы для этих параметров в Админцентр вашего компонента, вы должны будете сделать небольшую работу самостоятельно. Во-первых, вам нужно получить доступ к сохраненным данным параметром из базы данных. Для этого вам необходимо будет определить как расположение параметры хранимых данных в базу данных и XML-файл, который вы используете для определения параметров поля формы. Предполагая, что вы уже создали $ row переменной для хранения компонента пункта (например, "статья") данных, что параметры данные хранятся в Params области $ row, и что файл XML находится в папке с моделями было указано выше, вы можете использовать следующий код:
$paramsdata = $row->params;
$paramsdefs = JPATH_COMPONENT.DS.'models'.DS.'MODEL_NAME.xml';
$params = new JParameter( $paramsdata, $paramsdefs );
$this->assignRef('params', $params);
Этот код обычно помещается на экране файлов (например, view.html.php) в соответствующей папке.
Для отображения параметров формы слайдер стекла (в том же пути, что они отображаются в меню пункт Back-конец), вы должны использовать следующий код в файл шаблона (например, PATH_TO_JOOMLA/administrator/com_COMPONENT_NAME/views/VIEW_NAME/tmpl/default.php):
jimport('joomla.html.pane');
$pane =& JPane::getInstance( 'sliders' );
echo $pane->startPane( 'content-pane' );
// Первый слайдер панели
// Создание слайдер панель с названием SLIDER_PANEL_1_TITLE and a title id attribute of SLIDER_PANEL_1_NAME
echo $pane->startPanel( JText::_( 'SLIDER_PANEL_1_TITLE' ), 'SLIDER_PANEL_1_NAME' );
// Отображение параметров, определенных в <params> группы с атрибутом не "группа"
echo $this->params->render( 'params' );
echo $pane->endPanel();
//Вторая панель слайдера
//Создание слайдер панель с названием SLIDER_PANEL_2_TITLE and a title id attribute of SLIDER_PANEL_2_NAME
echo $pane->startPanel( JText::_( 'SLIDER_PANEL_2_TITLE' ), 'SLIDER_PANEL_2_NAME' );
//Отображение параметров, определенных в <params> группы с атрибутом "группа" из 'GROUP_NAME'
echo $this->params->render( 'params', 'GROUP_NAME' );
echo $pane->endPanel();
// Повторите эти действия для каждой дополнительной панели слайдера требуется
echo $pane->endPane();
Для того, чтобы сохранить параметры в базу данных Вы должны перегрузки привязки (), которая может быть найдена в
PATH_TO_JOOMLA/administrator/com_COMPONENT_NAME/tables/COMPONENT_NAME.php
function bind($array, $ignore = '')
{
if (key_exists( 'params', $array ) && is_array( $array['params'] ))
{
$registry = new JRegistry();
$registry->loadArray($array['params']);
$array['params'] = $registry->toString();
}
return parent::bind($array, $ignore);
}
Фронтальный ситуация немного сложнее, чем с таблицами. способ "стандартный" иметь дело с параметрами в Фронтальный является создание каскада переопределяет, как описано выше:
Пункт конкретных переопределяет Меню конкретной переопределяет компонента по умолчанию
Если вы не хотите, чтобы это сделать, то немного больше работы требуется
С переопределяет
Следующий код доступа компонент всей параметры по умолчанию, уже переопределен с теми, для пункта меню (если применимо):
<?php
$params = &JComponentHelper::getParams( 'COMPONENT_NAME' );
// e.g. for the com_weblinks component, you would use:
// $params = &JComponentHelper::getParams( 'com_weblinks' )
?>
В структуре MVC, этот код будет размещен в view.html.php файл для просмотра требуется частности.
Считая, что пункт параметры хранятся в поле Params, и, что особенно пункт был загружен в $ row объекта метод, вы должны затем добавить в пункт параметров $ Params объекта с помощью:
<?php
$params->merge( new JParameter( &$row->params ) );
?>
Отметим, что в обоих случаях (т.е. перекрывает по меню конкретных параметров, и переопределяет пунктом конкретных параметров), мы не просто делаем перекрывает - Мы также добавляем в любой новых параметров, которые не были обнаружены в значения по умолчанию. Другими словами, $ Params объекта заканчивается со всеми параметрами, что нужно!
Чтобы получить доступ к значению определенного параметра, мы хотели бы использовать:
<?php
$params->get( 'PARAMETER_NAME' );
// e.g. to obtain the value of 'parameter1', we use:
// $params->get( 'parameter1' );
?>
Важно понимать, что любое слияние осуществляется является постоянным, поэтому следующий код (где, например, у вас есть массив, содержащий параметры набора для нескольких элементов, и вы хотите параметров для каждого элемента в отдельности переопределить значения по умолчанию) не будет производить Результат можно было бы ожидать:
<?php
foreach ($itemparamsgroup as $itemparams)
{
$params = &JComponentHelper::getParams( 'COMPONENT_NAME' );
$params->merge( $itemparams );
echo $params->get( 'PARAMETER_NAME' );
}
?>
В таких случаях, необходимо использовать не-переопределить метод, а затем силой отменяет вручную, как описано ниже.
Без переопределяет
Там будет случаев, когда вы не хотите использовать шаблон по умолчанию переопределить. Например, вы можете игнорировать меню конкретных параметров, а есть только пункт конкретных параметров переопределения значений по умолчанию. Это немного сложнее выполнить, хотя он все еще может быть сделано.
Вы можете получить доступ к компоненте всей значения параметров по умолчанию, без меню отменяет, а именно:
<?php
$component = JComponentHelper::getComponent( 'COMPONENT_NAME' );
$params = new JParameter( $component->params );
?>
Если вы хотите, чтобы переопределить их с меню параметров, но без эффекта "сохранение", описанных выше, вы можете:
<?php
$menuitemid = JRequest::getInt( 'Itemid' );
if ($menuitemid)
{
$menu = JSite::getMenu();
$menuparams = $menu->getParams( $menuitemid );
$params->merge( $menuparams );
}
?>
Вы можете получить доступ к пункту параметры, как раньше, и выбрать, следует ли объединить их в использовании кода выше, или просто хранить их в отдельный объект:
<?php
$itemparams = new JParameter( $row->params );
?>
Вы можете комбинировать этот код, чтобы добиться эффекта, что вы хотите. Например, вы можете переопределить компонент всей умолчанию с пунктом конкретных параметров, но игнорировать эти для меню. Или вы можете использовать меню конкретных параметров в некоторых случаях, и пункт конкретных единиц в другие. [Всякий раз, когда вы отойти от стандартного подхода, хотя, вы должны быть осторожны, что вы сообщите своим пользователям, как работает компонент. Пользователи будут ожидать вашего компонента работать так же, как те из Joomla! ядра, так что вы должны иметь все основания для отхода от этого подхода.]
Доступ значение определенного параметра осуществляется таким же образом, как описано выше.
