现在的情况是这样的。我需要创建一个 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>
许可以下: CC-BY-SA归因
scroll top