TL; DR: existe-t-il un moyen de déboguer le chargement de la mise en page? Comme je crois que la disposition d'un module est en conflit avec un autre.
En rapport avec une question précédente que j'ai faite: Comment faire pour qu'une disposition de module soit montrée sur tous les thèmes
J'ai chargé avec succès mon module sur mon environnement de test local (mon PC de développement), testé la commutation entre 3 thèmes différents et tout va bien. Ensuite, j'ai mis à jour le module sur l'environnement de test ou de "pré-production" que nous avons, où il y a beaucoup de modules différents, certains propriétaires, que nous avons fabriqués. Sur cet environnement, le module ne montre pas ce qui est nécessaire sur la page d'accueil du produit. Après quelques tests, je parviens finalement à la conclusion que le problème devrait être lié au processus de chargement de la mise en page.
Alors, y at-il un moyen de déboguer le chargement de la mise en page, comment différents modules remplacent ou ajoutent leurs propres blocs? Mon point est que je crois qu’au moins un module devrait être en conflit avec le mien. Et comme nous avons tellement de modules, je cherche une approche différente de la désactivation des modules un par un et je vois quelle est la problématique.
Mon fichier config.xml est:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Dts_Banners>
<version>0.1.0</version>
</Dts_Banners>
</modules>
<global>
<blocks>
<banners>
<class>Dts_Banners_Block</class>
</banners>
</blocks>
....
<events>
<controller_action_layout_load_before>
<observers>
<attributesethandle>
<class>Dts_Banners_Model_Observer</class>
<method>addAttributeSetHandle</method>
</attributesethandle>
</observers>
</controller_action_layout_load_before>
</events>
</global>
....
</config>
Mon fichier d'observateur:
<?php
class Dts_Banners_Model_Observer
{
/**
* Checks if the search text on the list of active campaigns (dts_banners_admin table) has some of the comma separated text on the product name
* If text found, add a layout handle PRODUCT_CAMPAIGN_BANNER after PRODUCT_TYPE_<product_type_id> handle
* This handle is handled on the banners.xml layout file that triggers the use of the Front.php frontend block
*
* Event: controller_action_layout_load_before
*
* @param Varien_Event_Observer $observer
*/
public function addAttributeSetHandle(Varien_Event_Observer $observer) {
$product = Mage::registry('current_product');
if (!($product instanceof Mage_Catalog_Model_Product)) return;
....
....
}
Ceci est mon fichier de mise en page:
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<default>
<reference name="content">
<block type="banners/front" name="banners.front" as="banners_front" template="banners/product.phtml" before="-"/>
</reference>
</default>
</layout>
Auparavant eu un légèrement différent où au lieu de <default></default>
moi <Product_Campaign_Banner></Product_Campaign_Banner>
. Cela a également fonctionné.
Mon fichier product.phtml:
<div class="visual">
<?php echo $this->showCampaign(); ?>
</div>
Le product.phtml
fichier n'est pas chargé et par conséquent, il showCampaign
n'est pas exécuté et il existe tous les fichiers HTML nécessaires.