官方的type标签只能是选择一个ID的栏目,像这样
{dede:type typeid='2'}
而我想显示2,3,4多个栏目则只显示第一个ID的
{dede:type typeid='2,3,4'}
看了下官方type说明
标签名称:type
功能说明:表示指定的单个栏目的链接
适用范围:全局使用
基本语法:
{dede:type} <a href="[field:typelink /]">[field:typename /]</a> {/dede:type}
参数说明:
typeid=” 指定栏目ID
底层模板字段:
typename,typelink(仅表示栏目的网址), 栏目表dede_arctype的所有字段
没说怎么显示多个栏目的。
没办法找了相应的标签代码看了下,只能是显示一个栏目的ID
满足不了自己的需求就只能是自己加了
我这里自定义增加了 typearray 标签,标签代码如下
<!--?php if(!defined('DEDEINC')) exit('Request Error!'); /** * 指定的单个栏目的链接标签 * * @version $Id: typearray.lib.php 1 9:29 2012年3月20日Z 83 $ * @package DedeCMS.Taglib * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com * @author link http://www.madeby83.com */ /*-->>dede>> 指定栏目 全局标记 V55,V56,V57 表示指定的单个栏目的链接 {dede:type} <a href="[field:typelink /]">[field:typename /]</a> {/dede:type} typeid:指定栏目ID >>dede>>*/ function lib_typearray(&$ctag,&$refObj) { global $dsql,$envs; $attlist='typeid|0'; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = trim($ctag->GetInnerText()); //屏蔽默认为空的 // if($typeid==0) { // $typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] ); // } //换个效率更高点得 // if(empty($typeid)) $typeid = $refObj->Fields['typeid2']; $typeid = empty($typeid) ? $refObj->Fields['typeid2'] : $typeid; if(!$typeid) return ''; $row = array(); $dsql->Execute("me", "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id IN ($typeid) "); // if(!is_array($dsql->GetArray("me"))) return ''; 取消了判断结果集,这里不知道会不会出问题,高手请指教 if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm"); $dtp = new DedeTagParse(); $dtp->SetNameSpace('field','[',']'); $dtp->LoadSource($innertext); if(!is_array($dtp->CTags)) { unset($dtp); return ''; }else { while($row = $dsql->GetArray("me")){ $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); foreach($dtp->CTags as $tagid=>$ctag) { if($ctag->GetName()=='array'){ $dtp->Assign($tagid, $row); }else{ if( !empty($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]); } } $revalue .= $dtp->GetResult(); } return $revalue; } }
保存为 typearray.lib.php 放在include/taglib/下
然后在模板里面使用就可以了
{dede:typearray typeid='2,3,4'} <a href="[field:typelink /]">[field:typename /]</a> {/dede:typearray}
这样就调出了ID为2,3,4的栏目链接了
如果不定义typeid,调用文章副栏目,如果没有则不显示。
本文为原创,转载请注明:83
找了好久,总算找到了。谢谢