返回列表 发帖

问一个与模版有关的问题

有一个分类数组


  1. $categiries = array(
  2.   '100'=>array('cid'=>100,'name'=>'国际'),
  3.   '101'=>array('cid'=>101,'name'=>'科技'),
  4.   '102'=>array('cid'=>102,'name'=>'娱乐'),
  5. );
复制代码


在模版中能正常显示

  1. <!--{spUrl c=news a=list cid=$data.cid}-->
复制代码


同一页面,我想在内容列表中显示分类,却为空



   <!--{foreach from=$news_list item=data key=key}-->
    <li><span> [<!--{$categories[$data.cid]['name']}-->] </span><!--{$data.subject}--></li>
   <!--{/foreach}-->


不知道红字部分有没有写错。

多维数组的循环可以看看smarty的文档教程
http://www.smarty.net/manual/en/language.function.foreach.php

另外,在sp中是通过$this->ooo = ooo来将变量赋值到模板上的,上面的代码没有这个,不知道变量有没有赋值到模板了。

TOP

c

既然在同一个模版中能显示
  1. <p><!--{spUrl c=news a=list cid=$data.cid}--></p>
复制代码

说明程序中已经
  1. $this->categories = $categories;
复制代码


在文章列表页
  1. [<!--{$data.cid}-->]
复制代码
能显示出
  1. [100]
复制代码


而要将分类ID显示为中文。

变量原型为:


  1. $categories['cid']['name']
复制代码


在SMARTY模版中,如何将这个变量原型显示出来?

一、
  1. $categories[$data.cid]['name']
复制代码


是不行的。

二、通过SMARTY模版赋值语句
  1. <!--{assign var="_cid" value=$data.cid}-->
复制代码



  1. $categories._cid['name']
复制代码
也不行。

TOP

将$categories[$data.cid]['name'] 改成$categories.$data[cid].name试试

TOP

将$categories[$data.cid]['name'] 改成$categories.$data[cid].name试试
jake 发表于 2010-3-6 12:53



    同样不行。

我通过SMARTY的赋值语句。将变量简化成

  1. <!--{assign var="_cid" value=$data.cid}-->
复制代码


相当于:


  1. $_cid = $data['cid'];
复制代码

  1. $categories.$_cid.name  
复制代码


这样就行了。

TOP

返回列表