考虑一个加载静态块内容的标准 Magento 块。如果我想从该块中解析出任何小部件(或就此而言,任何其他 CMS 声明),是否有必要构造一个执行标准 preg_match 类型操作的方法来解析这些字符串,或者我能够使用内置-in 方法来获取每个声明并将其添加到我自己的数组/对象中?
查看处理这些声明的正常解析的“widget/template_filter”类,我能找到的唯一可能证明有用的方法是 Varien/Template.php 中受保护的 _getIncludeParameters() 方法。
现在已经很晚了,所以我想我明天会用更多细节更新这个问题。
- 编辑 -
呃……第二天读了这篇文章,我当然措辞很差。我责怪我的女朋友。
更好的表达方式是......
考虑以下静态块:
<?php $block = Mage::getModel('cms/block')->setStoreId(Mage::app()->getStore()->getId())->load('my_static_block') ?>
<?php $content = $block->getContent() ?>
$content 会给我未解析的内容,cms/widget 声明仍然完好无损,例如:
{{widget type="my/widget" template="my/template.phtml"}}
现在我只想将此声明转换回一个对象(或者更恰当地说,我将有几个 {{widget}} 声明我想放入一个数组中),以便我可以检查参数值,做其他工作等,如:
<?php foreach ($content->getWidgets() as $widget) : ?>
<?php echo $widget->getValue() ?>
<?php endforeach; ?>