我有一个 Concrete5 模板,它定义并输出了一个内容区域:
$a = new Area('Content');
$a->display($c);
这会输出该内容区域内的所有块,但是我想从该区域循环遍历每个块并单独输出。
有没有办法做到这一点?
谢谢。
我相信我自己已经弄清楚了,这是我使用的代码:
$blocksInArea = Page::getCurrentPage()->getBlocks('Content');
foreach ( $blocksInArea as $block ) {
$this_block = Block::getByID($block->bID);
$this_block->display();
}
代码改编自C5 论坛上的代码。
有一种更有效的方法可以做到这一点(比您在该论坛帖子中找到的更有效):
$blocks = $c->getBlocks('Content');
foreach ($blocks as $b) {
$b->display();
}
虽然我不确定你为什么要这样做——调用display($c)
该区域本身会做同样的事情。
需要注意的一件事:如果该区域有“区域布局”,这将无法正常工作。为此,您需要变得更复杂......您可以通过查看我的免费“页面列表预告片”插件中的代码来了解我是如何做到这一点的:http: //www.concrete5.org/marketplace/addons/页面列表预告片