转:MSDN Visual系列:MOSS企业级搜索之一——在搜索中心里创建自定义搜索页面和标签选项卡...

MSDN Visual系列:MOSS企业级搜索之一——在搜索中心里创建自定义搜索页面和标签选项卡

原文:http://msdn2.microsoft.com/en-us/library/bb428855.aspx

搜 索中心是MOSS默认带的一种新型的站点模版。如果我们创建协作门户站点,也会默认带了一个搜索中心。该类型站点的目的就是替代一般门户中使用的页面顶部 的搜索框,为用户提供更加可定制化的搜索体验。搜索中心现在有两个版本:简洁型搜索中心和带标签的搜索中心。简洁型搜索中心通常被添加在一个发布功能没有 被启用的网站集中。比如一个只有小组协作站点的网站集。带标签的搜索中心通过基于标签(Tabs)的用户界面可以提供完整的定制化支持。但是它要求发布功 能必须启用。在协作门户中这是默认的。本文包括两种定制,都是针对带标签的搜索中心而言的。一个是如何添加自定义的搜索页面和标签;另一个是如何替换现有 的搜索结果用的XSLT,变成我们的自定义XSLT。

搜索结果页面上有许多WebPart,都是用于搜索结果显示的。其中一个名为搜索核 心结果(Search Core Results)的WebPart,该WebPart有很多的属性,用来配置和定制该WebPart。其中最重要的一项,就是我们想要定制的XSLT了。 该属性用来将搜索引擎返回的XML搜索结果转换成HTML的形式,并在WebPart的内容区域中展现出来。我们可以用我们自己的XSLT来替换掉它。

用于显示原始XML形式的搜索结果的XSLT

用下面的xslt可以使搜索核心结果WebPart显示搜索结果中包含的原始形态的XML,没有应用任何转换。

< xsl:stylesheet  version ="1.0"
  xmlns:xsl
="http://www.w3.org/1999/XSL/Transform" >
 
< xsl:output  method ="xml"  version ="1.0"  encoding ="UTF-8"  indent ="yes" />
 
< xsl:template  match ="/" >
  
< xmp >< xsl:copy-of  select ="*" /></ xmp >
 
</ xsl:template >
</ xsl:stylesheet >

一个自定义搜索结果xslt的示例

使用SharePoint Designer,我们可以利用刚刚输出的原始形态的xml来创建一个自定义的xslt。利用SharePoint Designer强大而丰富的xslt设计体验,我们可以为数据视图WebPart生成xslt。用这个生成的xslt就可以替换默认的搜索核心结果 WebPart中的xslt。

< xsl:stylesheet  version ="1.0"  exclude-result-prefixes ="xsl msxsl ddwrt"  xmlns:ddwrt ="
  http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
 xmlns:asp =
  "http://schemas.microsoft.com/ASPNET/20"
 xmlns:__designer =
  "http://schemas.microsoft.com/WebParts/v2/DataView/designer"
 xmlns:xsl =
  "http://www.w3.org/1999/XSL/Transform"
 xmlns:msxsl ="urn:schemas-microsoft-com:xslt"  
  xmlns:SharePoint
="Microsoft.SharePoint.WebControls"  xmlns:ddwrt2 =
  "urn:frontpage:internal"
>
 
< xsl:output  method ="html"  indent ="no" />
 
< xsl:decimal-format  NaN ="" />
 
< xsl:param  name ="FileName"  />
 
< xsl:param  name ="dvt_apos" > ' </ xsl:param >
 
< xsl:variable  name ="dvt_1_automode" > 0 </ xsl:variable >    
 
< xsl:template  match ="/"
  xmlns:asp
="http://schemas.microsoft.com/ASPNET/20"  xmlns:__designer =
  "http://schemas.microsoft.com/WebParts/v2/DataView/designer"
 xmlns:SharePoint =
  "Microsoft.SharePoint.WebControls"
>
  
< xsl:call-template  name ="dvt_1" /></ xsl:template >
  
< xsl:variable  name ="dvt_2_automode" > 0 </ xsl:variable >  
  
< xsl:variable  name ="dvt_5_automode" > 0 </ xsl:variable >
  
< xsl:template  name ="dvt_1" >
  
< xsl:variable  name ="dvt_StyleName" > 2ColFrm </ xsl:variable >
  
< xsl:variable  name ="Rows"  select ="/All_Results/Result"  />
  
< table  border ="1"  width ="100%" >
   
< tr >
    
< xsl:call-template  name ="dvt_1.body" >
      
< xsl:with-param  name ="Rows"  select ="$Rows"  />
    
</ xsl:call-template >
   
</ tr >
  
</ table >
 
</ xsl:template >
 
< xsl:template  name ="dvt_1.body" >
  
< xsl:param  name ="Rows"  />
  
< xsl:for-each  select ="$Rows" >
    
