[英]Concrete5 Single Page Theme
我正在尝试实现将所有子页面加载到主(索引)页面的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);
}
Page类型如下:
<?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代码片段):
<section id="<?=$page->vObj->cvHandle; ?>">
<div class="whatever">
<?php
$a = new Area($page->getCollectionName() . ' Page Content');
$a->display($page);
</div>
</section>
在大多数情况下,这是可行的,但是在加载块等时,我似乎仍然遇到一些错误。因此,我不确定在使用Concrete5时是否有更好的方法来获得“单页”主题。 我想知道是否还有其他人有构建此类主题的经验,或者是实现该主题的最佳方法。
任何帮助表示赞赏。
我会使用更加灵活的PageList类
$c = Page::getCurrentPage();
$pl = new PageList();
$pl->filterByParentID($c->getCollectionID());
$subPages = $pl->get(0);
不太确定您会收到什么错误,我认为这是因为缺少JavaScript和CSS文件。 之所以会发生这种情况,是因为这些脚本未与当前页面关联,因此不包含在标题中。
如果您遇到这种情况,下面的示例向您展示如何执行此操作,它需要几行代码: https : //github.com/mkly/area_from_another_mother/blob/master/blocks/area_from_another_mother/controller.php#L313-L359
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.