Изменение порядка синтаксического анализа плагина ExpressionEngine

У меня есть следующий код ExpressionEngine в шаблоне:

{exp:hits:count_hits_image entry_id='{exp:test:getpage tag="id"}'}

Где exp:test – это подключаемый модуль, который я создал для получения идентификатора записи канала. .

Проблема, с которой я столкнулся, заключается в том, что exp:hits анализируется до exp:test, что делает весь тег нефункциональным.

Что я могу сделать, чтобы указать ExpressionEngine сначала анализировать внутренний тег {exp:test}, прежде чем анализировать внешний тег {exp:hits}?


person Pinkie    schedule 07.12.2011    source источник


Ответы (2)


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

{exp:test:getpage tag="id" parse="inward"}
    {exp:hits:count_hits_image entry_id='{id}'}
{/exp:test:getpage}

В вашем плагине вы должны сделать что-то вроде этого:

$vars = array();
$vars[0]['id'] = $results->row('id');
return $this->EE->TMPL->parse_variables($this->EE->TMPL->tagdata, $vars);
person Derek Hogue    schedule 08.12.2011
comment
Спасибо за это. В моем коде я просто заменяю return $results->row('id'); на return $this->EE->TMPL->parse_variables($this->EE->TMPL->tagdata, $results);, чтобы у меня была пара тегов с переменной {id}. Есть ли что-то еще, что мне не хватает. Я не могу заставить его работать. - person Pinkie; 08.12.2011
comment
Я только что обновил свой пример кода, чтобы он более точно соответствовал вашему существующему коду. - person Derek Hogue; 09.12.2011
comment
Спасибо, Дерек, мы почти у цели. Двойная пара теперь работает, и я могу увидеть идентификатор, если я сделаю {exp:test:getpage tag="id" parse="inward"}{id}{/exp:test:getpage}, но если я сделаю в соответствии с вашим кодом тега выше, например, так {exp:test:getpage tag="id" parse="inward"} {exp:hits:count_hits_image entry_id='{id}'} {/exp:test:getpage}, тогда я получу пустую страницу. Я подтвердил, что тег попадания работает, жестко кодируя идентификатор. Это просто не работает, когда я оборачиваю его тегом getpage. Как вы думаете, в чем проблема - person Pinkie; 10.12.2011
comment
Вы имеете в виду, что вы получаете пустую страницу, так как есть ошибка? (Обычно в шаблоне появляется другой контент?) Если да, включите отладку в файле index.php и посмотрите, в чем заключается ошибка PHP. - person Derek Hogue; 12.12.2011

Попробуй это:

{exp:hits:count_hits_image entry_id='{exp:test:getpage tag="id"}' parse="inward"}
person pvledoux    schedule 07.12.2011
comment
Это противоположно тому, что мне нужно. сначала он обрабатывал снаружи. - person Pinkie; 08.12.2011