Sorun şu ki, yeni tasarım tasarımı ürün listesi için iki alt bloğa sahip:
<block type="core/text_list" name="product_list.name.after" as="name.after" />
<block type="core/text_list" name="product_list.after" as="after" />
Ve şablonun kendisinde bunların yüklenmeye ve kullanılmaya çalışılmadan önce var olup olmadıklarını kontrol eden kontroller yoktur.
Hızlı bir düzeltme, ana şablonun bir kopyası olan ancak aşağıdaki düzenlemelerle farklı bir şablon kullanmak olacaktır:
<?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
Şablonda iki kez gerçekleşir ama after
sadece bir görünür. Unutulmaması gereken son şey, varsayılan rwd css'nin, cms sayfalarındaki ürün listesinin eylemler bölümünü gizlemesidir.