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)?

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 />.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.