< xsl:sort  select ="author"  order ="ascending"  />
    
< xsl:call-template  name ="dvt_1.rowview"  />
  
</ xsl:for-each >
 
</ xsl:template >
 
< xsl:template  name ="dvt_1.rowview" >
   
< td  valign ="top"  width ="50%" >
     
< table  border ="0"  cellspacing ="0"  width ="100%" >
      
< tr >
       
< td  width ="25%"  valign ="top"  class ="ms-vb" >< b > title: </ b ></ td >
       
< td  width ="75%"  class ="ms-vb" >
         
< href ="{url}" >< xsl:value-of  select ="title"  /></ a >
       
</ td >
      
</ tr >
      
< tr >
       
< td  width ="25%"  class ="ms-vb" >< b > author: </ b ></ td >
       
< td  width ="75%"  class ="ms-vb" >< xsl:value-of  select ="author"  />
       
</ td >
      
</ tr >
      
< tr >
       
< td  width ="25%"  class ="ms-vb" >< b > write: </ b ></ td >
       
< td  width ="75%"  class ="ms-vb" >
        
< xsl:value-of
              
select ="ddwrt:FormatDate(string(write) ,1033 ,3) />
       </td>
      </tr>
      <xsl:if test="
$dvt_1_automode  = '1'"  ddwrt:cf_ignore ="1" >
        
< tr >
         
< td  colspan ="99"  class ="ms-vb" >
            
< span  ddwrt:amkeyfield =""  ddwrt:amkeyvalue ="string($XPath)"
              ddwrt:ammode
="view"  />
         
</ td >
        
</ tr >
      
</ xsl:if >
     
</ table >
   
</ td >
   
< xsl:if  test ="position() mod 2 = 0"  ddwrt:cf_ignore ="1" >
    
< xsl:text  disable-output-escaping ="yes" > &lt; /tr &gt; </ xsl:text >
    
< xsl:if  test ="position() != last()"  ddwrt:cf_ignore ="1" >
     
< xsl:text  disable-output-escaping ="yes" > &lt; tr &gt; </ xsl:text >
    
</ xsl:if >
   
</ xsl:if >
   
< xsl:if  test ="position() = last()"  ddwrt:cf_ignore ="1" >
    
< xsl:if  test ="position() mod 2 != 0"  ddwrt:cf_ignore ="1" >
     
< td >
      
< xsl:text  disable-output-escaping ="yes"
       ddwrt:nbsp-preserve
="yes" > &amp; nbsp; </ xsl:text >
     
</ td >
    
</ xsl:if >
   
</ xsl:if >
 
</ xsl:template >
</ xsl:stylesheet >

下图是应用了该xslt后展示的搜索结果。

我们通常需要在搜索中心里创建额外的选项卡。一个选项卡与一个基于某个可用的搜索页面布局创建的页面相关联。

现在,我们创建一个自定义搜索选项卡和一个自定义搜索结果页面。

  1. 点选“搜索”标签,进入搜索中心。
  2. 点“网站操作”,选创建页面。
  3. 输入标题。
  4. 在下面的页面布局中选择搜索页面。
  5. 发布该页面。
  6. 点“网站操作”,选查看所有网站内容。
  7. 点搜索页面中列出的标签,点新建。然后添加新的项目用于展示我们的新标签。
  8. 提供一个名称并将它与我们先前创建的自定义搜索页面关联起来。
SharePoint可以将搜索结果显示在自定义的搜索结果页面中,而不是使用默认的搜索结果页。

创建一个自定的搜索结果页面,并与自定义的标签连接起来
  1. 点选“搜索”标签,进入搜索中心。
  2. 点“网站操作”,选创建页面。
  3. 输入标题。
  4. 在下面的页面布局中选择搜索结果页面。
  5. 发布该页面。
  6. 点选我们刚刚创建的自定义标签,选“网站操作”,选编辑网页。
  7. 在搜索框WebPart上,点修改共享Web部件,打开属性面板。
  8. 在杂项类中,找到“目标搜索结果页URL地址”文本框。输入我们自定义的搜索结果页的名称。
  9. 确定并发布该页面。

当一个搜索查询执行后,结果就会以xml格式传递给搜索核心结果WebPart。搜索核心结果WebPart使用xslt来转换xml成为html,然后显示到WebPart的Body中。

替换xslt

  1. 进入自定义搜索结果页面。
  2. 点“网站操作”,选编辑网页。
  3. 在搜索核心结果WebPart上,点修改共享Web部件,打开属性面板。
  4. 在数据视图属性下,找到修改xslt的按钮,打开文本编辑器。
  5. 用我们自己的xslt替换该xslt。
  6. 确定并发布该页。

查看视频

转载于:https://www.cnblogs.com/wenjielee/archive/2010/12/29/1921111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值