使用 Sitecore 占位符和 SXA 列拆分器组件时如何避免重复 divs.row?

How to avoid duplicate divs.row when using Sitecore placeholders and the SXA Column splitter component?

当结合使用 Sitecore 的 placeholderSXA Column-splitter 时,多个 <div class="row"> added/rendered.这会在我们的布局中导致意外的边距和填充。

问题:

此外,我尝试更改 Sitecore 中的网格设置设置,但我发现的唯一选项是为整个网格以及所有占位符和 SXA 组件全局删除 <div class="row" 的生成。这不是我想要的。

这是我用来制作占位符的代码:

@Html.Sitecore().Placeholder("SomePlaceholder")

当我在其中添加 Sitecore 的 SXA Column-splitter 时,我得到了一个额外的 <div class="row">(如下面浏览器控制台的屏幕截图所示),这导致了问题.

我希望只有一个 <div class="row"> 具有由网格设置的继承边距和填充。 (在我的例子中,Bootstrap 4 网格,在 Sitecore 的网格设置中为我们的 SXA 主题分配)

您可以通过指定要从生成行中排除的某些占位符来修补配置。

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <experienceAccelerator>
      <grid>
        <placeholderWrapper>
            <excludedPlaceholders>
                <placeholder patch:after="body-bottom">utility-links</placeholder>
                <placeholder patch:after="utility-links">login-link</placeholder>
            </excludedPlaceholders>
        </placeholderWrapper>
      </grid>
    </experienceAccelerator>
  </sitecore>
</configuration>

例如在我们使用的视图中:

@Html.Sitecore().Placeholder("utility-links")

@Html.Sitecore().Placeholder("login-link")

我们不希望出现在新的一行中。

有几种方法可以消除浅表行。

  1. 正如 Jen 建议添加一个忽略的占位符以跳过在 Row Splitter 占位符上添加此包装。
  2. 为您的站点自定义 Row Splitter cshtml 视图,以避免在视图中呈现额外的包装器 documented here

但首先要检查的是您的 SXA 版本。我相信这个问题只出现在 SXA 1.8 中(那时我们已经引入了 Bootstrap 4)并随后在 SXA 1.8.1 中得到修复。如果升级到 1.8.1 是一个选项,我绝对会建议。