在 October CMS 中传递多个阵列

Pass on multiple arrays in October CMS

我在 10 月份的 CMS 中有一个这样的列表:

<ul>
   <li {% if this.page.id=='some-id' %} class = "active" {% endif %}>
      <a href="{{'dir/page' | page}}">Item 1</a>
   </li>
   <li {% if this.page.id=='some-id' %} class = "active" {% endif %}>
      <a href="{{'dir/page' | page}}">Item 2</a>
   </li>
   <li {% if this.page.id=='some-id' %} class = "active" {% endif %}>
      <a href="{{'dir/page' | page}}">Item 3</a>
   </li>
</ul>

但是,如您所见,有很多重复项,所以我决定创建数组变量。我可以传递单个数组变量,但我不确定如何传递多个数组,所以我的代码看起来像这样:

==
function onStart(){
    $this['pageData']=[
    'data' => [
        'item' => ['Item 1','Item 2','Item 3'],
        'id' => ['pageid1','pageid2','pageid3'],
        'link' => ['dir/page1','dir/page2','dir/page3']
    ]
    ];
}
==
<ul>
   {% for items in pageData %}
   <li {% if this.page.id == items.data.id %} class="active" {% endif %}>
     <a href="{{items.data.link | Page}}">{{items.data.item}}</a>
   </li>
   {% endfor %}
</ul>

我知道这段代码是错误的,但这是我的想法。我可以检索一个对象数组,如果我写:

{% for items in pageData.data.item %}
  <li>{{items}}</li>
{% endfor %}

但这当然只给了我 'item' 对象内的项目列表。我希望我解释得很好。如果我可以提供更多信息来解决此问题,请告诉我。

可以这样写

==
function onStart(){
    $this['records'] = [    
      [
        'id' =>  'pageid1',
        'item' => 'Item 1',
        'link' => 'dir/page1'
      ],
      [
        'id' =>  'pageid2',
        'item' => 'Item 2',
        'link' => 'dir/page2'
      ],
      [
        'id' =>  'pageid3',
        'item' => 'Item 3',
        'link' => 'dir/page3'
      ],
    ];
}
====
<ul>
    {% for record in records %}
       <li {% if this.page.id == record.id %} class="active" {% endif %}>
         <a href="{{record.link | page}}">{{record.item}}</a>
       </li>
    {% endfor %}
</ul>

这会起作用

如有疑问请评论。