您的位置: 首页 >日志>前端技术>详细内容

前端技术

原创:超实用!单系统多“子站”时的搜索页模板解决方案

来源:本站原创 发布时间:2012-04-28 12:12:01 浏览次数: 【字体:

————首先感谢猫哥[动易设计志弘],没有他的技术指导,这个事情就浮云了,也是他授权我写这篇分享。必看啊亲们!

  我想输出的童鞋应该遇到过类似的情况,但由于项目的不同,客户的要求不同,最终项目走向也不同;以前也遇到类似的情况,但后来客户却说把子站的搜索给去掉,再后来……就没有后来了,结束了。

  看上图节点情况,这次做YBTJJ就决定试试做出来,问了几位同事,提供的想法都不同。

  现在就介绍一下这个办法,作为伸手党之一,大家放心拿走使用:

  1.原理:

·利用复制出来的search.aspx文件复制出对应子站的,search1.aspx,search2.aspx,search3.aspx;
·那么与主站一起算就是4个searchN.aspx文件了;
·然后对应的aspx绑定对应的子站搜索页模板.html(打开FrontTemplateList.config里面绑定);
·修改各个子站对应的搜索标签和SQL语句,搜索地址限制对应的“子站”节点ID及其子节点,主站则排除“子站”的ID及其子节点。

——原理理解的话,应该可以关闭本文了,如果伸手党不理解,可以看下面的实操,直接使用——

  2.实操!:

·到网站根目录下找到search.aspx,复制对应的文件数量;
·

然后到config下打开FrontTemplateList.config,绑定对应的aspx和你的子站搜索页模板

·这里以search1.aspx为例:
复制一个标签“全站搜索按标题.config”,命名为“全站搜索按标题1.config”以便与原来的区分开,打开“全站搜索按标题1.config”,添加属性值nodes,如图:

,并修改该标签的SQL语句,如图:

两处地方都是同一句:AND NodeID IN ( )

·再到对应的“子站A搜索结果页.html”模板中添加列表标签属性(黄色高亮):
{PE.Label id="全站搜索按标题1" bindStyle="普通式" nodes="{PE.Label id="取得子节点集" nodeId="@RequestInt_nodeId" /}" outputQty="20" titleLength="70" split="5" displayDateTime="mm-dd" displayTips="true" usePage="true" keyword="@Request_keyword" /}

·再打开搜索功能的JS代码段,修改搜索地址的传值,填写你的“子站”节点ID,如图:

记得修改search.aspx为search1.aspx,对应好绑定的模板,后面传值加上&nodeId=xx

  至此,子站的修改已完成!子站B、子站C等等只需要修改搜索页模板的标签调用、JS的搜索页地址和传值,即可。

 

  疑问:子站现在可以排除掉主站的文章了,那么主站怎么排除子站呢?道理一样的,不过要多改一个小地方……

  实操!:

·主站使用的“全站搜索按标题.config”也一样加入nodes新属性值(不配图了),SQL语句如图

第一句变成NOT IN,第二句不变;

·“主站搜索页模板.html”的对应列表标签:{PE.Label id="全站搜索按标题" bindStyle="普通式" nodes="{PE.Label id="取得子节点集" nodeId="@RequestInt_nodeId" /}" outputQty="20" titleLength="70" split="5" displayDateTime="mm-dd" displayTips="true" usePage="true" keyword="@Request_keyword" /}

·修改JS的搜索地址传值:

因为是主站排除子站,所以就写上两个子站的节点ID咯:&nodeId=xx&nodeId=xx

·结果你以为OK的时候,去主站搜一下,发现出错了,是传值不能解释的问题,最后一个修改来啦!打开config目录下的“QueryStrings.config”,如图:

找到search.aspx的nodeid,把原先的datatype由Int改成String,大功告成!

 

————如果需要地址看效果,请内部交流

×

用户登录