繁体   English   中英

Concrete5单页主题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM