Получить параметры расширений Joomla!
При разработке расширений для CMS Joomla, таких как плагины, модули, компоненты или шаблоны, часто возникает необходимость получить параметры разрабатываемого или любого другого расширения. В этой статье вы узнаете, как это сделать в среде Joomla 2.5.
Параметры плагина
Получить параметры плагина изнутри плагина
$param = $this->params->get('paramName', defaultValue);
Получить параметры плагина извне плагина
use Joomla\Registry\Registry;
............
...............
$plugin = JPluginHelper::getPlugin('exampleType', 'example');
$pluginParams = new Registry();
$pluginParams->loadString($plugin->params);
$param = $pluginParams->get('paramName', 'defaultValue');
Параметры модуля
Получить параметры модуля изнутри модуля
$param = $params->get('paramName', 'defaultValue');
Получить параметры модуля извне модуля
use Joomla\Registry\Registry;
............
...............
$module = JModuleHelper::getModule('example');
$moduleParams = new Registry();
$moduleParams->loadString($module->params);
$param = $moduleParams->get('paramName', 'defaultValue');
Получить параметры категории из модуля
$itemparams = JHtml::_('content.prepare', $item->params, $item->getParams(), 'mod_my_module.content');
$itemparams = json_decode($itemparams);
echo $itemparams->image; // или любой другой параметр
Параметры компонента
Получить параметры компонента
$componentParams = JComponentHelper::getParams('com_example');
$param = $componentParams->get('paramName', 'defaultValue');
Параметры шаблона
Получить параметры шаблона изнутри шаблона
$param = $this->params->get('paramName');
Получить параметры шаблона извне шаблона
Для параметров текущего шаблона на морде сайта
$app = JFactory::getApplication('site');
$template = $app->getTemplate(true);
$param = $template->params->get('paramName', defaultValue);
Если этим рецептом пользоваться при операции внутри админки, то получите шаблон админки.
Чтобы получить параметры заданного шаблона надо делать запрос к БД.
примерно так:
private function getParams($template)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('params'))
->from($db->quoteName('#__template_styles'))
->where($db->quoteName('template').' = '. $db->quote($template));
$db->setQuery($query);
$result = json_decode($db->loadResult());
return $result;
}
и соответственно само получение
$params = $this->getParams('usertemplate');
$field = isset($params->field_name)?$params->field_name:'';