concrete5循环子页面的父级

时间:2013-05-02 11:31:35

标签: navigation parent concrete5

我是concrete5的新手,并且需要循环父节点的子页面(父节点不是当前页面,所以可能需要父节点作为参数传递)。

我希望这很简单,但我发现的一切都与autonav有关。由于网站导航采用非标准格式,我无法使用autonav。

该解决方案不需要打印任何标记 - 只需生成一个slug和标题的PHP数组,然后我可以循环到一些标记。但我会采取任何一种方式:-)提前谢谢!

2 个答案:

答案 0 :(得分:2)

如果您想要某些标记,并希望在某种页面上显示,请查看页面列表块:http://www.concrete5.org/documentation/editors-guide/in-page-editing/block-areas/add-block/page-list/

如果您需要以编程方式创建页面,那么可以使用PageList模型将父页面传递给所有子项,并将所有子项作为Page个对象的数组。https://github.com/concrete5/concrete5/blob/master/web/concrete/core/models/page_list.php

答案 1 :(得分:1)

我刚开始使用混凝土5,我可以说这不是最佳代码。但是它有效,也许它会对你有所帮助,因为其他文章并没有给我太多帮助。

也就是说,如果你有想要获取子页面的页面的ID,你可以这样做:

$page = Page::getByID("page_id_here");
$sub_page_ids = $page->getCollectionChildrenArray(1);
foreach ($sub_page_ids as $id) {
    $page = Page::getByID($id);
    $pages_array[$page->getCollectionName()] = DIR_REL . $page->getCollectionPath();
}

这将输出一个看起来像这样的数组

$pages_array["page-url-here"] = "Title of Page Here"

显然,根据您的需要,您需要修改代码,但这是我最终在我的网站上使用的内容。如果有人建议如何一次性抓住所有子页面而不是一个接一个,我认为这会更好。