官方的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
找了好久,总算找到了。谢谢