最近心血来潮在搞一个新网站,用的织梦dedecms做内核,因为网站内容涉及很多自定义字段,有一些自定义字段想要在搜索结果页面也用标签调用出来,但是试了在首页和列表页都可以实现的方法却没法在搜索结果中调用自定义字段。
在网上找了一些文章,几乎都没法正常解决,冥思苦想终于搞定,分享记录一下~
注意事项:备份好/include/extend.func.php和/include/arc.searchview.class.php文件,此方法在dedecms 5.7sp2中测试可用。
1、首先在内容模型中自定义字段勾选成允许在列表底层模板中获取。

2、然后在 /include/extend.func.php 文件最下面添加一个自定义函数,这个文件是个扩展函数文件,专门用来自定义函数的,代码如下:
//搜索结果页面自定义函数
function Search_addfields($id,$result){
global $dsql;
$row4 = $dsql->GetOne("SELECT * FROM `dede_addonarticle` where aid='$id'");
$name=$row4[$result];
return $name;
}
我这里是在默认的内容模型中添加的自定义字段,所以要查询默认内容模型的表单“dede_addonarticle”,如果内容模型也是自定义的,在模型管理界面就可以看到表单名,例如第一个自定义添加的模型表单名是“dede_addon17”,然后调换掉代码中的表单。

3、再打开/include/arc.searchview.class.php搜索“//处理一些特殊字段“ 在下面添加一段代码调用自定义字段的数据,例如我这里要调用”src_addr”(源地址)这个自定义字段。
$row["src_addr"]=Search_addfields($row["id"],"src_addr");

4、最后在dedecms的搜索模板文件search.htm中用[field:src_addr/]调用指定的自定义字段即可,例如这里是把”src_addr“这个源地址调用到url中。
<a rel="nofollow" href="[field:src_addr/]">[field:title/]</a>
评论已关闭