Показать пользовательский атрибут в списке пожеланий боковой панели

magento.stackexchange https://magento.stackexchange.com/questions/5511

Вопрос

У меня есть боковая виски/appsign/frontend/base/default/template/wishlist/sidebar.phtml Мне нужно добавить «пользовательский атрибут», называемый производителем.

Я пробовал много таких вариантов, но все ничего не показывают:

<?php echo $this->getManufacturer()) ?>

<?php echo $this->htmlEscape($_item->getData('manufacturer')); ?>
<?php echo $_product->getManufacturer() ?>

<?php $_item = $this->getItem()?>
<?php $_product= Mage::getSingleton('catalog/product')->load($_item->getProductId()) ?>
<?php echo $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product); ?>

<?php echo $item->getAttributeText('manufacturer') ?> 
<?php echo $item->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($item); ?>

Этот один показывает «3», а не название производителя, по крайней мере, что -то показывает ..

<?php echo $this->htmlEscape($_item->getManufacturer()) ?>

Как я могу доставить там своего производителя? Я могу показать их о везде ..

Это было полезно?

Решение

Посмотрите на код боковой панели петли, по умолчанию это:

<?php foreach ($this->getWishlistItems() as $_item): ?>

Внутри Thip Loop $ _Item-> getManufacturer () вернет ваше значение атрибута, но вы должны быть уверены, что этот продукт выполняет этот атрибут.

Вы можете отобразить это так:

<?php if ( $_item->getManufacturer() ): ?>
Manufacturer: <?php echo $this->htmlEscape($_item->getManufacturer()) ?>
<?php endif ?>

Редактировать:

Какая версия Magento вы используете? Вероятно, этот код будет работать, но он не оптимально:

<?php if ( $manufacturer = Mage::getModel('catalog/product')->load($_item->getId())->getAttributeText('manufacturer') ): ?>
    Manufacturer: <?php echo $this->htmlEscape( $manufacturer ) ?>
<?php endif ?>

Другие советы

Причина, по которой это не работает:

<?php echo $item->getAttributeText('manufacturer') ?> 

Вероятно, потому что manufacturer не в $itemродительская коллекция.

Вам нужно расширить метод, который получает коллекцию, и добавить атрибут производителя из Mage_Wishlist_Model_Resource_Item_Collection:

/**
 * Retrieve Wishlist Product Items collection
 *
 * @return Mage_Wishlist_Model_Resource_Item_Collection
 */
public function getWishlistItems()
{
    if (is_null($this->_collection)) {
        $this->_collection = clone $this->_createWishlistItemCollection();
        $this->_collection->clear();
        $this->_prepareCollection($this->_collection);
    }
    $this->_collection->addAttributeToSelect('manufacturer');
    return $this->_collection;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top