Искать  
 
   
 
Перехват обработчика exp:channel:entries
Отправлено: 28 Январь 2011 06:37 P.M.   [ Игнорировать ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Добрый день.
Хочется перехватывать вызовы exp:channel:entries и модифициовать некоторые параметры тега(к примеру - модифицировать параметр category=”“)
Есть ли какие то возможности это сделать ? Может через hook (
http://expressionengine.com/developers/extension_hooks/
)?
Буду благодарен за любые советы.

Профиль
 
 
Отправлено: 29 Январь 2011 06:40 A.M.   [ Игнорировать ]   [ # 1 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

возможно

http://eeclub.ru/docs2/development/extension_hooks/module/channel/index.html#channel_entries_tagdata

Modify the tagdata for the channel entries before anything else is parsed

$tagdata $this->extensions->call('channel_entries_tagdata'$tagdata$row$this);
if (
$this->extensions->end_script === TRUE) return $tagdata
 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 01 Февраль 2011 01:33 P.M.   [ Игнорировать ]   [ # 2 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

А я правильно использую hook ?
(я хочу записать в файл информацию о теге, и надеюсь получить результат в виде {exp:channel:entries channel=“channel1” limit=“5”})

function activate_extension()
{    
    $data 
= array(
        
'class'        => __CLASS__,
        
'method'    => 'modifyExpChannelTag',
        
'hook'        => 'channel_entries_tagdata',
        
'settings'    => serialize($this->settings),
        
'priority'    => 10,
        
'version'    => $this->version,
        
'enabled'    => 'y'
    
);
        
    
$this->EE->db->insert('extensions'$data);
}
    
function disable_extension()
{
    $this
->EE->db->where('class'__CLASS__);
    
$this->EE->db->delete('extensions');
}

function modifyExpChannelTag($param1$param2)
{
    $fh 
fopen("c:\\test.txt""a+");
    
fwrite($fhvar_export($param1,true)); 
    
fclose($fh);
    return 
$param1;
Профиль
 
 
Отправлено: 01 Февраль 2011 01:38 P.M.   [ Игнорировать ]   [ # 3 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

кажется передаётся 3 параметра:
$tagdata, $row, $this

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 01 Февраль 2011 02:33 P.M.   [ Игнорировать ]   [ # 4 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

т.е. я

function modifyExpChannelTag($param1$param2

должен переписать как

function modifyExpChannelTag($param1$param2$param3

я вас правильно понял ?
сейчас проверю, но не думаю что это может помочь

Профиль
 
 
Отправлено: 08 Февраль 2011 03:09 P.M.   [ Игнорировать ]   [ # 5 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Только этот хук не возвращает информацию о передаваемых в exp:channel:entries параметрах.
Он возвращает что то другое (по идее это структура шаблона после обработки exp:channel:entries, но до обработки тегов типа {title}, {if} и тп

Профиль