很多人在抱怨,DEDECMS的企业黄页频道,导航无法使用{dede:channel/}标签,只有 一个“首页”链接,如果要实现导航,只能使用“自定义宏标记",需知道,DEDECMS的”自定义宏标记"只是在页面中插入一 段<script>脚本,这种形式的导航,搜索引擎是没办法进行抓取的。给各大站长的SEO优化带来了很大的烦恼,官网又不提供解决方案,网 上搜索也没有。
其实DEDECMS的开源给了我们这些稍懂程序的人提供了很多的方便,既然官网没有提供,那就只能是自己写了,研究了一些DEDECMS的源码,写起来也挺简单的。
第一步:在include\tpllib下,新建一个:plus_channel.php文件,然后在文件中写下如下内容:
<?php
if(!defined('DEDEINC'))
{
exit("Request Error!");
}
//orderby = logintime(login new) or mid(register new)
require_on
function plus_channel(&$atts,&$refObj,&$fields)
{
global $dsql,$_vars;
$attlist = "typeid=0,reid=0,row=100,col=1,type=son,currentstyle=";
FillAtts($atts,$attlist);
FillFields($atts,$fields,$refObj);
extract($atts, EXTR_OVERWRITE);
$rearray = array();
$reid = 0;
$topid = 0;
//如果属性里没指定栏目id,从引用类里获取栏目信息
if(empty($typeid))
{
if( isset($refObj->TypeLink->TypeInfos['id']) )
{
$typeid = $refObj->TypeLink->TypeInfos['id'];
$reid = $refObj->TypeLink->TypeInfos['reid'];
$topid = $refObj->TypeLink->TypeInfos['topid'];
}
else {
$typeid = 0;
}
}
//如果指定了栏目id,从数据库获取栏目信息
else
{
$row2 = $dsql->GetOne("Select * From `dede_arctype` where id='$typeid' ");
$typeid = $row2['id'];
$reid = $row2['reid'];
$topid = $row2['topid'];
$issetInfos = true;
}
if($type=='' || $type=='sun') $type='son';
if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");
$likeType = '';
if($type=='top')
{
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `dede_arctype` where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row";
}
else if($type=='son')
{
if($typeid==0) return '';
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `dede_arctype` where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";
}
else if($type=='self')
{
if($reid==0) return '';
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `dede_arctype` where reid='$reid' And ishidden<>1 order by sortrank asc limit 0,$row";
}
$dsql->Execute('ch',$sql);
while($row = $dsql->GetArray('ch'))
{
if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' )
{
$linkOkstr = $currentstyle;
$row['typelink'] = GetOneTypeUrlA($row);
$linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);
$linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);
//$likeType .= $linkOkstr;
$row['typelink'] = $linkOkstr;
}
else
{
$row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
}
$rearray[] = $row;
}
return $rearray;
}
?>
第二步:在模板里面,按照{dede:channel/}标签的格式写就好了。