Я пытаюсь реализовать тему Concrete5, которая загружает все подстраницы на главную (индексную) страницу. До сих пор я просто перебираю массив дочерних страниц, захватывая тип, контекст (области и т. Д.), А затем загружая элемент с разметкой шаблона страницы для каждой страницы. К сожалению, это очень подвержен ошибкам, и там должен быть другой путь - вот моя главная страница разметки:Concrete5 Single Page Theme
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'); ?>
И макете элемента этого погрузчика: :() тянет в выглядит следующим образом (просто старый 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. Мне было интересно, есть ли у кого-нибудь другой опыт создания такого типа темы или лучший способ сделать это.
Любая помощь приветствуется.