Produkte auf Homepage anzeigen magento 1.9


23

Habe gerade Magento 1.9 installiert und bin auf die erste Hürde geraten. Ich habe ein Produkt erstellt und Vorschläge aus früheren Versionen verwendet, um das Produkt auf der Startseite anzuzeigen, erhalte jedoch die folgende Meldung

Schwerwiegender Fehler: Rufen Sie getSortedChildren()in app/design/frontend/rwd/default/template/catalog/product/list.phtmlZeile 180 eine Member-Funktion für ein Nicht-Objekt auf

Jede Hilfe dankbar erhalten.

Im Inhaltsbereich der Homepage habe ich ...

<div class="page-title"> 
    <h2>Our Latest Products</h2> 
</div> 
<p>{{block type="catalog/product_list" category_id="3" template="catalog/product/list.phtml"}}</p>

Können Sie bitte Ihre Antwort mit dem Code aktualisieren, den Sie zum Hinzufügen der Produkte verwendet haben?
Sander Mangel

Hallo, ich habe das gleiche wie für Version 8 verwendet. Im Inhaltsbereich der Homepage habe ich ... <div class = "page-title"> <h2> Unsere neuesten Produkte </ h2> </ div> < p> {{block type = "catalog / product_list" category_id = "3" template = "catalog / product / list.phtml"}} </ p>
rufus

Antworten:


24

Das Problem ist, dass das neue rwd-Design zwei untergeordnete Blöcke für die Produktliste enthält:

<block type="core/text_list" name="product_list.name.after" as="name.after" />
<block type="core/text_list" name="product_list.after" as="after" />

Und in der Vorlage selbst wird nicht geprüft, ob diese vorhanden sind, bevor versucht wird, sie zu laden und zu verwenden.

Eine schnelle Lösung wäre, eine andere Vorlage zu verwenden, die eine Kopie der Hauptvorlage ist, aber die folgenden Änderungen enthält:

<?php
$_nameAfter = $this->getChild('name.after');
// New if here
if($_nameAfter):
    $_nameAfterChildren = $_nameAfter->getSortedChildren();
    foreach($_nameAfterChildren as $_nameAfterChildName):
        $_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
        $_nameAfterChild->setProduct($_product);
        ?>
        <?php echo $_nameAfterChild->toHtml(); ?>
    <?php endforeach; ?>
<?php endif; ?>

<?php
//set product collection on after blocks
$_afterChildren = $this->getChild('after');
if ($_afterChildren):
    $_afterChildren = $this->getChild('after')->getSortedChildren();
    foreach($_afterChildren as $_afterChildName):
        $_afterChild = $this->getChild('after')->getChild($_afterChildName);
        $_afterChild->setProductCollection($_productCollection);
    ?>
    <?php echo $_afterChild->toHtml(); ?>
<?php endforeach; ?>
<?php endif; ?>

Das name.afterkommt zweimal in der Vorlage vor, aber das aftererscheint nur einmal. Als letztes ist zu beachten, dass das Standard-RWD-CSS den Aktionsbereich der Produktliste auf den CMS-Seiten verbirgt.


Können Sie bitte angeben, in welcher Datei dieser Code im rwd-Design hinzugefügt werden muss?
Bhargav Mehta

Hinzufügen, welche Datei helfen würde, sowie Zeilen. Die oben genannten stimmen nicht mit dem Code in der list.phtml
Philip Deatherage

Hi philip es könnte sein, dass die neueste version von magento dieses problem behoben hat.
David Manners

Welche Hauptvorlage muss kopiert werden? list.phtml?
Pixelomo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.