Pokaż produkty na stronie głównej magento 1.9


23

Właśnie zainstalowałem Magento 1.9 i spadłem na pierwszą przeszkodę. Stworzyłem produkt i wykorzystałem sugestie z poprzednich wersji, aby wyświetlić produkt na stronie głównej, ale otrzymuję następujący komunikat

Błąd krytyczny: wywołanie funkcji składowej getSortedChildren()na obiekcie niebędącym obiektem w app/design/frontend/rwd/default/template/catalog/product/list.phtmllinii 180

Każda pomoc otrzymana z wdzięcznością.

W sekcji zawartości strony głównej mam ...

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

Czy możesz zaktualizować swoją odpowiedź kodem użytym do dodania produktów?
Sander Mangel

Cześć. Używałem tego samego, co w wersji 8. W sekcji zawartości strony głównej mam ... <div class = "page-title"> <h2> Nasze najnowsze produkty </h2> </div> < p> {{block type = "catalog / product_list" category_id = "3" template = "catalog / product / list.phtml"}} </p>
rufus

Odpowiedzi:


24

Problemem jest to, że nowy projekt rwd ma dwa bloki potomne dla listy produktów:

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

A w samym szablonie nie ma sprawdzania, czy są one obecne, zanim zostaną załadowane i użyte.

Szybką poprawką byłoby użycie innego szablonu, który jest kopią głównego szablonu, ale z następującymi zmianami:

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

name.afterWystępuje dwa razy w szablonie, ale afterpojawia się tylko jeden. Ostatnią rzeczą do zapamiętania jest to, że domyślny rwd css ukrywa sekcję działań na liście produktów na stronach cms.


Czy możesz wskazać, w którym pliku należy dodać ten kod do motywu RWD?
Bhargav Mehta

Dodanie pliku, który by pomógł, a także wierszy. Powyższe nie pasuje do kodu z list.phtml
Philip Deatherage,

Cześć Filip. Możliwe, że najnowsza wersja Magento rozwiązała ten problem.
David Manners,

który główny szablon należy skopiować? list.phtml?
Pixelomo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.