循环遍历Concrete5中的各个块

时间:2013-05-09 09:32:22

标签: loops block area concrete5

我有一个Concrete5模板,它定义并输出一个内容区域:

$a = new Area('Content');
$a->display($c);

这将输出该内容区域内的所有块,但是我想从该区域循环每个块并单独输出。

有办法做到这一点吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我相信自己已经弄明白了,这是我用过的代码:

$blocksInArea = Page::getCurrentPage()->getBlocks('Content');

foreach ( $blocksInArea as $block ) {

    $this_block = Block::getByID($block->bID);
    $this_block->display();

}

代码改编自code on the C5 forums

答案 1 :(得分:1)

有一种更有效的方法(比在论坛帖子中找到的更有效):

$blocks = $c->getBlocks('Content');
foreach ($blocks as $b) {
    $b->display();
}

虽然我不确定你为什么要这样做 - 在区域内调用display($c)也会做同样的事情。

有一点需要注意:如果该区域中存在“区域布局”,则无法正常工作。为此,你需要变得更复杂......你可以通过查看我的免费“页面列表预告片”插件中的代码来了解我是如何做到这一点的:http://www.concrete5.org/marketplace/addons/page-list-teasers