0

開発者の皆様、こんにちは!!!

magento のフッターですべてのcms/blocksを取得するために、 footer.phtmlで以下のコマンドを使用しています。

 <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('home')->toHtml();?>


<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('contact')->toHtml();?>


<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blog')->toHtml();?>

上記のコードの繰り返しを避けるために、すべてのブロック( home 、 contact 、 blog など)を取得するために何らかのループを見つけることができるかどうか疑問に思います...

なにか提案を ?

4

3 に答える 3

2

あなたが求めているのが純粋なコードの再利用である場合、このようなものが機能します

<?php $_blocks = array('home','contact','block'); ?>
<?php foreach($_blocks as $_blockName): ?>
    <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($_blockName)->toHtml();?>
<?php endforeach; ?>

$_blocks新しいブロック名を配列 に追加するだけです。

このようなものを使用して、すべてのブロックに対してこれを行うこともできます

    <?php $_blocks = Mage::getModel('cms/block')->getCollection(); ?>
    <?php foreach($_blocks as $_block): ?>
        <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($_block->getIdentifier())->toHtml();?>
    <?php endforeach; ?>

しかし、他の人が述べたように、システムに新しいブロックが追加された場合、それは悪い考えのようです。

于 2013-10-21T14:39:43.550 に答える
1

この投稿が役立つ場合があります: Magento - 無制限の CMS 静的ブロック (特定の「識別子」を含む) の結果を CMS ページに返す方法

すべての cms ブロックを取得するためにコレクションを使用でき、それらをフィルタリングすることもできます。

于 2013-10-21T14:15:43.453 に答える