婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 網(wǎng)站建設(shè) > 建站知識(shí) > DEDEcms5.7搜索結(jié)果頁(yè)面中調(diào)用自定義字段

DEDEcms5.7搜索結(jié)果頁(yè)面中調(diào)用自定義字段

POST TIME:2018-12-07 13:17

找了好多文章和教程,卻發(fā)現(xiàn)dedecms的標(biāo)簽底層模板字段不包括這個(gè)字段呢?這就大大限制了靈活性,但dede也不可能讓所有字段都允許調(diào)用的,那樣就會(huì)大大降低系統(tǒng)效率,所以今天分享的是一個(gè)比較完美解決這個(gè)問題的方法,配合dede標(biāo)簽,幾乎可以說沒有什么不能調(diào)用的了

首先把上面代碼放到 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]:”;
}

利用自定義函數(shù)對(duì)標(biāo)簽進(jìn)行擴(kuò)展
如:
{dede:標(biāo)記 function=’table(“要調(diào)用的表名”,”要調(diào)用的字段”,@me)’/}
這里的“標(biāo)記”就是要調(diào)用的表的主鍵的值,常見的就是id和aid、mid、uid之類的
標(biāo)簽底層模板內(nèi)
[field:字段 function=table(“要調(diào)用的表名","要調(diào)用的字段",@me)/]

舉例
例如arclist標(biāo)簽底層模板字段是沒有body字段的,就是說不能用arclist把文章內(nèi)容調(diào)用出來的,當(dāng)然這種需求很少,但不是沒有,現(xiàn)在我們就可以這樣使用

還有很多作用,如type標(biāo)簽調(diào)用欄目簡(jiǎn)介,等等

另一種DEDEcms5.7搜索結(jié)果頁(yè)面中調(diào)用自定義字段處理辦法
默認(rèn)dedecms搜索頁(yè)面是沒法使用 [field:price/] 來調(diào)用 dede_addonshop 里面的 price 字段, 解決方法: 修改 include/arc.searchview.class.php 第一處: 將大約 320 行地方的代碼: if($this-ChannelType 0 || $this-ChannelTypeid 0){ if($this-ChannelType==0) $id=$this-Cha
默認(rèn)dedecms搜索頁(yè)面是沒法使用[field:price/]來調(diào)用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} $ordersql limit $limitstart,$row”;
好了,可以在search.htm中使用[field:price/]了,只要你的模型有附加表,你就可以使用表里的任何字段
另外注意:如果附加表里有字段名和主表字段名一樣的,使用[field:xxxx/]的結(jié)果是未定義的



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
主站蜘蛛池模板: 洛浦县| 永城市| 塘沽区| 宁乡县| 武宣县| 齐河县| 崇明县| 武冈市| 大化| 务川| 武平县| 玉田县| 奇台县| 镇康县| 伊金霍洛旗| 巴塘县| 禹城市| 沙湾县| 林甸县| 游戏| 牟定县| 新昌县| 北川| 宁强县| 新野县| 邵东县| 阳山县| 陕西省| 沁源县| 嘉荫县| 闻喜县| 阿拉尔市| 高安市| 河源市| 德昌县| 瑞安市| 新巴尔虎左旗| 宣武区| 沂源县| 玉田县| 上蔡县|