对于ExpressionEngine模板中的每个循环?

时间:2012-06-29 16:15:46

标签: foreach expressionengine

我创建了一个带有返回数组的函数的EE插件。 e.g。

function things(){
    return array(
        array(
            'name'=>'bob',
            'age'=>40
        ),
        array(
            'name'=>'mary',
            'age'=>50
        )
    );
}

我找不到用vanilla EE模板标签遍历这个数组的任何方法。插件只能返回字符串吗?这真的不可能,还是我忽略了一些简单的事情?我想做点什么:

{foreach {things} }
    Name: {name}
    Age: {age}
{/foreach}

2 个答案:

答案 0 :(得分:3)

您的阵列结构正确,但您需要使用Template Class' Parse Variables method。这个方法的好处在于它允许你根据需要嵌套很多层(允许标记对中的标记对中的标记对),并且你自动获得{count}{total_results}

所以在你的插件中:

function things()
{
    $things = array(
        array(
            'name'=>'bob',
            'age'=> '40'
        ),
        array(
            'name'=>'mary',
            'age'=> '50'
        )
    );
    return $this->EE->TMPL->parse_variables($this->EE->TMPL->tagdata, $things);
}

然后在你的模板中:

{exp:my_plugin:things}
    Name: {name}
    Age: {age}
{/exp:my_plugin:things}

答案 1 :(得分:0)

针对EE3修改的上一个答案的补充:

在模板中(同样):

{exp:addon_name:method_name}

   Name: {name}
   Age: {age}

{/exp:addon_name:method_name}

在插件插件中需要使用ee() - > TMPL:

$things = array(
        array(
            'name'=>'bob',
            'age'=> '40'
        ),
        array(
            'name'=>'mary',
            'age'=> '50'
        )
    );

    return ee()->TMPL->parse_variables(ee()->TMPL->tagdata, $things);