首先在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 搜索页面 调用自定义字段