关闭

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

标签: SharePoint 2013客户化Customize搜索结果Search result-搜索结果类型Search Result显示模版Dispaly template
4703人阅读 评论(1) 收藏 举报
分类:

本文将描述如何使用显示模版(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" onmouseover="_#= ctx.currentItem_ShowHoverPanelCallback =#_" onmouseout="_#= 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" onmouseover="_#= ctx.currentItem_ShowHoverPanelCallback =#_" onmouseout="_#= 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排除在外

   

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:593721次
    • 积分:8786
    • 等级:
    • 排名:第2150名
    • 原创:261篇
    • 转载:26篇
    • 译文:3篇
    • 评论:199条
    自我介绍
    专注于SharePoint+BI 及.net平台的一码农。微软SharePoint server 方向MVP https://mvp.microsoft.com/en-us/mvp/Cheng%20Cheng-5000549
    个人联系信息
    博客http://blog.csdn.net/farawayplace613
    电子邮件:271722535@qq.com
    文章分类
    最新评论