Mostra i prodotti sulla homepage magento 1.9


23

Ho appena installato Magento 1.9 e sono caduti sul primo ostacolo. Ho creato un prodotto e ho utilizzato suggerimenti di versioni precedenti per visualizzare il prodotto sulla homepage ma ricevo il seguente messaggio

Errore irreversibile: chiamata a una funzione membro getSortedChildren()su un non oggetto nella app/design/frontend/rwd/default/template/catalog/product/list.phtmlriga 180

Qualsiasi aiuto ricevuto con gratitudine.

Nella sezione dei contenuti della homepage ho ...

<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>

Puoi aggiornare la tua risposta con il codice che hai usato per aggiungere i prodotti?
Sander Mangel

Ciao, ho usato lo stesso che faccio per la versione 8. Nella sezione dei contenuti della homepage ho ... <div class = "page-title"> <h2> I nostri ultimi prodotti </h2> </div> < p> {{block type = "catalog / product_list" category_id = "3" template = "catalog / product / list.phtml"}} </p>
rufus,

Risposte:


24

Il problema è che il nuovo design rwd ha due blocchi figlio per l'elenco prodotti:

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

E nel modello stesso non ci sono controlli per vedere se sono presenti prima che vengano tentati di essere caricati e utilizzati.

Una soluzione rapida sarebbe quella di utilizzare un modello diverso che è una copia del modello principale ma con le seguenti modifiche:

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

Si name.afterverifica due volte nel modello ma afterappare solo uno. Un'ultima cosa da notare è che il cw predefinito di rwd nasconde la sezione delle azioni dell'elenco prodotti nelle pagine del cms.


Puoi indicare in quale file questo codice deve essere aggiunto nel tema rwd?
Bhargav Mehta,

Aggiungendo quale file sarebbe d'aiuto, così come le linee. Quanto sopra non corrisponde al codice del list.phtml
Philip Deatherage

Ciao Philip potrebbe essere che la versione più recente di magento abbia risolto questo problema.
David Manners,

quale modello principale deve essere copiato? list.phtml?
Pixelomo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.