【问题标题】:How to write a php loop in Magento footer?如何在 Magento 页脚中编写一个 php 循环?
【发布时间】:2013-10-30 01:27:51
【问题描述】:

向所有的开发者致敬!!!

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

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

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

有什么建议吗?

【问题讨论】:

  • 如果您想使用不想出现在页脚中的块怎么办?
  • @Karl true :) 但没有进一步的区块计划。

标签: php css magento loops magento-1.7


【解决方案1】:

如果你追求的是纯代码重用,那么这样的东西会起作用

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

但正如其他人所提到的,如果将新块添加到系统中,这似乎是个坏主意。

【讨论】:

    【解决方案2】:

    这篇文章可能会有所帮助: Magento - How do you return results of unlimited CMS Static blocks (with certain "Identifier") to a CMS Page

    您可以使用集合来获取所有 cms 块,也可以过滤它们。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-21
        • 2016-10-17
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        • 2011-08-26
        • 2018-11-06
        • 2015-11-01
        相关资源
        最近更新 更多