我是concrete5的新手,并且需要循环父节点的子页面(父节点不是当前页面,所以可能需要父节点作为参数传递)。
我希望这很简单,但我发现的一切都与autonav有关。由于网站导航采用非标准格式,我无法使用autonav。
该解决方案不需要打印任何标记 - 只需生成一个slug和标题的PHP数组,然后我可以循环到一些标记。但我会采取任何一种方式:-)提前谢谢!
答案 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"
显然,根据您的需要,您需要修改代码,但这是我最终在我的网站上使用的内容。如果有人建议如何一次性抓住所有子页面而不是一个接一个,我认为这会更好。