voici un petit script que j'utilise pour vérifier si des modèles, des blocs ou des aides sont écrasés. Malheureusement, cela ne fonctionne pas pour les contrôleurs et il prend également en compte les modules désactivés. Mais de mon point de vue, ce n'est pas grave.
L'idée principale est d'analyser les fichiers de configuration et de rechercher la <rewrite>
balise. Créez un fichier php au même niveau que index.php
. Appelons-le rewrites.php
, avec ce contenu:
<?php
$folders = array('app/code/local/', 'app/code/community/');//folders to parse
$configFiles = array();
foreach ($folders as $folder){
$files = glob($folder.'*/*/etc/config.xml');//get all config.xml files in the specified folder
$configFiles = array_merge($configFiles, $files);//merge with the rest of the config files
}
$rewrites = array();//list of all rewrites
foreach ($configFiles as $file){
$dom = new DOMDocument;
$dom->loadXML(file_get_contents($file));
$xpath = new DOMXPath($dom);
$path = '//rewrite/*';//search for tags named 'rewrite'
$text = $xpath->query($path);
foreach ($text as $rewriteElement){
$type = $rewriteElement->parentNode->parentNode->parentNode->tagName;//what is overwritten (model, block, helper)
$parent = $rewriteElement->parentNode->parentNode->tagName;//module identifier that is being rewritten (core, catalog, sales, ...)
$name = $rewriteElement->tagName;//element that is rewritten (layout, product, category, order)
foreach ($rewriteElement->childNodes as $element){
$rewrites[$type][$parent.'/'.$name][] = $element->textContent;//class that rewrites it
}
}
}
echo "<pre>";print_r($rewrites);
lorsque vous l'appelez dans un navigateur, vous devriez voir quelque chose comme ceci:
Array
(
[models] => Array
(
[core/layout] => Array
(
[0] => Namespace_Module_Model_Core_Layout
[1] => Namespace1_Module1_Model_Core_Layout //if the second element is present it means there is a possible conflict
)
[...] => ....
)
[blocks] => ...
[helpers] => ...
)
cela signifie que le modèle 'core/layout'
est remplacé parNamespace_Module_Model_Core_Layout
Si vous avez 2 ou plusieurs valeurs dans le tableau ['core / layout'], cela signifie qu'il y a un conflit.
Et vous pouvez facilement identifier le module qui écrase quelque chose en fonction Namespace
etModule
grep