Vấn đề là thiết kế rwd mới có hai khối con cho danh sách sản phẩm:
<block type="core/text_list" name="product_list.name.after" as="name.after" />
<block type="core/text_list" name="product_list.after" as="after" />
Và trong bản thân mẫu, không có kiểm tra để xem nếu chúng có mặt trước khi chúng được tải và sử dụng.
Cách khắc phục nhanh sẽ là sử dụng một mẫu khác là bản sao của mẫu chính nhưng với các chỉnh sửa sau:
<?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; ?>
Việc name.after
xảy ra hai lần trong mẫu nhưng after
chỉ xuất hiện một. Một điều cuối cùng cần lưu ý là rwd css mặc định ẩn phần hành động của danh sách sản phẩm trên các trang cms.