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>
Rufus
quelle
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.

David Manners
quelle
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