SharePoint 2013 客户化(Customize) 搜索结果(Search result)-显示模版(Dispaly template)&搜索结果类型(Search Result Type)

本文将描述如何使用显示模版(Dispaly template)&搜索结果类型(Search Result Type) 来客户化(Customize) SharePoint 2013 搜索结果(Search result)。

显示模版(Dispaly template)是SharePoint 2013的新功能,目的是使用HTML模板来客户化(Customize) SharePoint 2013 搜索结果(Search result),在2007和2010中使用XSLT来客户化搜索结果,需要开发者精通XSLT, 但是问题是 精通XSLT的技术人员并不多,而精通HTML+JavaScript的技术人员很多。基于这个原因微软推出了显示模版(Dispaly template)&搜索结果类型(Search Result Type)。

 

下面介绍详细步骤 :

1. 参考http://blog.csdn.net/farawayplace613/article/details/8426640 创建content type, 配置search navigation

2. 新建显示模板(Dispaly Template)

     a. 打开站点集根站点的站点设置(Site Settings)

     b. 点击 Web Designer Galleries分类下的 Master pages

     c. 进入文件夹 Display Templates-> Search

     d. 下载默认的Item显示模板,并将下载的模板重命名为 Order_Item.html

   

      e. 编辑 Order_Item.html          

          
            <title>Item</title> ===> <title>Order Item</title>

             <div id="Item"> ===> <div id="Item_Order">

            <mso:ManagedPropertyMapping msdt:dt="string">'Title':'Title','Path':'Path','Description':'Description','EditorOWSUSER':'EditorOWSUSER','LastModifiedTime':'LastModifiedTime','CollapsingStatus':'CollapsingStatus','DocId':'DocId','HitHighlightedSummary':'HitHighlightedSummary','HitHighlightedProperties':'HitHighlightedProperties','FileExtension':'FileExtension','ViewsLifeTime':'ViewsLifeTime','ParentLink':'ParentLink','FileType':'FileType','IsContainer':'IsContainer','SecondaryFileExtension':'SecondaryFileExtension','DisplayAuthor':'DisplayAuthor'</mso:ManagedPropertyMapping>

                ===>  

<mso:ManagedPropertyMapping msdt:dt="string">'Title':'Title','Path':'Path','Description':'Description','OrderNoOWSTEXT':'OrderNoOWSTEXT','AmountOWSCURR':'AmountOWSCURR','EditorOWSUSER':'EditorOWSUSER','LastModifiedTime':'LastModifiedTime','CollapsingStatus':'CollapsingStatus','DocId':'DocId','HitHighlightedSummary':'HitHighlightedSummary','HitHighlightedProperties':'HitHighlightedProperties','FileExtension':'FileExtension','ViewsLifeTime':'ViewsLifeTime','ParentLink':'ParentLink','FileType':'FileType','IsContainer':'IsContainer','SecondaryFileExtension':'SecondaryFileExtension','DisplayAuthor':'DisplayAuthor'</mso:ManagedPropertyMapping>

 上面这个改动主要是在 mso:ManagedPropertyMapping 中添加了  'OrderNoOWSTEXT':'OrderNoOWSTEXT','AmountOWSCURR':'AmountOWSCURR'
 

  <div id="_#= $htmlEncode(itemId) =#_" name="Item" data-displaytemplate="DefaultItem" class="ms-srch-item" οnmοuseοver="_#= ctx.currentItem_ShowHoverPanelCallback =#_" οnmοuseοut="_#= ctx.currentItem_HideHoverPanelCallback =#_">
				_#=ctx.RenderBody(ctx)=#_
                <br/>
                
                <div id="_#= $htmlEncode(hoverId) =#_" class="ms-srch-hover-outerContainer"></div>
            </div>

更改为 

<div id="_#= $htmlEncode(itemId) =#_" name="Item" data-displaytemplate="OrderItem" class="ms-srch-item" οnmοuseοver="_#= ctx.currentItem_ShowHoverPanelCallback =#_" οnmοuseοut="_#= ctx.currentItem_HideHoverPanelCallback =#_">
				_#=ctx.RenderBody(ctx)=#_
                <br/>
                <a href="_#=ctx.CurrentItem.Path=#_" class="ReportText">_#= ctx.CurrentItem.Title =#_</a>
                <br/>
                "Amount:" _#= ctx.CurrentItem.AmountOWSCURR =#_
                <br/>
                "Customer:" _#= ctx.CurrentItem.Title =#_
                <br/>
                 "OrderNo:" _#= ctx.CurrentItem.OrderNoOWSTEXT =#_
                <br/>
                <div id="_#= $htmlEncode(hoverId) =#_" class="ms-srch-hover-outerContainer"></div>
            </div>

注意这里HTML代码,大家就可以八仙过海各显神通了。

解释以下_#= ctx.CurrentItem.AmountOWSCURR =#_,这是在Dispaly template 中使用Search Sechema 中的 Managed Property的方法,当创建Site column 时,SharePoint 2013会自动为Site Column创建相应的 Managed Property

 

要确定这些Managed Property是否生效可以在Search Box 中输入Managed Property:value,如

  f. 上传 Order_Item.html至 Display Templates-> Search,Target Control Type(Search)选择 SearchResults

 

3. 创建搜索结果类型Order Result Type

    a. 打开Site settings page(可以是站点集 _layouts/15/manageresulttypes.aspx?level=sitecol 也可以是普通站点/_layouts/15/start.aspx#/_layouts/15/manageresulttypes.aspx?level=site)

    b. 点击新建结果类型(Result Type)

   

   c. 输入Name, 选择 OrderResultSource(如何创建Result Source请参考 http://blog.csdn.net/farawayplace613/article/details/8426640), 选择dispaly template并点击 Save

   

 

  4. 覆盖原 “SharePoint List Item” 结果类型,并将content type 为order的item排除在外

        a. 打开站点集 Site settings page( _layouts/15/manageresulttypes.aspx?level=sitecol)

        b. 在Site Collection Administration分类下,点击 Search Result Type

        c. Copy "SharePoint List Item”

     

 

      d. 将content type 为非order的item排除在外

   

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值