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.