DEDEcms5.7搜索结果页面中调用自定义字段,织梦教程
导读:织梦教程织梦教程找了好多文章和教程,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但dede也不可能让所有字段都允许调用的,那样就会大大降低系统免费织梦模板织梦模板。
找了好多文章和教程,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但dede也不可能让所有字段都允许调用的,那样就会大大降低系统效率,所以今天分享的是一个比较完美解决这个问题的方法,配合dede标签,几乎可以说没有什么不能调用的了
首先把上面代码放到 include/extend.func.php 里 使用方法:
function table($table, $field, $id) { global $dsql; $primarys = array(); $table = strpos($table, ‘#@_’) === false?(strpos($table, ‘dede_’) === false?’dede_’.$table:str_replace(‘dede_’,’dede_’,$table)):$table; $dsql -> Execute(“me”,”SHOW COLUMNS FROM `$table`”); while ($r = $dsql->GetArray()) { if($r['Key'] == ‘PRI’) $primarys[] = $r['Field']; } if(!empty($primarys)) { $primary = $primarys[0]; $result = $dsql -> GetOne(“SELECT `$field` FROM `$table` WHERE `$primary`= $id”); } return isset($result[$field])?$result[$field]:”; }
利用自定义函数对标签进行扩展 如: {dede:标记 function=’table(“要调用的表名”,”要调用的字段”,@me)’/} 这里的“标记”就是要调用的表的主键的值,常见的就是id和aid、mid、uid之类的 标签底层模板内 [field:字段 function=table(“要调用的表名","要调用的字段",@me)/]
举例 例如arclist标签底层模板字段是没有body字段的,就是说不能用arclist把文章内容调用出来的,当然这种需求很少,但不是没有,现在我们就可以这样使用
还有很多作用,如type标签调用栏目简介,等等
另一种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-Cha 默认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 left join `cn_arctype` 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 `cn_arctype` act on arc.typeid=act.id {$this->AddonTable} where 织梦模板免费下裁{$this->AddSql} $ordersdede网站模板ql limit $limitstart,$row”; 好了,可以在search.htm中使用[field:price/]了,只要你的模型有附加表,你就可以使用表里的任何字段 另外注意:如果附加表里有字段名和主表字段名一样的,使用[field:xxxx/]的结果是未定义的
声明: 本文由我的SEOUC技术文章主页发布于:2023-07-22 ,文章DEDEcms5.7搜索结果页面中调用自定义字段,织梦教程主要讲述自定义,搜索结果,织梦网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_33998.html