众所周之,dedecms搜索页面是不支持 调用文章列表标签arclist 的

就是放上去模标签也不会有任何的结果,这是为什么呢?

因为搜索页面search.php 没有文章列表核心类,我觉得有个很好的解决方法,就是加一个文章列表类进去!非常简单

其实有两种方法可以让dede搜索页面上获取文章列表的

先说说dede内置的”自定义宏标记“吧,这个也是非常强大的,很少人会用到,呵呵

所在位置,, dede后台—模板–自定义宏标记 增加一个新的标记,这样就可以在搜索页面上调用此自定义宏标记了

使用方法很简单就是把

"自定义标记的调用方法:

{dede:mytag name='标记名称' ismake='是否含板块代码(yes 或 no)' typeid='栏目ID'/}

1、name 标记名称,该项是必须的属性,以下 2、3是可选属性;

2、ismake 默认是 no 表示设定的纯HTML代码, yes 表示含板块标记的代码;

3、typeid 表示所属栏目的ID,默认为 0 ,表示所有栏目通用的显示内容,在列表和文档模板中,typeid默认是这个列表或文档本身的栏目ID"

就可以解决。

还有一种方法‘我就更喜欢使用了,不过要修改核心文件 ,呵呵,使用起来更舒服’

解决无法使用arclist标签最有效方法如下:

首先找到 “include/arc.searchview.class.php 打开”

搜索文本 “    require_once(DEDEINC."/taglib/channel.lib.php");     ”

在下面加入 “     require_once(DEDEINC."/taglib/arclist.lib.php");     ”

arclist.lib.php是文章列表 arclist 标签的类了

这时还不行,因为没有加载起来

继续搜索文本 “   $this->dtp->Assign($tagid,$this->GetLikeWords($ctag->GetAtt('num')));   ”

//找到如下代码
else if($tagname=="likewords")    
{    
 $this->dtp->Assign($tagid,$this->GetLikeWords($ctag->GetAtt('num')));    
 }

然后我们在这段代码下边添加这一段代码:

else if($tagname=="arclist")    
{    
$this->dtp->Assign($tagid,lib_arclist($ctag,$this));    
}

添加完以后就是这样的代码,大家可以对比下

else if($tagname=="likewords")    
{    
 $this->dtp->Assign($tagid,$this->GetLikeWords($ctag->GetAtt('num')));    
}    
//下面是我们加入的代码    
else if($tagname=="arclist")    
{    
$this->dtp->Assign($tagid,lib_arclist($ctag,$this));    
}

这时核心代码就搞定啦,现在我们开始向搜索模板search.htm插入arclist标签来调用文章列表

{dede:arclist row="10" orderby="pubdate" orderway="desc"}
<li><a href="[field:typeurl/]" title="[field:fulltitle/]" >[[field:typename/]]</a><a href="[field:arcurl /]">[field:title /]</a></li>
{/dede:arclist}

这样就能达到我们想要的效果了,本人更倾向于第二种方法,有利于SEO。

发表评论

电子邮件地址不会被公开。 必填项已用*标注