1

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

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

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

有没有办法做到这一点?

谢谢。

4

2 回答 2

1

我相信我自己已经弄清楚了,这是我使用的代码:

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

foreach ( $blocksInArea as $block ) {

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

}

代码改编自C5 论坛上的代码

于 2013-05-09T10:11:11.883 回答
1

有一种更有效的方法可以做到这一点(比您在该论坛帖子中找到的更有效):

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

虽然我不确定你为什么要这样做——调用display($c)该区域本身会做同样的事情。

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

于 2013-05-10T15:48:58.683 回答