Проблема лежит в Mage_Cms_Helper_Page :: _ renderPage.Применяются обновления макета - применяется предшествующий корневой шаблон (настроенный из бэкэнда):
Mage::dispatchEvent('cms_page_render', array('page' => $page, 'controller_action' => $action));
$action->loadLayoutUpdates();
$layoutUpdate = ($page->getCustomLayoutUpdateXml() && $inRange) ? $page->getCustomLayoutUpdateXml() : $page->getLayoutUpdateXml();
$action->getLayout()->getUpdate()->addUpdate($layoutUpdate);
$action->generateLayoutXml()->generateLayoutBlocks();
...
if ($page->getRootTemplate()) {
$action->getLayout()->helper('page/layout')
->applyTemplate($page->getRootTemplate());
}
Также обратите внимание, что единственное событие в этом методе неудобно помещено над всем этим ... Если вы хотитеисправить это чисто (без запросов), вы должны наблюдать следующее событие:
controller_action_postdispatch_cms_index_index
Затем выполните следующее (не проверено, но должно работать):
$this->getEvent()->getControllerAction()->getLayout()->helper('page/layout')->applyTemplate('one_column');
Тогдасделать макет снова.Это всего лишь руководство, как решить эту проблему с помощью наблюдателей.