Разобрать теги шаблонов вне шаблона Expression Engine - PullRequest
0 голосов
/ 14 октября 2011

Я использую Expression Engine 2.3.0 и использую добавление Channel Images.

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

Я хотел бы использовать изображения каналов для создания данных канала, которые я отображаю вмои взгляды выглядят немного лучше.Проблема в том, что функция Channel Images не позволяет мне называть ее PHP.Из-за параметров шаблона EE.

Итак, я решил попробовать запустить блок шаблона через анализатор.Но я не получаю результат.Есть идеи?Или может быть обходной путь для вызова функции напрямую?

<?php $this->EE =& get_instance();

$img_tpl = '{exp:channel_images:images entry_id="'. $item['id'] .'" cover_only="yes"}
            <div style="float:left; display:inline; width:125px;">
                    <a href="{image:url:large}" title="{image:title}"><img src="{image:url:small}" alt="{image:title}" /></a>
                    <p>{image:description}</p>
            </div>
            {/exp:channel_images:images}';

$opts = array('');
$img = $this->EE->output->set_output($this->EE->TMPL->parse_variables($this->EE->TMPL->parse_globals($img_tpl), array($opts)));

?>

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

https://expressionengine.stackexchange.com/questions/1347

Я продолжаю пересматривать этот ответ и хотел бы добавить, как я решил его в ExpressionEngine 3.

// load my own instance of TMPL as myTMPL
ee()->load->library("template", null, "myTMPL");

// get template as a string, and variables as name => value pairs
$template = ee()->myTMPL->fetch_template("mygroup", "mytemplate", false);
$variables = array("name" => "Mr. John Q. Public");

// render the template
$html = ee()->myTMPL->parse_variables($template, array($variables)); // merges variables
ee()->myTMPL->parse($html); // handles conditionals (doesn't seem to run plugins)
$html = ee()->myTMPL->parse_globals(ee()->myTMPL->final_template); // returns output
0 голосов
/ 18 октября 2011

У тебя будет адское время.Ни одна часть синтаксического анализа EE не написана с мыслью, что он будет вызываться извне EE.

parse_variables() и parse_globals() не анализируют полные пары тегов EE (только отдельные переменные), чтопочему вы не получаете результатов.

Я бы действительно рекомендовал эту работу с шаблонами EE.

...