dede search.htm 搜索页面 调用自定义字段

首先在extend.func.php里添加一个函数function Search_addfields($id,$result){global $dsql;$row4 = $dsql->GetOne(“SELECT * FROM `#@__addonshop22` where aid=’$id'”);// #@__addonshop22是你内容模型的表名称,这里需要填你自己的内容模型名,by sonlin @2011.12.29$name=$row4[$result];return $name;}然后在arc.searchview.class.php里找到“ //处理一些特殊字段”,比如内容模型的自定义字段为weight,那就在下边添加下边这句代码:$row[“weight”]=Search_addfields($row[“id”],”weight”);

简介:内容模型管理 自定义搜索advancedsearch自定义搜索页面,搜索的结果页想调用自定义的模型里面的自定义字段却显示不出来,解决办法如下: 1.修改puls/advancedsearch.php文件,找到代码 } else { $query = SELECT main.id AS aid,main.*,main.description AS description1, type.* FROM $maintable main LEFT JOIN sqarctype type ON type.id = m

“内容模型管理 > 自定义搜索”advancedsearch自定义搜索页面,搜索的结果页想调用自定义的模型里面的自定义字段却显示不出来,解决办法如下:

1.修改puls/advancedsearch.php文件,找到代码

} else {
    $query = "SELECT main.id AS aid,main.*,main.description AS description1, type.* 
    FROM $maintable main 
    LEFT JOIN sqarctype type ON type.id = main.typeid 
    LEFT JOIN $addontable addon ON addon.aid = main.id 
    $where  $orderby";
    }


在select后面增加”addon.*,”

修改后应该是复制代码

} else {
   $query = "select addon.*,main.id AS aid,main.*,main.description AS description1, type.* 
   FROM $maintable main 
   LEFT JOIN sqarctype type ON type.id = main.typeid 
   LEFT JOIN $addontable addon ON addon.aid = main.id 
   $where  $orderby";
   }

 

2. 自定义字段也就是添加了个附加的表,要获取附加表内容,必须符合两个条件:1指定 channelid 属性 2指定要获得的字段 addfields=’字段1,字段’

   修改搜索的结果页模板文件,在plus/advancedsearch.htm,{dede:datalist}中直接调用{dede:field.字段名称/}就OK了 addfields属性意思,添加附加字段查询。

例:

dede:arclist addfields='附加字段1,附加字段2,附加字段3' row='8' channelid='内容模型id号'}
[field:textlink /]   [field:附加字段1/]   [field:附加字段2/]<   [field:附加字段3/]<<br />
{/dede:arclist}
(一)根据自定义字段,精确查询


后台 - 核心 - 内容模型管理


根据你添加字段的频道,点击右边红色框内按钮,进入






此地以 自定义字段 测试1 测试2 为例,然后粘贴到你需要搜索的模板中,样式自行调整




搜索后发现,系统I自带的页面非常丑,想用自己的模板怎么办?
找到plus/advancedsearch.php
找到末尾如下代码
if(file_exists(DEDEROOT."/templets/default/$template"))
{
    $templatefile = DEDEROOT."/templets/default/$template";
}
else
{
    $templatefile = DEDEROOT."/templets/default/advancedsearch.htm";
}

红色标注为系统默认模板路径,根据自己模板修改即可(备注:advancedsearch.htm 需要拷贝到自己模板下)
这就完成了,自定义字段精确查询




(二)头部,尾部标签无法识别! 无法设别channel 或者 channelartlist
解决方法如下
在advancedsearch.htm 头部标签 换成<?php pasterTempletDiy("default/head.htm");?> 
尾部标签 换成 <?php pasterTempletDiy("default/footer.htm");?>

 /include/extend.func.php最后边增加




 function pasterTempletDiy($path) 

{ 

  require_once(DEDEINC."/arc.partview.class.php"); 

  global $cfg_basedir,$cfg_templets_dir; 

  $tmpfile = $cfg_basedir.$cfg_templets_dir."/".$path;//模版文件的路径 

  $dtp = new PartView(); 

  $dtp->SetTemplet($tmpfile); 

  $dtp->Display(); 

}


这样就搞定了






(三)在advancedsearch.htm 无法时调用自定义字段!解决方法如下


/plus/advancedsearch.php



找到如下代码:


if($mid < -1)
    {
        $where = str_replace('main.', 'addon.', $where);
        $orderby = str_replace('main.', 'addon.', $orderby);
        $query = "SELECT addon.*, arctype.* FROM $addontable addon 
        LEFT JOIN #@__arctype arctype ON arctype.id = addon.typeid
        $where $orderby";
    } else {
        $query = " SELECT main.id AS aid,main.*,main.description AS description1, type.* 
    FROM $maintable main 
    LEFT JOIN #@__arctype type ON type.id = main.typeid 
    LEFT JOIN $addontable addon ON addon.aid = main.id 
    $where  $orderby";
    }


红色部分改成 SELECT addon.*,
在模板中调用{dede:field.自定义字段/}即可

未经允许不得转载:淏予工作室 » dede search.htm 搜索页面 调用自定义字段

赞 (2) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