在SharePoint站点上实现FAQ的最佳方法

时间:2011-01-20 19:36:31

标签: sharepoint

在SharePoint网站集上实施FAQ页面的最佳或常用方法是什么?

3 个答案:

答案 0 :(得分:16)

我们过去做过的事情:

  1. 创建自定义列表
  2. 将标题栏重命名为提问
  3. 添加一个类型为多行文字的新列,并将其命名为Answer
  4. 修改默认视图以仅显示这两列,并将样式设置为“新闻稿”
  5. 你最终得到的结论是:

    alt text

    然后,您可以使用listview webpart将其放在页面上。

    更新:我在我的博客上用SharePoint 2010示例写了这个:http://thechriskent.com/2012/03/09/simple-sharepoint-faq-in-5-minutes/

答案 1 :(得分:1)

另一种可能的解决方案 - 使用预览窗格样式选项,您可以在左侧列中找到问题列表,然后鼠标悬停显示(选定)字段。

我有Q的答案很长,所以我认为在某些情况下这可能会更好(直到它可以在个别记录级别或某个字段上使用手风琴)。

enter image description here

答案 2 :(得分:1)

建议在SharePoint列表中存储FAQ条目的解决方案。 它包括:

  • 自定义常见问题解答列表模板,其内容类型包含问题答案字段
  • 常见问题列表视图,用于呈现为Accordion

FAQ List View 图1.带有Accordion View的常见问题列表(SharePoint 2013)

FAQ List View 图2.使用Accordion View的常见问题列表(SharePoint 2010)

实施

1为FAQ条目创建自定义内容类型

<ContentType ID="0x0100fb1027dc96a44bf280f6cb823a8da5ae"
               Name="FAQ"
               Group="SE"
               Description="FAQ Content Type"
               Inherits="TRUE"
               Version="0">
    <FieldRefs>
      <FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Question" Sealed="TRUE"/>
      <FieldRef Name="LinkTitleNoMenu" ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" DisplayName="Question" Sealed="TRUE"/>
      <FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Question" Sealed="TRUE"/>
      <FieldRef ID="{b0747420-54bc-41b2-a1b3-8432f2dbdc70}" Name="Answer"/>
    </FieldRefs>
  </ContentType>

2创建FAQ列表的客户端呈现视图(适用于SharePoint 2013)

(function () {
   loadCss('http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/themes/redmond/jquery-ui.css');
   function OnAccordionViewPostRender(renderCtx) {

     jQuery(function() {
         jQuery( "#accordionFAQ" ).accordion();
     });

   }



    function loadCss(url){
     var link = document.createElement('link');
     link.href = url;
     link.rel = 'stylesheet';
     document.getElementsByTagName('head')[0].appendChild(link);
   }


   function OnAccordionViewPreRender(renderCtx) {
   }

   function RenderAccordionViewBodyTemplate(renderCtx) {
         var listData = renderCtx.ListData;
         if (renderCtx.Templates.Body == '') {
             return RenderViewTemplate(renderCtx);
         }
         var accordionHtml ='';

         accordionHtml = '<div id="accordionFAQ">';
         for (var idx in listData.Row) {
                var listItem = listData.Row[idx];
                accordionHtml += '<h3>';
                accordionHtml += listItem.Title;
                accordionHtml += '</h3>';
                accordionHtml += '<div>';
                accordionHtml += listItem.Answer;
                accordionHtml += '</div>';
         }

         accordionHtml += '</div>';


         return accordionHtml;
   }


     function _registerAccordionViewTemplate() {

            var accordionViewContext = {};

            //accordionViewContext.BaseViewID = 'Accordion';
            accordionViewContext.Templates = {};
            accordionViewContext.Templates.View = RenderAccordionViewBodyTemplate;
            accordionViewContext.OnPreRender = OnAccordionViewPreRender;
            accordionViewContext.OnPostRender = OnAccordionViewPostRender;
            SPClientTemplates.TemplateManager.RegisterTemplateOverrides(accordionViewContext);
        }
        ExecuteOrDelayUntilScriptLoaded(_registerAccordionViewTemplate, 'clienttemplates.js');

})();

3通过JSLink

将客户端呈现模板应用于现有视图

有关创建常见问题列表的详细信息,请参阅以下帖子: