Кілька файлів розміщення local.xml в пакеті


13

Скажіть, що в пакеті є дві теми:

  • База (встановити за замовчуванням)
  • Дитина (встановлено як основну тему)

Обидва містять local.xml у папці макета - завантажуватиметься лише local.xml з дочірньої теми, тому будь-які оновлення CSS, JS чи верстки у Base local.xml не завантажуються.

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

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

Відповіді:


9

Ви маєте рацію, і це дійсний і використаний підхід для сайтів з декількома темами. Є кілька додаткових (маловідомих, рідко використовуваних) параметрів, які можна використовувати для оновлень макетів, що застосовуються до різних областей магазину: ручка магазину та ручка теми.

З суперкласу контролера дій 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 />.


Ах, це корисно знати - я думаю, що мій варіант використання дещо відрізняється від того, що ви пропонуєте, - Ви все одно матимете один local.xml у «базовій» темі, але потім використовуйте <THEME_frontend_default_german> для націлювання на дочірні теми з цієї базової теми local.xml - Не має окремого local.xml у кожній з дочірніх тем? Це правильно чи я нерозумію?
Гло

Це воно. На жаль, цільові ручки застосовуються широко, тому немає можливості, скажімо, "оновити шаблон кореневого блоку для сторінки catalog_product_view у магазині X". Якщо, однак, для зберігання X потрібен спеціальний JS-файл на всіх сторінках, його можна було б використовувати <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
орієнтири

Велике спасибі, хоча не конкретно, що я мав на увазі, це якась нова цікава інформація, привіт.
Гло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.