【发布时间】:2015-06-19 18:14:47
【问题描述】:
我正在尝试实现一个将所有子页面加载到主(索引)页面的 Concrete5 主题。到目前为止,我只是遍历我的子页面数组,获取类型、上下文(区域等),然后为每个页面加载一个带有页面模板标记的元素。不幸的是,这很容易出错,必须有另一种方法 - 这是我的主页标记:
global $cp;
if(!$cp->canWrite()) {
$childPages = $c->getCollectionChildrenArray(1);
foreach($childPages as $childPage) {
$page = Page::getByID($childPage);
$cPages = $page->getCollectionChildrenArray(1);
if($cPages) {
$parentPage = $page;
$page = $page->getByID($cPages[0]);
}
$layout = $page->getCollectionTypeHandle();
$context = array('page' => $page);
if(!$layout) {
continue;
}
Loader::element('layouts/' . $layout, $context);
}
页面类型如下所示:
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<?php $this->inc('elements/header.php'); ?>
<?php
global $c;
$context = array('page' => $c);
Loader::element('layouts/case_study', $context);
?>
<?php $this->inc('elements/footer.php'); ?>
Loader::() 引入的布局元素看起来像这样(只是普通的旧 HTML 和 Concrete5 Area sn-ps):
<section id="<?=$page->vObj->cvHandle; ?>">
<div class="whatever">
<?php
$a = new Area($page->getCollectionName() . ' Page Content');
$a->display($page);
</div>
</section>
在大多数情况下这是可行的,但是在加载块等时我似乎仍然遇到一些错误......所以我不确定在使用 Concrete5 时是否有更好的方法来获得“单页”主题.我想知道是否有其他人有构建此类主题的经验,或者最好的方法。
感谢任何帮助。
【问题讨论】: