cancel
Showing results for 
Search instead for 
Did you mean: 

Überschreibende Klasse bzw. Datei finden (zwei Grid's scheinen sich zu überschreiben)

Überschreibende Klasse bzw. Datei finden (zwei Grid's scheinen sich zu überschreiben)

Hallo Gemeinde,

ich habe gerade ein Problem, bei dem ich nicht weiterkomme. Vielleicht fehlt mir nur ein Denkansatz.

 

Mein Chef hat "BL_CustomGrid" im Einsatz um Grids anzupassen und er hat eine neue Erweiterung gekauft zum Exportieren.

Ich habe mit BL_CustomGrid die Ansicht für Bestellungen, Kunden und Artikel angepasst. Alles funktioniert, auch die Suche nach Details. Soweit alles gut.

 

Aktiviere ich nun "Extended Grid", dann funktioniert alles bei Bestellungen und bei der Kundenansicht. Bei "Katalog" -> "Artikel verwalten" funktioniert die Anzeige der Treffer einer Suche nicht mehr. Die Suche funktioniert, denn das sehe ich, wenn ich das Ergebnis exportiere. Aber im Grid wird mir das Ergebnis der Suche nicht angezeigt. Es bleibt bei der Vollanzeige aller Artikel.

 

Für mich sieht das so aus, als würde "Extended Grid" irgendetwas überschreiben und ich habe keine Ahnung, wie ich die Stelle finden soll, weil ich nicht genau weiss, was hier an der Stelle passiert.

Offenbar wird zuerst "BL_CustomGrid" ausgeführt und danach Mehtoden von "Extended Grid", die aber mit der Darstellung von "BL_CustomGrid" nichts anfangen können.

 

1. Frage: Kennt sich jemand mit BL_CustomGrid aus? Ich hab nämlich keine Ahnung, was bei "überschreibende Klasse" rein muss. Ich habe den Shop nur übernommen und mein Vorgänger hat eher Chaos hinterlassen

 

2. Wie finde ich am besten und einfachsten heraus, an welcher Stelle die beiden Erweiterungen kollidieren. Beide basieren, meiner Meinung nach, auf "Mage_Adminhtml_Block_Catalog_Product_Grid" und erweitern diese Klasse nur. Wie kann ich das Problem finden, oder beide so "mergen", dass sie zusammenarbeiten?

 

Über Hilfe oder Denkanstösse wäre ich echt froh.

 

Grüsse aus dem sonnigen Sachsen

Thomas

2 REPLIES 2

Re: Überschreibende Klasse bzw. Datei finden (zwei Grid's scheinen sich zu überschreiben)

Hallo @DifficultChild,

 

Hier ist ein kleines Skript, mit dem ich überprüfe, ob irgendwelche Modelle, Blöcke oder Helfer überschrieben werden. Leider funktioniert es nicht für Controller und es berücksichtigt auch die deaktivierten Module. Aber aus meiner Sicht ist das keine große Sache.

 

Die Hauptidee besteht darin, die Konfigurationsdateien zu analysieren und nach dem Tag <rewrite> zu suchen. Erstellen Sie eine PHP-Datei auf derselben Ebene wie index.php. Nennen wir es rewrites.php, mit diesem Inhalt:

 

<?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);

 

 

Wenn Sie es in einem Browser aufrufen, sollten Sie Folgendes sehen:

 

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] => ...

)

[1] => Namespace1_Module1_Model_Core_Layout // Wenn das zweite Element vorhanden ist, bedeutet dies, dass ein möglicher Konflikt vorliegt

 

Dies bedeutet, dass das Modell 'core / layout' von Namespace_Module_Model_Core_Layout überschrieben wird

Wenn Sie zwei oder mehr Werte im Array ['core / layout'] haben, bedeutet dies, dass ein Konflikt vorliegt.

Und Sie können das Modul, das etwas überschreibt, leicht identifizieren, das auf Namensraum und Modul basiert

--
If my answer is useful, please Accept as Solution & give Kudos
Wenn meine Antwort nützlich ist, akzeptiere sie bitte als Lösung und gib Kudos

 

Re: Überschreibende Klasse bzw. Datei finden (zwei Grid's scheinen sich zu überschreiben)

Hallo gelanivishal,

 

das Script ist sehr gut und sehr hilfreich. Leider hilft es mir bei meinem Problem nicht weiter.

 

Hier ein Beispiel, welches das Problem zeigt (BL_CustomGrid ist aktiv bei Katalog -> Artikel):

Hier ist die Export-Option der Erweiterung "Extended Grid" ausgeschalten:

extended-grid-produkt-OFF.png

 

Die Suche bei Katalog -> Artikel funktioniert:

extended-grid-produkt-OFF-search.png

Nun schalte ich bei "Extended Grid" die Exportfunktion für Artikel an:

extended-grid-produkt-ON.png

Und nun funktioniert die Suche nicht mehr:

extended-grid-produkt-ON-search.png

 

Der Export funktioniert, nur die Suchergebnisse werden nicht angezeigt.

Wenn ich den Suchbegriff eingebe, dann filtert Magento korrekt und in der Export-Datei liegt nur EIN Treffer bei diesem Suchbegriff, aber das Grid zeigt ALLE Produkte.

 

Wo muss ich ansetzen und wie?

Ist es ein Problem von Layout/Template oder ein Problem von code?