Comment écraser des fichiers de modèles principaux à partir d'un module personnalisé?
10
Je veux écraser deux fichiers. A savoir le view.phtmlet print.phtmldes commandes clients.
(chemin: app/design/frontend/base/default/template/sales/order/)
Je crée un module dans lequel je veux créer un chemin app/design/frontend/base/default/template/<My Module Name>/sales/order/afin que le noyau view.phtmlet les print.phtmlfichiers ne soient pas écrasés.
Alors s'il vous plaît, guidez-moi comment accomplir cette tâche.
Vous pouvez le faire avec un fichier XML de mise en page à l'intérieur de votre module. Vous devez avoir une section dans votre module config.xmlcomme celle-ci pour permettre à Magento de charger la mise en page XML de votre module (chemin:) app/design/frontend/base/default/layout/mymodulename.xml:
Vous devriez poser cette question comme une nouvelle question car elle est trop large pour la mettre dans un commentaire ici et n'est pas ce que le PO demande
7ochem
3
Supposons que notre nom de module «CustomSales» et notre nom de package «Exercise».
Étape 1: créer un fichier de configuration de module dans l'application / etc / modules / Exercise_CustomSales.xml
Étape 3: Créez un fichier php qui remplace le fichier view.phtml réel, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
classe Exercise_CustomSales_Block_Sales_Order_View étend Mage_Sales_Block_Order_View
{
fonction protégée _construct ()
{
parent :: _ construct ();
$ this-> setTemplate ('Customsales / sales / order / view.phtml');
}
}
Étape 4: vous devez créer un fichier local.xml dans le dossier de mise en page (chemin possible: app / design / frontend / package / theme / layout). C'est pour print.phtml.
par exemple (app / design / frontend / rwd / default / layout / local.xml)
Il n'est pas nécessaire de réécrire tout le bloc. Dans ma réponse, le constructeur de Mage_Sales_Block_Order_Viewget est appelé en premier et définit le modèle, puis setTemplateget est appelé initié par la disposition XML de mon exemple et définit le modèle personnalisé. Je voudrais opter pour des solutions qui n'utilisent pas de réécritures car elles peuvent potentiellement provoquer des conflits.
7ochem
7ochem a raison. Pas besoin de mettre le modèle en bloc. La solution de 7ochem est bonne et cela a fonctionné pour moi.
Rajan Faldu
Cela dépend de vous. Si vous écrasez ou ajoutez une méthode php, vous devez écraser le bloc, sinon vous changez simplement le modèle via module.xml ou local.xml. Ma solution n'affecte aucune version de magento, je suppose.
Supposons que notre nom de module «CustomSales» et notre nom de package «Exercise».
Étape 1: créer un fichier de configuration de module dans l'application / etc / modules / Exercise_CustomSales.xml
Étape 2: Créez un fichier de configuration sous app / code / local / Exercise / CustomSales / etc / config.xml
Étape 3: Créez un fichier php qui remplace le fichier view.phtml réel, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
Étape 4: vous devez créer un fichier local.xml dans le dossier de mise en page (chemin possible: app / design / frontend / package / theme / layout). C'est pour print.phtml.
par exemple (app / design / frontend / rwd / default / layout / local.xml)
Déplacez le fichier view.phtml et print.phtml dans "app / design / frontend / package / theme / template / douanales / sales / order".
Vider le cache magento.
la source
Mage_Sales_Block_Order_View
get est appelé en premier et définit le modèle, puissetTemplate
get est appelé initié par la disposition XML de mon exemple et définit le modèle personnalisé. Je voudrais opter pour des solutions qui n'utilisent pas de réécritures car elles peuvent potentiellement provoquer des conflits.