এখানে একটি ছোট স্ক্রিপ্ট আমি কোনও মডেল, ব্লক বা সাহায্যকারীদের ওভাররাইট করা হয়েছে কিনা তা যাচাই করতে ব্যবহার করি। দুর্ভাগ্যক্রমে এটি নিয়ন্ত্রণকারীদের জন্য কাজ করে না এবং এটি অক্ষম মডিউলগুলিকেও বিবেচনা করে। তবে আমার দৃষ্টিকোণ থেকে এটি কোনও বড় বিষয় নয়।
মূল ধারণাটি হ'ল কনফিগার ফাইলগুলি পার্স করা এবং <rewrite>
ট্যাগটি সন্ধান করা। হিসাবে একই স্তরের উপর পিএইচপি ফাইল তৈরি করুন index.php
। rewrites.php
এই কন্টেন্ট সহ এটি কল করুন :
<?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);
ব্রাউজারে এটি কল করার সময় আপনার এমন কিছু দেখতে পাওয়া উচিত:
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] => ...
)
এর অর্থ এই যে মডেলটি 'core/layout'
ওভাররাইট করেNamespace_Module_Model_Core_Layout
অ্যারেতে যদি আপনার 2 বা ততোধিক মান থাকে তবে ['কোর / লেআউট'] এর অর্থ একটি বিরোধ আছে।
আর আপনি সহজেই যে মুছে ফেলা হয় কিছু উপর ভিত্তি করে মডিউল চিহ্নিত করতে পারেন Namespace
এবংModule
grep