Magento - Показывать пользовательские атрибуты в сгруппированной таблице продуктов

StackOverflow https://stackoverflow.com/questions/1005394

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне нужно найти способ показать значение пользовательского атрибута вместо "Названия продукта", показанного на изображении ниже.

Grouped products table
(источник: magentocommerce.com)

Я работаю с /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

Приведенный ниже код не работает (пользовательский атрибут имеет значение yearmade).:

<?php if (count($_associatedProducts)): ?>  
<?php foreach ($_associatedProducts as $_item): ?>  
    <tr>  
        <td><?php echo $this->htmlEscape($_item->getYearmade()) ?></td>

Будем признательны за любую помощь.

Редактировать:Так что ответ оказался довольно простым.Видите ли, о чем я не упомянул выше, так это о том, что там был действительно выходной...но чтобы это было просто число (например:52).Оказывается, это был идентификатор для значения пользовательского атрибута (это был выпадающий тип пользовательского атрибута).

Итак, вкратце
Это работает для пользовательских атрибутов типа text:

echo $this->htmlEscape($_item->getYearmade())

Но для всех других типов пользовательских атрибутов (я думаю) следует использовать следующее:

echo $this->htmlEscape($_item->getAttributeText('yearmade'))

Я бы не обнаружил этого без самого превосходного ответа, предоставленного Аланом Штормом ниже.Благодарю вас, сэр.

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

Решение

У всех моделей Magento есть " getData " доступный метод, который будет возвращать php-массив пар ключ / значение. Попробуйте это в верхней части файла grouped.phtml (после определения $ _product)

print('<pre>');print_r($_product->getData());print('</pre>');

Вы должны увидеть вывод, похожий на следующий.

Array
(
    [store_id] => 1
    [entity_id] => 3437
    [entity_type_id] => 4
    [attribute_set_id] => 27
    [type_id] => grouped
    [sku] => 
    [category_ids] => 
    [created_at] => 2009-04-16 03:37:51
...     

Итак, вы можете получить массив свойств и просто вытащить ключ. Вы также можете использовать удобные / волшебные методы Magento getX и setX. Во всех моделях Magento вы можете получить доступ к любому свойству в массиве данных, вызвав метод, основанный на версии имени в случае верблюда,

$created_at = $_product->getCreatedAt();
$_product->setCreatedAt($date);

Итак, каким бы ни было ваше имя пользовательского атрибута, вы сможете получить его, используя описанное выше, а если вы не уверены, просто напечатайте print_r или var_dump содержимое массива, возвращаемого getData ().

Наконец, если пользовательский атрибут входит в простой продукт одного из связанных продуктов, вам понадобится что-то более похожее

$_associatedProducts[0]->getCreatedAt();

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

У меня была такая же проблема. <Ол>

  • Вы должны найти grouped.phtml app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml

  • Получить элемент, пример $_item[units]

  • Добавьте ячейку в таблицу и вставьте echo $_item['units'];

  • Вот и все :)

  • Из вер.1.3.и в 1.4 тоже вы должны использовать $_item (элемент) нет $_продукт, для меня это прекрасно работает и в группируемой таблице.

    Пример:

    <?php echo $_item->getAttributeText('your attribute'); ?>
    

    Есть плагины, которые могут действительно легко решить ваше решение. Здесь вы можете найти плагин, который берет параметры продукта и отображает их в виде сетки: http: // www.magemechanics.com/product-grid-options.html

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top