以下模板代码,会显示栏目排序为86的栏目的一些文章信息。
好处:在设计模板的时候,不用在模板源代码里写死栏目ID,以后要更换栏目的时候,可以通过在hbcms系统后台修改栏目排序属性来达到目的。
<{* 根据特定的栏目排序属性,显示此栏目的下级栏目信息 *}>
<{assign var="some_type_id" value="0"}>
<{foreach name=sub_type item=item_info from=$web.type}>
<{if $item_info.parent_id==0 && $item_info.order_mark == '86'}>
<{assign var="some_type_id" value="`$item_info.id`"}>
<{/if}>
<{if $item_info.parent_id == $some_type_id && $some_type_id != '0' }>
<LI><A HREF="<{$item_info.url}>"><{$item_info.title}></A> <BR>
<{/if}>
<{/foreach}>
提示:上面的代码适用于在首页模板里直接使用。
如果需要在其他模板页面里显示特定栏目的数据,需要先将特定栏目的数据缓存文件包含进来。参考代码如下:
<{foreach name=all_type item=single_type from=$web.type}>
<{if $single_type.parent_id == 0 && $single_type.order_mark == 88 }>
<H3>title:<{$single_type.title}> type id: <{$single_type.id}></H3>
<{php}>
include("config/type_" . $this->_tpl_vars['single_type']['id'] . ".inc.php");
$this->assign('my_variable_name',$TYPE_DATA['new_article']);
<{/php}>
<{foreach name="my_foreach_name" item="curr_section" from=$my_variable_name}>
<{if $smarty.foreach.my_foreach_name.iteration <= 10}>
<{$smarty.foreach.my_foreach_name.iteration}>.
<a href="<{$curr_section.url}>"><{$curr_section.title}></a><br>
<{/if}>
<{/foreach}>
<{/if}>
<{/foreach}>
包含数据文件的具体含义可以看这篇文章: http://www.hbcms.com/cms/2f/668.html
进阶:
在宏博cms1.1版本开始,栏目设置页面里增加了自定义属性的字段。此字段可以代替排序字段。例如:
<{if $item_info.parent_id==0 && $item_info.order_mark == '86'}>
可以改成
<{if $single_type.parent_id == 0 && $single_type.custom_str|strstr:'sub_type_show' }>
这样的好处是,不影响排序功能,模板作者可以随意设置 自定义字段的数值,在模板里判断即可,加大了模板设计的自由度。