如果部分中的摘要块为空,则隐藏 Squarespace 页面部分

Hide Squarespace page sections if summary block in section is empty

您好,我正在尝试解决一个独特的 Squarespace 问题。

我正在构建一个客户站点,该站点将通过带有标签过滤器的摘要块向页面提供内容。摘要块包含在提供摘要块内容的标题和描述的页面部分中。如果摘要块没有 return 任何内容,我想隐藏包含标题、描述和摘要块的页面部分。

我的 Java 脚本很生疏!是否有任何支持人员可以帮助我开发此脚本?

提前致谢!

像这样的东西,通过站点范围的代码注入插入应该可以解决问题:

<script>
document.addEventListener("DOMContentLoaded", function() {
  var summarySectionIds = [
    "5fa5f5230814705318de86d4",
    "5fb3d5c28ae3d9089a29f66f"
  ]
  var i, s, sb;
  
  if (document.body.classList.contains("sqs-edit-mode")) {
    return;
  }
  
  i = summarySectionIds.length;
  while(i--) {
    s = document.querySelector("[data-section-id='" + summarySectionIds[i] + "']");
    if (!s) {
      continue;
    }
    sb = s.getElementsByClassName("sqs-block-summary-v2");
    if (sb.length == 0) {
      s.style.display = "none";
    }
  }
});
</script>

请注意,上述解决方案要求您获取您希望其中包含摘要块的每个部分的部分 ID,并将其添加到数组 summarySectionIds。这意味着您必须在添加新的摘要块部分时更新代码中的这个区域。

据我所知,这是必要的,因为 Squarespace 删除了摘要块的任何痕迹(如果它是空的)。

另一种选择是确保您始终以完全相同的方式(使用 Squarespace 的布局列)布置包含摘要块的部分,并且只将该布局用于摘要块部分。然后您可以通过它们的 HTML 来识别摘要块部分,而不是维护一个 ID 列表。但我的看法是,Squarespace 的“布局引擎”太古怪了,你很难确保它每次的布局都一样,更何况客户也很难做到这一点。

但是,您可以想出一些其他的“技巧”来使用空的 Markdown 或代码块或类似无害的东西来识别这些部分,比如您将空的 div 和 class在 Code/Markdown 块内。在任何情况下,上面代码中的逻辑都是相似的,但会以不同方式标识部分。