Burada herhangi bir model, blok veya yardımcıların üzerine yazılıp yazılmadığını kontrol etmek için kullandığım küçük bir senaryo var. Ne yazık ki kontrolörler için çalışmıyor ve devre dışı modülleri de dikkate alıyor. Ama benim açımdan bu önemli değil.
Ana fikir, config dosyalarını ayrıştırmak ve <rewrite>
etiketi aramaktır. Aynı düzeyde bir php dosyası oluşturun index.php
. En diyelim rewrites.php
bu, içerik:
<?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);
Tarayıcıda arama yaparken şöyle bir şey görmelisiniz:
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] => ...
)
Bu, modelin 'core/layout'
üzerine yazıldığı anlamına gelir .Namespace_Module_Model_Core_Layout
['Core / layout'] dizisinde 2 veya daha fazla değeriniz varsa, bu bir çatışma olduğu anlamına gelir.
Ve kolayca üzerinde yazma şey dayanan bu modülü belirleyebilir Namespace
veModule
grep