Múltiples archivos de diseño local.xml en un paquete

13

Digamos que hay dos temas en un paquete:

  • Base (Establecer como predeterminado)
  • Niño (Establecer como tema principal)

Ambos contienen un local.xml en la carpeta de diseño: solo se cargará el local.xml del tema secundario, por lo que no se cargarán las actualizaciones de CSS, JS o diseño en el Local.xml base.

Sin usar page.xml (lo que permite la misma funcionalidad que local.xml pero con herencia), ¿cómo tendría un archivo xml para Base y uno para Child a los que se llame?

¿Esto requeriría construir un módulo con el único propósito de agregar un archivo xml utilizable (por ejemplo: base-local.xml)?

Glo
fuente

Respuestas:

9

Tiene razón, y este es un enfoque válido y usado para sitios con múltiples temas. Hay un par de opciones adicionales (poco conocidas, poco utilizadas) que se pueden usar para las actualizaciones de diseño que se aplican a diferentes ámbitos de la tienda: el identificador de la tienda y el identificador del tema.

Desde la superclase de controlador de acción Mage_Core_Controller_Varien_Action(enlace) :

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;
}

Para una tienda con el código 'deutsch' y una configuración de tema de paquete 'predeterminado', tema 'alemán', los siguientes identificadores se aplicarían a casi todas las vistas, ya que la mayoría de las vistas las usan:

<STORE_deutsch>
<THEME_frontend_default_german>

Mediante la implementación, estos controladores se pueden utilizar de la misma manera que <default />.

puntos de referencia
fuente
Ah, es útil saberlo. Creo que mi caso de uso es ligeramente diferente de lo que está sugiriendo. Todavía tendría un local.xml en un tema 'base' pero luego usaría <THEME_frontend_default_german> para orientar los temas secundarios del tema base local.xml: ¿no tiene un local.xml separado en cada uno de los temas secundarios? ¿Es correcto o estoy malentendido?
Glo
Eso es. Desafortunadamente, los identificadores específicos se aplican ampliamente, por lo que no hay forma de, por ejemplo, "actualizar la plantilla de bloque raíz para la página catalog_product_view en la tienda X". Sin embargo, si la tienda X necesita un archivo JS personalizado en todas las páginas, sería posible usarlo <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
Benmarks
Muchas gracias, aunque no es específicamente lo que tenía en mente, esa es una nueva información interesante, saludos.
Glo