Периодически возникает необходимость изменить программно тот или иной параметр одного из компонентов Joomla. Например, в Joomla 3.1.5 и Joomla 3.2 по умолчанию в компоненте com_user установлено неверное значение параметра «Группа пользователей для Гостей» — указан идентификатор 13, а должно быть 1 (Public) или 9 (Guest). В этой заметки мы рассмотрим как решить эту задачу программно.
Итак, сначала немного кода:
<?php // получаем параметры компонента com_users $params = JComponentHelper::getParams('com_users'); // устанавливаем требуемое значение $params->set('guest_usergroup', '1'); // записываем измененные параметры в БД $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->update($db->quoteName('#__extensions')); $query->set($db->quoteName('params') . '= ' . $db->quote((string)$params)); $query->where($db->quoteName('element') . ' = ' . $db->quote('com_users')); $query->where($db->quoteName('type') . ' = ' . $db->quote('component')); $db->setQuery($query); $db->execute(); ?>
В данном примере важно обратить внимание на приведение переменной $params к типу string. В результате этого приведения объект JRegistry будет преобразован в формат JSON, который и требуется записать в поле params таблицы #__extensions.