织梦DedeCMS搜索结果调用自定义字段

织梦DedeCMS搜索结果调用自定义字段,第1张

概述今日进行了搜索功能修改,需要完成的是指定栏目商业模板搜索,但是修改后不显示自定义字段价格,于是进行了分析研究。

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。内存溢出小编现在分享给大家,也给大家做个参考。

使用 Dedecms 建站时,在后台增加了一个自定义字段调用都是正常的,但是在搜索页却不显示,如果使其用户搜索这个自定义字段,找了好多文章和教程,却发现 Dedecms 的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但也不可能让所有字段都允许调用的,那样就会大大降低系统效率,所以今天分享的是一个比较完美解决这个问题的方法,配合 dede 标签,几乎可以说没有什么不能调用的了。

方法一(推荐)

1:找到并打开 include 目录下的 extend.func.PHP 文件,在文件末尾添加如下代码:

function Search_addfIElds($ID,$result){

global $dsql;

$dedeJs = $dsql->Getone("SELECT * FROM `dede_addonsoft` where aID='$ID'");

$name=$dedeJs[$result];

return $name;

}

其中 addosoft 是要调用自定义字段的附加表,在织梦后台核心->频道模型->内容模型管理可以看到,软件模型一般是 addonsoft,普通文章一般是 addonarticle,这个根据具体的需要来更改,其他的不用修改。



2:接下来找到并打开 include 目录下的 arc.searchvIEw.class.PHP 文件,搜索“ //处理一些特殊字段”,在下面添加如下代码:

$row["softsize"]=Search_addfIElds($row["ID"],"softsize");

其中的 softsize 是软件大小的字段名,如果有多个自定义字段则添加多行,但是一定要把 softsize 修改成字段名。添加之后就完成了,最后一步就是在搜索模板也调用了,在 search.htm 中 使用[fIEld:softsize/]标签 就可以调用出来软件大小了。

方法二

另一种 Dedecms5.7 搜索结果页面中调用自定义字段处理办法,默认 Dedecms 搜索页面是没法使用[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 `cn_channeltype` Where ID=$ID");

$addtable = trim($row['addtable']);

$this->Addtable=$addtable;

}else{

$this->Addtable="cn_archives";

}

改为:

if($this->ChannelType=="0") $ID=$this->ChannelTypeID;

else $ID=$this->ChannelType;

$row =$this->dsql->Getone("Select addtable From `cn_channeltype` Where ID=$ID");

$addtable = trim($row['addtable']);

if($this->ChannelType < 0 || $this->ChannelTypeID< 0){

$this->Addtable=$addtable;

$this->Addontable='';

}else{

$this->Addtable="cn_archives";

$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 @R_502_6823@ join `cn_arctype` act on arc.typeID=act.ID

where {$this->Addsql} $ordersql limit $limitstart,$row";

改为:

if (!empty($this->Addontable)) {

$this->Addontable="@R_502_6823@ join `{$this->Addontable}` addon on addon.typeID=arc.typeID";

}else {

$this->Addontable='';

}

$query = "Select arc.*,act.sitepath,addon.*

from `{$this->Addtable}` arc @R_502_6823@ join `cn_arctype` act on arc.typeID=act.ID {$this->Addontable}

where {$this->Addsql} $ordersql limit $limitstart,$row";

好了,可以在 search.htm 中使用[fIEld:price/]了,只要你的模型有附加表,你就可以使用表里的任何字段


另外注意:如果附加表里有字段名和主表字段名一样的,使用[fIEld:xxxx/]的结果是未定义的。

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的织梦DedeCMS搜索结果调用自定义字段全部内容,希望文章能够帮你解决织梦DedeCMS搜索结果调用自定义字段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/1026527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存