Magento在类别视图中显示不正确的产品

时间:2011-12-22 22:16:21

标签: magento product

当我第一次在list.phtml中加载productcollection时(或者当我完全转换缓存时),返回的产品是驻留在最后创建的类别中的产品(即具有最高id的类别) )。打开缓存时,在页面刷新时会显示正确的产品。删除缓存后,会出现相同的情况(要显示正确的产品,我需要在显示产品列表时刷新页面一次)。

另一个奇怪的事情;如果我打电话

$_product->getCategory()->getName()

返回正确的categoryname,但

$_product->getName()

被调用,错误的产品名称返回...我在这里完全失去了。我在其他地方读过一篇类似的帖子,其中说明当打开缓存时,这个问题就会消失,但只有在第一次页面刷新之后才会出现这种情况。

<?php $_coreHelper = $this->helper('core'); ?>

    <?php $_productCollection=$this->getLoadedProductCollection() ?>

    <?php echo Mage::getModel('catalog/layer')->getCurrentCategory()->getName(); ?>
    <?php echo Mage::getModel('catalog/layer')->getCurrentCategory()->getId(); ?> 


    <?php if(!$_productCollection->count()): ?>
    <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
    <?php else: ?>
    <div class="category-products">

        <?php $_collectionSize = $_productCollection->count() ?>
        <?php $_columnCount = 4; ?>
        <?php $i=0; foreach ($_productCollection as $_product): ?>

         <?php echo var_dump($_product->getCategory()->getName());  ?>

        <?php if ($i++%$_columnCount==0): ?>
            <ul class="products-grid" style="padding-left:0px;">
        <?php endif ?>

        <li style="height:230px;" class="hreview-aggregate hproduct item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">

        <h2 class="item fn product-name">
            <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_product->getName() ?>"><?php echo substr($this->htmlEscape($_product->getName()), 0, 22).'...' ?></a>
        </h2>

        <div>
            <div>
                <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->getImageLabel($_product, 'small_image') ?>" class="url product-image"><img class="photo fn" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(100); ?>" width="100" height="100" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" /></a>    
            </div>
            <div style="clear:both"></div>
        </div>

        <div>

            <div>
            <div>
                <div>
                    <div><span style="font-size:13px;font-weight:bold;"><?php echo $_coreHelper->currency($newprice,true,false) ?> <?php echo $this->helper('tax')->__('Ex. BTW') ?></span></div><br />
                    <div><?php echo  $_coreHelper->currency($newtaxprice,true,false) ?> <?php echo $this->helper('tax')->__('Inc. BTW') ?></div>
              </div>
            </div>
            <div style="clear:both;"></div>

            <br />

            <form action="<?=$this->getAddToCartUrl($_product);?>" method="post" id="product_addtocart_form_<?=$_product->getId();?>" <?if($_product->getOptions()){?> enctype="multipart/form-data"<?}?>>
               <?if(!$_product->isGrouped()){?>
                  <input type="text" name="qty" id="qty" maxlength="12" value="<?echo ($this->getMinimalQty($_product)?$this->getMinimalQty($_product):1);?>" style="width:30px;" /> x
               <?}?>
                <button type="button" class="button-order" onclick="this.form.submit()"><span><span><?=$this->__('Bestellen');?></span></span></button>
                <br /><br />
                <span><a href="" style="color:#888;">Zet in verlanglijst</a></span>
            </form> 
            </div>

        </div>

        <div style="clear:both"></div>
                    </li>
                <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
                </ul>
                <?php endif ?>
                <?php endforeach ?>
                <script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
            <?php endif; ?>

            <div class="toolbar-bottom">
                <?php echo $this->getToolbarHtml() ?>
            </div>
        </div>

1 个答案:

答案 0 :(得分:1)

  1. 在重新编制索引页面中重新索引所有产品。
  2. 清除缓存。
  3. 重新加载您的产品页面。