0

嗨,所有的开发者!!!

我在footer.phtml中使用以下命令来获取 magento页脚中的所有cms/blocks

 <?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();?>

我想知道我是否可以找到某种循环来获取我所有的块(家庭、联系人、博客等),以避免重复上述代码......

有什么建议吗?

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 回答
0

你不能。或者您必须为它编写自己的函数。

于 2013-10-21T14:12:19.123 回答