静的ブロックのコンテンツを読み込む標準の Magento ブロックを考えてみましょう。そのブロックからウィジェット (またはその他の CMS 宣言) を解析したい場合、これらの文字列を解析するために標準の preg_match タイプの操作を行うメソッドを構築する必要がありますか、それともビルド済みを使用できますか? -各宣言を取得して自分の配列/オブジェクトに追加するメソッドで?
これらの宣言の通常の解析を処理する「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}} 宣言がいくつかあります)。これにより、param 値をチェックしたり、他の作業を実行したりできます。そのような:
<?php foreach ($content->getWidgets() as $widget) : ?>
<?php echo $widget->getValue() ?>
<?php endforeach; ?>