2012-12-28 51 views
0

有沒有辦法迴應有關產品的簡短描述?回聲有關產品的簡短說明

我試圖用這個代碼,但它並沒有顯示每個產品的描述:

<?php echo nl2br($this->getProduct()->getDescription()) ?> 

<?php echo $_helper->productAttribute($_item, nl2br($_item->getShortDescription()), 'short_description') ?> 

有沒有辦法爲相關產品做呢?如果有人知道請給我正確的方向。

<?php if($this->getItems()->getSize()): ?> 
<div class="block block-related"> 
    <div class="block-title"> 
     <strong><span><?php echo $this->__('Related Products') ?></span></strong> 
    </div> 
    <div class="block-content"> 
     <p class="block-subtitle"><?php echo $this->__('Check items to add to the cart or add to your wishlist') ?>&nbsp;<br /></p> 
     <div class="form-horizontal"> 
     <?php foreach($this->getItems() as $_item): ?> 
      <div class="control-group"> 
        <label for="related-checkbox<?php echo $_item->getId() ?>" class="control-label"> 
         <a class="fancybox static-thumbs pull-left" href="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(500, 450); ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>" ><img src="<?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(135, 135) ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" /></a> 
        </label> 
<div class="controls"> 
<label class="checkbox"> 
     <?php if(!$_item->isComposite() && $_item->isSaleable()): ?> 
      <?php if (!$_item->getRequiredOptions()): ?> 
       <input type="checkbox" class="checkbox related-checkbox" id="related-checkbox<?php echo $_item->getId() ?>" name="related_products[]" value="<?php echo $_item->getId() ?>" /> 
     <?php endif; ?> 
    <?php endif; ?> 
<?php if ($this->helper('wishlist')->isAllow()) : ?> 
    <a href="<?php echo $this->getAddToWishlistUrl($_item) ?>" class="pull-right" title="<?php echo $this->__('Add to Wishlist') ?>" rel="tooltip"><span class="icon-check"></span></a> 

<p class="product-name span6"> 
<a href="<?php echo $_item->getProductUrl() ?>" class="product-title"><?php echo $this->htmlEscape($_item->getName()) ?></a> 
<br /> 
<?php echo nl2br($this->getProduct($_item)->getDescription()) ?> 
</p> 
<form action="<?php echo $this->getAddToCartUrl($_item) ?>" method="post"> 
<fieldset> 
    <label class="product-name"><?php echo $this->__('Quantity:'); ?></label> 
    <select name="qty" class="span1"> 
    <?php $i = 1 ?> 
    <?php do { ?> 
    <option value="<?php echo $i?>"> 
     <?php echo $i?> 
     <?php $i++ ?> 
    </option> 
    <?php } while ($i <= (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_item)->getMaxSaleQty()) ?> 
</select> 
<div class="clearfix"></div> 
<button class="btn btn-danger" data-loading-text="PLease wait..."><span><?php echo $this->__('Add to Cart') ?></span></button> 
<span id='ajax_loader' style='display:none'><img src='<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif')?>'/></span>    
</fieldset> 
</form> 
<?php endif; ?> 
<?php echo $this->getPriceHtml($_item, true, '-related') ?> 
</label> 
</div> 
    </div> 
    <hr /> 
     <?php endforeach ?> 
     </div> 
    </div> 
+0

您有沒有產品清單?如果是這樣,請向我們展示一些代碼,您的產品存儲在哪裏。 –

+0

@CE_REAL查看上面的代碼^是在CMS頁面上顯示相關項目的列表我只需要在列表中顯示說明foreach項目... – user1704524

+0

我是看到很多代碼並沒有讓它變得更清晰。相關項目是否在不同的列表/數組中?或者他們只是使用產品的函數進行檢索,如$ porduct-> getRelatedProduct()? –

回答

1

您試過nl2br($this->getProduct($_item)->getShortDescription())

默認情況下,可能不會爲相關產品加載簡短說明的值。您可以嘗試執行$_item->load($_item->getId()),然後使用$_item->getShortDescription()

+0

完成:<?php $ _item-> getShortDescription()?>謝謝這麼多老兄! – user1704524

0

TRYING $_item->load($_item->getId())並回應shortDescription,您應該查找相關產品加載的集合。在此集合中,屬性short_description未加載。

如果您加載每個產品,則會對數據庫進行大量查詢,這會花費大量性能。這不是必需的。替代方案是:

$relatedProductCollection->addAttributeToSelect('short_description'); 

問題是要找到$relatedProductCollection

更新: 我挖成的代碼(參考爲v 1.7.0.2):

// app/code/core/Mage/Catalog/Block/Product/List/Related.php:61 
$this->_addProductAttributesAndPrices($this->_itemCollection); 

// app/code/core/Mage/Catalog/Block/Product/Abstract.php:410 
$collection 
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) 

// app/code/core/Mage/Catalog/Model/Config.php:260 
$this->getAttributesUsedInProductListing() 

這應該被理解爲:當「相關產品」被加載,所有的屬性都加載,這也用於產品列表中。問題可能是:short_desciption默認加載。因此,請刪除load()調用並檢查屬性short_description是否「已用於產品列表」。如果這設置爲是,我的解釋是錯誤的。

無論如何,通過加載每個產品的解決方案是廢話。

編輯: 我加入以下行Related.php

$this->_itemCollection = $product->getRelatedProductCollection() 
->addAttributeToSelect('required_options') 
->addAttributeToSelect('short_description') 
->setPositionOrder() 
->addStoreFilter() 

並使用該行不回顯descrtiption的foreach產品,但它是相同的描述getProduct() - > getDescription())? >

您需要<?php echo ($this->getProduct()->getShortDescription()) ?>

但編輯的核心代碼是一個糟糕的方式改變Magento的行爲也是如此。這裏描述瞭如何重寫一個塊,但我不認爲這是必要的。 http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/

+0

@Fabial Blechschmidt我得到這個錯誤:致命的錯誤:調用成員函數addAttributeToSelect()在一個非對象在 – user1704524

+0

你沒有經驗與magento,是嗎?這是示例代碼。你的任務是,加載對象作爲@Lucasmus描述。但問題是:您將每個對象作爲單個項目加載,並針對每個產品啓動SQL查詢。這是浪費資源。這種方式工作。這意味着,用於加載產品的集合不會加載EAV屬性short_description ...編輯答案 –

+0

我將文件移動到本地文件夾,是的,我對Magento很新,這就是爲什麼我要求一些幫助。我不確定我使用的方法是正確的還是我應該改變它? – user1704524

相關問題