2012-03-20 4 views
1

Я программирую модуль в Joomla! 2.5. Модуль отображает статью в заданной позиции. мне нужна статья атрибутов (т.е. show_title, link_title ЕСС.) С помощью этого кода я получаю определенные атрибуты статьи:Как получить глобальные параметры статьи в Joomla?

$db =& JFactory::getDBO(); 
$query = 'SELECT * FROM #__content WHERE id='.$id.' AND state=1'; 
$db->setQuery($query); 
$item = $db->loadObject(); 
$attribs = json_decode($item->attribs, true); 

Если я var_dump переменную $attribs я получаю:

array(26) { 
    ["show_title"]=> 
    string(0) "" 
    ["link_titles"]=> 
    string(0) "" 

    [...] 

} 

Переменная $attribs представляет специфические атрибуты статьи. Когда элемент установлен в "", это означает «использовать глобальную конфигурацию».

я могу получить глобальную конфигурацию с этим запросом:

SELECT params from #__extensions where extension_id=22; 

Где 22 это идентификатор расширения com_component. Затем я могу объединить результаты здесь с результатами для конкретной статьи.

BUT есть ли простой способ достичь этого? У Joomla! есть определенный класс в рамках этого?

ответ

3

Я хотел бы начать с загрузки модели изделий:

// Get an instance of the generic articles model 
$model = JModel::getInstance('Article', 
          'ContentModel', 
          array('ignore_request' => true)); 

ГЭТ конкретную статью ...

$model->getItem($id) 

Чтобы получить компоненты, глобальные Params Я верю, что вы можете использовать:

$params = &JComponentHelper::getParams('COMPONENT_NAME'); 

В вашем случае вам понадобится что-то вроде:

jimport('joomla.application.component.helper'); // load component helper first 
$params = JComponentHelper::getParams('com_content'); 

Я предлагаю вам ознакомиться с кодом модулей, которые поставляются с Joomla! 2.5.x, поскольку они делают много похожего на то, что вы пытаетесь создать. Вы также можете прочитать сообщение this article, это немного устарело, но я думаю, что он по-прежнему остается в силе (за исключением того, что jparams заменяется на jforms).

+0

Благодарим вас за ответ. У меня есть чему поучиться ... Спасибо! – mneri

+1

Перед '$ model-> getItem ($ id);' вы должны установить параметры 'JModel'. Это заняло у меня некоторое время. Вот код: '$ appParams = JFactory :: getApplication() -> getParams(); $ model-> setState ('params', $ appParams); '. Без этого у вас ошибка. – mneri