2012-06-29 18 views
2

我用一個返回數組的函數創建了一個EE插件。例如對於ExpressionEngine模板中的每個循環?

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

我找不到任何方式通過這個數組與香草EE模板標籤循環。插件只能返回字符串嗎?這真的不可能,或者我忽略了簡單的事情嗎?我想這樣做:

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

回答

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} 
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);