如何通过PnP搜索定位Modern SharePoint折叠FAQ版块并展开
默认情况下,Modern SharePoint搜索仅返回页面级结果,无法直接定位到页面内的折叠FAQ条目,但可以通过调整PnP搜索配置+页面结构化改造实现需求,具体步骤如下:
1. 明确FAQ版块的实现类型
- 若使用原生Accordion Web Part:每个折叠项内容存储在页面富文本中,搜索能抓取内容但无法直接定位到单个项;
- 若为基于列表的FAQ展示(比如用自定义列表存储FAQ条目,再通过Web Part渲染折叠效果):可直接针对列表项做搜索,精准度更高。
2. PnP搜索的查询配置
场景1:Accordion Web Part实现的FAQ
- 给每个折叠项添加锚点:编辑页面,切换到代码编辑模式,在每个FAQ折叠项的标题前插入HTML锚点:
<a name="faq-权限设置"></a> - 配置PnP搜索查询:在PnP Search Web Part的查询设置中,使用自定义查询过滤包含目标关键词的页面:
contentclass:STS_ListItem_WebPageLibrary AND body:"目标FAQ关键词" - 自定义搜索结果模板:修改结果模板,让搜索结果链接指向带锚点的页面URL,示例:
<a href="{SiteUrl}{Path}#faq-权限设置">{Title}</a>
场景2:基于列表的FAQ
- 确保FAQ列表字段可索引:在列表设置中,将FAQ的标题、内容字段设置为“可搜索”;
- 配置PnP搜索查询:直接针对FAQ列表项搜索,查询语句示例:
ListId:【你的FAQ列表ID】 AND (Title:"关键词" OR Body:"关键词") - 结果模板关联折叠项:若列表项对应页面上的某个折叠项,在结果链接中加入锚点,实现跳转后定位到目标位置。
3. 实现折叠项自动展开
针对原生Accordion Web Part,需添加少量自定义脚本(需确保站点允许自定义脚本,或通过SPFx扩展实现):
window.addEventListener('load', function() { const hash = window.location.hash.substring(1); if (hash) { const accordionItem = document.querySelector(`[data-automation-id="accordionItem-${hash}"]`); if (accordionItem) { accordionItem.querySelector('button').click(); } } });
将脚本嵌入页面(比如用Script Editor Web Part或SPFx),当用户从搜索结果跳转到带锚点的URL时,自动触发对应折叠项的展开动作。
内容的提问来源于stack exchange,提问作者Ketih Carpenter
相关产品推荐
相关产品推荐

