Показуйте товари на домашній сторінці magento 1.9


23

Тільки що встановили magento 1.9 і потрапили на першу перешкоду. Я створив продукт і використовував пропозиції попередніх версій для відображення продукту на домашній сторінці, але отримую наступне повідомлення

Фатальна помилка: виклик функції члена getSortedChildren()на об'єкті в app/design/frontend/rwd/default/template/catalog/product/list.phtmlрядку 180

Будь-яка допомога вдячно отримана.

У розділі змісту домашньої сторінки я ...

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

Чи можете ви оновити свою відповідь кодом, який ви використовували для додавання продуктів?
Сандер Манґел

Привіт, я використовував те саме, що і для версії 8. У розділі вмісту домашньої сторінки я маю ... <div class = "page-title"> <h2> Наші останні продукти </h2> </div> < p> {{block type = "каталог / product_list" category_id = "3" template = "каталог / продукт / list.phtml"}} </p>
rufus

Відповіді:


24

Проблема полягає в тому, що новий RWD-дизайн має два дочірні блоки до списку продуктів:

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

І в самому шаблоні немає перевірок, щоб перевірити, чи вони є перед тим, як їх спробувати завантажити та використати.

Швидким виправленням буде використання іншого шаблону, який є копією основного шаблону, але з наступними правками:

<?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.afterВідбувається двічі в шаблоні , але afterз'являється тільки один. Останнє, що слід зазначити, це те, що rss-файл css за замовчуванням приховує розділ дій у списку продуктів на сторінках cms.


Чи можете ви, будь ласка, вказати, у який файл цей код потрібно додати в тему rwd?
Бхаргав Мехта

Додавання того, який файл допоможе, а також рядки. Вищезазначене не відповідає коду в list.phtml
Philip Deatherage

Привіт Філіп, можливо, ця проблема усунула найновішу версію магенто.
Девід Маннерс

який основний шаблон потрібно скопіювати? list.phtml?
Пікселомо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.