Получить параметры расширений 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:'';