Я бы предложил использовать тонну элементов. Таким образом, вы все равно можете хранить весь код в одном месте. Например, если это макет вашей домашней страницы (исключая шаблон):
<body>
<?php echo $this->renderElement('pageHeader'); ?>
<?php echo $this->renderElement('frontPageNotification'); ?>
<?php echo $this->renderElement('navAndOtherStuff'); ?>
...
</body>
И это ваш внутренний макет (где вы хотите отобразить все, кроме элемента frontPageNotification:
<body>
<?php echo $this->renderElement('pageHeader'); ?>
<?php echo $this->renderElement('navAndOtherStuff'); ?>
...
</body>
Теперь, если они почти одинаковы, я бы, вероятно, просто использовал один макет и имел бы несколько операторов if внутри самого макета, чтобы определить, что должно отображаться. Кроме того, вы можете выбрать, какие элементы отображать, посмотрев массив $ this-> params, чтобы выяснить, какой контроллер и действие находятся за загружаемой страницей. Как:
<body>
<?php echo $this->renderElement('pageHeader'); ?>
<?php if($this->params['controller'] == 'pages' && $this->params['action'] == 'index') { echo $this->renderElement('frontPageNotification'); } ?>
<?php echo $this->renderElement('navAndOtherStuff'); ?>
...
</body>
Что, по общему признанию, довольно некрасиво. Просто пытаюсь представить все возможные варианты:)
Удачи