如何根据另一个组件的存在有条件地将类添加到 Magnolia 组件模板?

Posted

技术标签:

【中文标题】如何根据另一个组件的存在有条件地将类添加到 Magnolia 组件模板?【英文标题】:How to conditionally add a class to a Magnolia component template based on the presence of another Component? 【发布时间】:2019-10-01 19:15:50 【问题描述】:

仅当内容编辑器选择将字幕组件添加到页面时,我想将一个类应用于我在 Magnolia 中的标题组件。我在下面尝试做的示例:

[#assign subtitle = "somehow get a reference to the subtitle component"]
[#assign subtitleExists = subtitle?has_content]
<div class="title $subtitleExists?then('removePadding','')">
  $model.render('titleCopy')!
</div>

这可能吗?如果需要,我很高兴添加更多信息以帮助澄清我在这里尝试做的事情。谢谢!

【问题讨论】:

【参考方案1】:

组件是原子的,因此它们通常看不到彼此,也不会相互影响。那将是对组件或父组件或页面本身进行分组的区域的工作。

也就是说,如果页面和模板的结构不允许您使用任何其他解决方案,您可以通过字幕组件中的请求属性设置一些标志,然后检查组件中是否存在所述标志。 一边是ctx.setAttribute("subtitleExists", true, 1),另一边是ctx.getAttribute("subtitleExists")。 1 代表属性的本地(请求)范围。

【讨论】:

以上是关于如何根据另一个组件的存在有条件地将类添加到 Magnolia 组件模板?的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将属性保存到 DFM?

如何将类成员变量传递给另一个组件角度?

根据 p 值有条件地将 geom_smooth 添加到 ggplot 构面

有条件地将道具传递给组件

Thymeleaf - 如何有条件地将选中的属性添加到输入

有条件地将子组件导入到父模板 angular 5