Gibt es eine Möglichkeit, Kategorien auszublenden, in denen keine aktiven Produkte vorhanden sind? Oder, noch besser, nur Kategorien anzeigen, die aktive Produkte und Lagerbestände haben.
Beachten Sie, dass die Methode jede Kategorie einzeln anhand des Katalog- / Kategoriemodells überprüft. Wenn Sie also über viele Kategorien verfügen, möchten Sie möglicherweise den Code neu schreiben, um Leistungsprobleme zu vermeiden. In einem kleineren Laden, den wir betreiben, funktioniert das einwandfrei.
Ist es möglich, dies in eine Erweiterung einzupacken, die in einem lokalen Ordner abgelegt werden kann? Besorgt darüber, dass der Code in zukünftigen Magento-Updates überschrieben wird.
MagentoMac
10
Es gibt keine integrierte Funktion zum Ausblenden leerer Kategorien (Sie können jedoch manuell Is active = No für jede Kategorie in Admin-Bereich-> Katalog-> Kategorien verwalten auswählen.)
Das sieht gut aus, aber aus irgendeinem Grund funktioniert es in unserem Shop nicht ... Gibt es Ideen zum Debuggen? Es werden keine Fehlermeldungen angezeigt. Befolgen Sie die Anweisungen zu einem Abschlag, aber keine Änderung im Frontend. Haben Sie bereits deaktiviert, dann Compiler wieder aktiviert und Cache usw.
geleert
4
Wenn Sie sie nur in der Katalognavigation ausblenden möchten, können Sie der Vorlage eine if-Bedingung hinzufügen, um die Anzahl der Produkte in dieser Kategorie zu überprüfen.
Für mich hat es funktioniert, einen Vorlagen-Kategoriebaum zu erstellen und eine Bedingungsfunktion zu implementieren, die den Kategoriebaum darstellt:
Sie können folgendes SQL ausführen, um alle Kategorien ohne Produkte zu deaktivieren.
UPDATE `catalog_category_entity_int` AS `status`
INNER JOIN `eav_attribute` AS `attr` ON `attr`.`attribute_code`='is_active'
AND `attr`.`entity_type_id`=3
AND `status`.`attribute_id`=`attr`.`attribute_id`
SET `status`.`value`= IF((SELECT COUNT(`index`.`product_id`)
FROM `catalog_category_product_index` AS `index`
WHERE `index`.`category_id`=`status`.`entity_id` GROUP BY `index`.`category_id`)>0,1,0)
WHERE `status`.`store_id`=0
Was ich getan habe, um leere Kategorien auszublenden, ist die Mage_Catalog_Model_Resource_Category_Treeload()Funktion neu zu schreiben . Ich muss mich der Produktsammlung mit der Kategoriesammlung wie unten anschließen.
Ich habe ein zusätzliches Feld product_count hinzugefügt, das die tatsächliche Anzahl der aktiven Produkte enthält.
Ich verwende ein Modul eines Drittanbieters, um die Kategorie im oberen Menü anzuzeigen, und habe die Bedingung basierend auf der Anzahl der Produkte festgelegt, wenn das Menü gerendert wird.
Antworten:
Der einfachste Weg, dies zu tun, besteht darin, nur den
Mage_Catalog_Block_Navigation
Block neu zu schreiben :=> In der Methode
_renderCategoryMenuItemHtml()
möchten Sie die Schleife ersetzen=> damit:
=> und in ähnlicher Weise in der Methode
renderCategoriesMenuHtml()
den Code ersetzen=> damit:
=> Füge zum Schluss die Methode hinzu, die wir gerade in unserem Code verwendet haben:
Beachten Sie, dass die Methode jede Kategorie einzeln anhand des Katalog- / Kategoriemodells überprüft. Wenn Sie also über viele Kategorien verfügen, möchten Sie möglicherweise den Code neu schreiben, um Leistungsprobleme zu vermeiden. In einem kleineren Laden, den wir betreiben, funktioniert das einwandfrei.
quelle
Es gibt keine integrierte Funktion zum Ausblenden leerer Kategorien (Sie können jedoch manuell Is active = No für jede Kategorie in Admin-Bereich-> Katalog-> Kategorien verwalten auswählen.)
Hier ist ein Link zu einem großartigen Beitrag aus Josh Prattskis Blog , in dem er Schritt für Schritt erklärt, wie man eine Erweiterung für diesen Zweck erstellt.
quelle
Wenn Sie sie nur in der Katalognavigation ausblenden möchten, können Sie der Vorlage eine if-Bedingung hinzufügen, um die Anzahl der Produkte in dieser Kategorie zu überprüfen.
quelle
Vielleicht würde das auch helfen.
Gehen Sie zum Backend Ihres Webshops.
Das Label
Display Mode
könnte auf gesetzt seinquelle
Gehen Sie wie folgt vor, um eine leere Kategorie im Hauptmenü auszublenden:
quelle
Für mich hat es funktioniert, einen Vorlagen-Kategoriebaum zu erstellen und eine Bedingungsfunktion zu implementieren, die den Kategoriebaum darstellt:
quelle
Sie können folgendes SQL ausführen, um alle Kategorien ohne Produkte zu deaktivieren.
Weitere Details finden Sie hier http://quicktips.ru/all/hide-all-categories-without-products-and-show-categories-with-pr/
quelle
Was ich getan habe, um leere Kategorien auszublenden, ist die
Mage_Catalog_Model_Resource_Category_Tree
load()
Funktion neu zu schreiben . Ich muss mich der Produktsammlung mit der Kategoriesammlung wie unten anschließen.Fügen Sie diesen Code vor
$arrNodes = $this->_conn->fetchAll($select);
dieser Zeile ein.Und schließen Sie diesen Code mit dieser Bedingung ab, die auch vom Frontend- und Backend-Modell aufgerufen wird
Ich habe ein zusätzliches Feld product_count hinzugefügt, das die tatsächliche Anzahl der aktiven Produkte enthält.
Ich verwende ein Modul eines Drittanbieters, um die Kategorie im oberen Menü anzuzeigen, und habe die Bedingung basierend auf der Anzahl der Produkte festgelegt, wenn das Menü gerendert wird.
quelle