dede search.php 搜索页面如何调用自定义字段

{dede:listpagesize='10'}<ulclass="p_pic"><liclass="li1"><ahref="[field:arcurl/]"><img... {dede:list pagesize='10'}
<ul class="p_pic">
<li class="li1"><a href="[field:arcurl/]"><img src="[field:litpic/]" height="74" width="127" /></a></li>
<li class="li2">名称:<a href="[field:arcurl/]">[field:title/]</a></li>
<li class="li3">价格:<a href="/">[field:trueprice/]元</a></li>
</ul>
{/dede:list}
[field:trueprice/] 为自定义
展开
 我来答
经典19851023
2011-05-31 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:223
采纳率:100%
帮助的人:161万
展开全部
一:打开你的数据库,找到dede_full_search这个表,在里面把你自定义的字段添加进表,这里以我的网站为例,我添加了myskill,myexchange,mygoods,myexgoods,这4个字段

二:打开/member/article_add_action.php,找到"//更新全站搜索索引",在下面的一段代码中插入刚才添加的4个字段,例:“'myskill'=>$myskill,'myexchange'=>$myexchange,'mygoods'=>$mygoods,'myexgoods'=>$myexgoods”,这里说明一下,前面的'myskill'为你发布文章时添加的自定义字段,后面的为刚才在表dede_full_search中添加的字段(建议在表中添加字段的时候写成跟你之前字定义的字段一样)这里最好写成一样,可以省去很多麻烦

三:打开/include/inc_arcsearch_view.php,搜索titlekeyword,找到如下代码

Copy code
if($this->SearchType != "titlekeyword"){
$kwsqlarr[] = " #@__full_search.title like '%$k%' ";
}else{
$kwsqlarr[] = " #@__full_search.title like '%$k%' ";
$kwsqlarr[] = " #@__full_search.addinfos like '%$k%' ";
$kwsqlarr[] = " #@__full_search.keywords like '%$k%' ";
}

分析下代码SearchType != "titlekeyword,搜索类型为titilekeyword,即前台搜索下拉框中的智能模糊搜索,$kwsqlarr[] = " #@__full_search.title like '%$k%' ";为搜索full_search表中的title字段,好了,知道了这段代码的作用,我们就知道该如何添加自己的搜索了下面把我的代码作为例子
Copy code
if($this->SearchType != "skill"){
$kwsqlarr[] = " #@__full_search.myskill like '%$k%' ";
$kwsqlarr[] = " #@__full_search.myexchange like '%$k%' ";
}else{
$kwsqlarr[] = " #@__full_search.myexchange like '%$k%' ";
$kwsqlarr[] = " #@__full_search.myskill like '%$k%' ";
}
if($this->SearchType != "goods"){
$kwsqlarr[] = " #@__full_search.mygoods like '%$k%' ";
$kwsqlarr[] = " #@__full_search.myexchange like '%$k%' ";
}else{
$kwsqlarr[] = " #@__full_search.myexchange like '%$k%' ";
$kwsqlarr[] = " #@__full_search.mygoods like '%$k%' ";

}
,因为我的myskill和myexchange2个字段是一起的,而mygoods和myexgoods是一起的,所以我用了2个if else语句

四:修改搜索框代码,代码在哪我就不说了吧,大家都知道在哪,搜索框原代码为
Copy code
<select name="searchtype" id="searchtype">
<option value="titlekeyword" selected>智能模糊搜索</option>
<option value="title">仅搜索标题</option>
</select>

这里只需修改上面的代码,修改后的代码为
Copy code
<select name="searchtype" id="searchtype">
<option value="skill" selected>搜技能</option>
<option value="goods">搜物品</option>
</select>

value="",这填的是第三步中添加的SearchType后面的,即搜索类型,这个你自己定义

五:还是打开/include/inc_arcsearch_view.php,找到//处理一些特殊字段,把你之前的自定义的字段添加进去,这里还是以我的为例子
在先面添加
Copy code

$row["myskill"] = $this->GetRedKeyWord(cn_substr($row["myskill"],$infolen));
$row["myexchange"] = $this->GetRedKeyWord(cn_substr($row["myexchange"],$infolen));
$row["mygoods"] = $this->GetRedKeyWord(cn_substr($row["mygoods"],$infolen));
$row["myexgoods"] = $this->GetRedKeyWord(cn_substr($row["myexgoods"],$infolen));

其实只要添加 $row["myskill"] = $row["myskill"];(另外3个我就不写了,类似)就够了,但是我为什么要这样写呢,这样写的作用就是让你在搜索结果页调用的时候显示关键子为红色

六:最后一步了,打开templets/default/search.htm,这里就是搜索页调用的模版,这里要调用只要[field:你自定义的字段/],还是以我的网站为例[field:myskill/],这样调用就OK,但是要注意一点,假如你2个字段放一起调用中间最好加个空格或者其他符号,假如[field:myskill/][field:mygoods/]这样连在一起是显示不出来的
yehaibin57
2014-08-13 · TA获得超过100个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:178万
展开全部
puls/search.php 没试过,puls/advancedsearch.php 就试过
puls/advancedsearch.php 第218行
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*
改成:$query = "SELECT addon.*,main.id AS aid,main.*,main.description AS description1, type.*
参考:http://bbs.dedecms.com/322100.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友edbb783
推荐于2016-04-03 · 超过31用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:63.7万
展开全部

{dede:list pagesize='10' addfields='trueprice‘  channelid='6'}

<ul class="p_pic">

<li class="li1"><a href="[field:arcurl/]"><img src="[field:litpic/]" height="74" width="127" /></a></li>

<li class="li2">名称:<a href="[field:arcurl/]">[field:title/]</a></li>

<li class="li3">价格:<a href="/">[field:trueprice/]元</a></li>

</ul>

{/dede:list}

调用自定义定段的方法

{dede:arclist addfields='add1,add2,需要查询出来的自定义字段名' channelid='自定义内容模型的ID' row='10' orderby='pubdate''}(add1,add2为自字义的字段名)

字段名1 调用:   [field:add1 /]

字段名2 调用:   [field:add2 /]

{/dede:arclist}

注意:若要在list标签中使用自定义标签,需要在自定义标签属性中选择“使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择) ”。

如有疑问详询:QQ258071877

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-06-04
知道答主
回答量:76
采纳率:0%
帮助的人:13.2万
展开全部
人生哥啊份额所认同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式