如果布局中存在 CMS 块,如何将块添加到布局中?
-
11-12-2019 - |
题
现在的情况是这样的。我需要创建一个 core/template
以编程方式阻止,如果有 CMS Block
(Static Block
) 存在于布局结构中。我将使用这个模板动态添加一些内容。
如果有静态块的观察者,我可以使用它。另一种选择是,如果存在静态块特定布局句柄,我可以通过布局实现相同的目标(就像 cms_page
布局句柄)。
但我还找不到任何静态块的观察者。所以我不能和观察者一起去。我还寻找任何静态块特定的布局句柄。那次寻找也让我绝望。我找不到一个。所以布局更新也是不可能的。
所以这似乎是我实现这一目标的唯一方法是观察任何一般事件(可能是 controller_action_layout_generate_blocks_after
)。但我觉得这样太糟糕了..
那么我现在应该做什么呢?最好的方法是什么?我是否需要为静态块创建自定义事件侦听器(我不知道是否可能!!)?分享你的意见。
笔记 : 我正在创建一个扩展。我希望它尽可能干净。:)
解决方案 2
看来,没有其他办法可以做到这一点。所以我听了一般事件 controller_action_layout_generate_blocks_after
。如果 cms 块存在,我会创建新块。
其他提示
也许您可以在 XML 中使用帮助程序并检查其中的条件,在 XML 中执行条件,然后执行相应操作。这可能比用观察者观察每个块负载更好。
这是 执行 XML 方法的答案。
<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
<label>Site Map</label>
<url helper="catalog/map/getCategoryUrl" />
<title>Site Map</title>
</action>