在织梦CMS(DedeCMS)中,实现按照自定义字段搜索的功能需要一些代码的修改和添加,以下是具体的实现方法:
一、修改include/extend.func.php文件
1、打开include/extend.func.php文件:
在文件末尾添加以下代码:
function Search_addfields($id, $result){
global $dsql;
$mnkj = $dsql>GetOne("SELECT * FROMdede_addonshop
where aid='$id'");
$name=$mnkj[$result];
return $name;
}
addonshop
是你要调用自定义字段的附加表,根据具体情况可能需要修改为addonarticle
或其他表名。
2、修改include/arc.searchview.class.php文件:
打开include/arc.searchview.class.php文件,找到“//处理一些特殊字段”的位置,在其下面添加如下代码:
$row["price"]=Search_addfields($row["id"],"price");
这里假设price
是你要调用的自定义字段名称,如果有多个自定义字段,可以添加多行代码,但要将price
替换为相应的字段名。
3、在搜索模板中调用自定义字段:
打开search.htm文件,使用[field:字段名/]
标签来调用自定义字段,
[field:price/]
这里的price
应替换为你实际的自定义字段名。
实现搜索功能
1、修改数据库:
在dede_full_search表中添加你的自定义字段,
ALTER TABLE dede_full_search ADD COLUMN myskill VARCHAR(255);
这样,你就可以在全站搜索时包含这个自定义字段。
2、更新搜索索引:
打开member/article_add_action.php文件,找到“//更新全站搜索索引”的位置,在其下面的代码中插入你添加的字段,
'myskill' => $myskill, 'myexchange' => $myexchange,
确保字段名与之前在数据库中添加的字段名一致。
3、修改搜索类型判断:
打开include/inc_arcsearch_view.php文件,找到如下代码:
if($this>SearchType != "titlekeyword"){ $kwsqlarr[] = " ying_full_search.title like '%$k%' "; }else{ $kwsqlarr[] = " ying_full_search.title like '%$k%' "; $kwsqlarr[] = " ying_full_search.addinfos like '%$k%' "; $kwsqlarr[] = " ying_full_search.keywords like '%$k%' "; }
添加对自定义字段的判断,
if($this>SearchType != "skill"){ $kwsqlarr[] = " ying_full_search.myskill like '%$k%' "; $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' "; }else{ $kwsqlarr[] = " ying_full_search.myexchange like '%$k%' "; $kwsqlarr[] = " ying_full_search.myskill like '%$k%' "; }
这样,当你选择不同的搜索类型时,系统会相应地搜索不同的自定义字段。
4、高亮显示搜索结果:
在include/inc_arcsearch_view.php文件中,找到处理特殊字段的位置,添加如下代码:
$row["myskill"] = $this>GetRedKeyWord(cn_substr($row["myskill"],$infolen)); $row["myexchange"] = $this>GetRedKeyWord(cn_substr($row["myexchange"],$infolen));
这样,在搜索结果页调用自定义字段时,关键字会以红色高亮显示。
FAQs
1、如何在首页调用自定义字段?
答:在首页调用自定义字段,可以使用{dede:arclist}标签,并添加addfields参数。
{dede:arclist row=8 titlelen=32 addfields='jiage' channelid='1'} <li><span>¥[field:jiage/]起</span><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist}
这里的jiage
是自定义字段名,channelid='1'
表示文章模型。
2、如何删除自定义字段?
答:删除自定义字段可以通过后台操作或直接修改数据库实现,后台操作步骤如下:进入内容模型管理 > 选择要删除字段的模型 > 点击更改小图标 > 在字段管理选项中找到要删除的字段 > 点击删除按钮即可。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1218751.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复