织梦CMS在搜索模板中调用附加表字段

今天应朋友的要求,给他的网站做一个商品价格排序搜索。我原来以为很简单,直接用[field:price/]来调用就行了,于是爽快地答应了。一操作起来才发现,根本没法使用[field:price/]来调用dede_addonshop里面的price字段。

今天应朋友的要求,给他的网站做一个商品价格排序搜索。我原来以为很简单,直接用[field:price/]来调用就行了,于是爽快地答应了。谁知一操作起来才发现,根本没法使用[field:price/]来调用dede_addonshop里面的price字段,因为系统默认不能在搜索模板中调用附加表字段。

结果搞了一个下午才发现解决方法:

    修改include/arc.searchview.class.php
    第一处:
    将大约320行地方的代码:
     if($this->ChannelType < 0 || $this->ChannelTypeid< 0){
if($this->ChannelType=="0") $id=$this->ChannelTypeid;
else $id=$this->ChannelType;
$row =$this->dsql->GetOne("Select addtable From
`dede_ytljzchanneltype` Where id=$id");
$addtable = trim($row['addtable']);
$this->AddTable=$addtable;
}else{
$this->AddTable="
dede_ytljzarchives";
}

改为:


if($this->ChannelType=="0") $id=$this->ChannelTypeid;
else $id=$this->ChannelType;
$row =$this->dsql->GetOne("Select addtable From
`dede_ytljzchanneltype` Where id=$id");
$addtable = trim($row['addtable']);
if($this->ChannelType < 0 || $this->ChannelTypeid< 0){
$this->AddTable=$addtable;
$this->AddonTable='';
}else{
$this->AddTable="
dede_ytljzarchives";
$this->AddonTable=$addtable;
}

第二处:


将大约500行的地方的代码:
$query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule,
act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath
from `{$this->AddTable}` arc left join
`dede_ytljzarctype` act on arc.typeid=act.id
where {$this->AddSql} $ordersql limit $limitstart,$row";

改为:


if (!empty($this->AddonTable)) {
$this->AddonTable="left join `{$this->AddonTable}` addon on addon.typeid=arc.typeid";
}else {
$this->AddonTable='';
}
$query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule,
act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath,addon.*
from `{$this->AddTable}` arc left join
`dede_ytljzarctype` act on arc.typeid=act.id {$this->AddonTable}
where {$this->AddSql} $ordersql limit $limitstart,$row";

好了,可以在search.htm中使用[field:price/]了,只要你的模型有附加表,你就可以使用表里的任何字段
另外注意:如果附加表里有字段名和主表字段名一样的,使用[field:xxxx/]的结果是未定义的。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DEDECMS利用strftime()函数格式化时间的所有参数详解,包括年份日期进制、小时格式等,大家收藏吧,呵. 日期时间格式 (利用strftime()函数格式化时间)0 dedecms首页时间标签: 1、12-27 样式 ([field:pubdate function=strftime(%m-%d,@me)/]) 2、May 15, 2
前几天,在帮一个客户在做网站时,因为客户要求网站内要弄一个产品搜索功能。在网上查询了一些资料,但觉得网上的资料很杂乱,把一个简单的东西变为复杂化了。下面我就跟大家分享一下: 三步 如何实现dede制作网站搜索功能 第一步:找到对应的搜索模板的代码
这个功能在很多小说站,图片站经常用到,大家可以留意一下,此教程源自于论坛热心网友提供,下面来讲讲具体的修改操纵
DedeCMS5.7在使用站内搜索时,搜索词中如果含有大写字母,会被过滤掉,以及访问含有大写字母的tag标签时会提示标签不存在的bug。在官方未出补丁前,可以使用strtolower()函数把大写字母转换成小写字母进行临时解决。
今天在官方的论坛里发现一个设置织梦CMS邮箱验证功能的教程,现在转发过来,希望对大家有些帮助。
最新的织梦CMS V5.6版本的副栏目最多只能选择为9个,但是今天遇到一位做网站的客户却想要选择20,上官方查找了下,没有解决方法,没办法,只好自己研究了,最终发现原来是js调用的问题。