dedecms搜索页调用文章列表无法使用arclist标签怎么解决?

2017-04-13 21:03:07 dedecms

  大家在用

织梦

系统做项目的时候都知道,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'))); ”

大概内容如下

//php脚本开始 else if($tagname=="likewords") { $this->dtp->Assign($tagid,$this->GetLikeWords($ctag->GetAtt('num'))); }

这时我们在 } 号下面加一行代码 代码如下

//php脚本开始 else if($tagname=="arclist") { $this->dtp->Assign($tagid,lib_arclist($ctag,$this)); }

修改后的代码是:

//php脚本开始 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)); }

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

//html脚本开始 {dede:arclist titlelen='30' row='10' orderby='pubdate'} <li> <span class="lettsub7"><a target="_blank" href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></span> </li> {/dede:arclist}

完成,终于输出想要的文章列表了,dede搜索页面调用文章列表解决使用arclist标签调用的问题了,这就是织梦的二次开发,大家可以试试!