¿Cómo sobrescribir archivos de plantilla principales desde un módulo personalizado?
10
Quiero sobrescribir dos archivos. A saber, el view.phtmly print.phtmlde los pedidos de ventas.
(path: app/design/frontend/base/default/template/sales/order/)
Estoy creando un módulo en el que quiero crear una ruta app/design/frontend/base/default/template/<My Module Name>/sales/order/para que el núcleo view.phtmly los print.phtmlarchivos no se sobrescriban.
Puede hacer esto con un archivo XML de diseño dentro de su módulo. Debe tener una sección en su módulo config.xmlcomo esta para permitir que Magento cargue el diseño XML de su módulo (ruta:) app/design/frontend/base/default/layout/mymodulename.xml:
Paso 3: Cree un archivo php que sobrescriba el archivo view.phtml real, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
La clase Exercise_CustomSales_Block_Sales_Order_View extiende Mage_Sales_Block_Order_View
{
función protegida _construct ()
{
padre :: _ construct ();
$ this-> setTemplate ('customsales / sales / order / view.phtml');
}
}
Paso 4: debe crear un archivo local.xml dentro de la carpeta de diseño (ruta posible: app / design / frontend / package / theme / layout). Esto es para print.phtml.
No hay necesidad de reescribir todo el bloque. En mi respuesta, el constructor de Mage_Sales_Block_Order_Viewget se llama primero y establece la plantilla, luego setTemplatese llama iniciado por el diseño XML de mi ejemplo y establece la plantilla personalizada. Me gustaría buscar soluciones que no utilicen reescrituras, ya que potencialmente pueden causar conflictos.
7ochem
7ochem tiene razón. No es necesario configurar la plantilla en bloque. La solución de 7ochem es buena y funcionó para mí.
Rajan Faldu
Depende de ti. Si sobrescribe o agrega algún método php, entonces necesita sobrescribir el bloque; de lo contrario, simplemente cambie la plantilla a través de module.xml o local.xml. Supongo que mi solución no afecta a ninguna versión de magento.
Supongamos que nuestro nombre de módulo 'CustomSales' y el nombre del paquete "Ejercicio".
Paso 1: Cree un archivo de configuración del módulo en la aplicación / etc / modules / Exercise_CustomSales.xml
Paso 2: cree un archivo de configuración en app / code / local / Exercise / CustomSales / etc / config.xml
Paso 3: Cree un archivo php que sobrescriba el archivo view.phtml real, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
Paso 4: debe crear un archivo local.xml dentro de la carpeta de diseño (ruta posible: app / design / frontend / package / theme / layout). Esto es para print.phtml.
por ejemplo (app / design / frontend / rwd / default / layout / local.xml)
Mueva el archivo view.phtml e print.phtml dentro de "app / design / frontend / package / theme / template / customsales / sales / order".
Borrar caché de magento.
fuente
Mage_Sales_Block_Order_View
get se llama primero y establece la plantilla, luegosetTemplate
se llama iniciado por el diseño XML de mi ejemplo y establece la plantilla personalizada. Me gustaría buscar soluciones que no utilicen reescrituras, ya que potencialmente pueden causar conflictos.