2011-12-22 157 views
0

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

一件奇怪的事情;如果我叫

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

正确的类别名称返回,但是当

$_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> 
+0

是使用您的自定义模块还是使用标准模块渲染的类别页面?如果使用自定义检查或发布getLoadedProductCollection –

回答

1
  1. 重新索引所有的产品在重新索引页。
  2. 清除缓存。
  3. 重新载入您的产品页面。
+0

这是一个与我们为了从外部ERP解决方案获取价格而进行的修改有关的问题。问题已解决。感谢您的支持 ! –

相关问题