Вопрос

Допустим, в пакете есть две темы:

  • Базовая (установлена по умолчанию)
  • Ребенок (Задан в качестве основной темы)

Оба содержат local.xml в папке layout - Будет загружена только local.xml из дочерней темы, поэтому любые обновления CSS, JS или layout в базовой local.xml не загружаются.

Без использования page.xml (таким образом, с учетом той же функциональности, что и local.xml, но с наследованием), как бы у меня был XML-файл для базы и один для дочернего файла, которые оба вызываются?

Потребует ли это создания модуля с единственной целью добавления полезного XML-файла (например:base-local.xml )?

Это было полезно?

Решение

Вы правы, и это допустимый и используемый подход для сайтов с несколькими темами.Существует пара дополнительных (малоизвестных, редко используемых) опций, которые можно использовать для обновлений макета, применимых к различным областям хранения:дескриптор хранилища и дескриптор темы.

Из суперкласса контроллера действий Mage_Core_Controller_Varien_Action (ссылка):

public function addActionLayoutHandles()
{
    $update = $this->getLayout()->getUpdate();

    // load store handle
    $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());

    // load theme handle
    $package = Mage::getSingleton('core/design_package');
    $update->addHandle(
        'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
    );

    // load action handle
    $update->addHandle(strtolower($this->getFullActionName()));

    return $this;
}

Для магазина с кодом "deutsch" и конфигурацией темы пакета "по умолчанию", "немецкой" темы, следующие дескрипторы будут применяться практически к каждому представлению, поскольку большинство представлений используют их:

<STORE_deutsch>
<THEME_frontend_default_german>

При реализации эти дескрипторы могут использоваться практически так же, как <default />.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top