我有一个Concrete5模板,它定义并输出一个内容区域:
$a = new Area('Content');
$a->display($c);
这将输出该内容区域内的所有块,但是我想从该区域循环每个块并单独输出。
有办法做到这一点吗?
感谢。
答案 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