Magento - Показать пользовательские атрибуты в таблице сгруппированных продуктов - PullRequest
5 голосов
/ 17 июня 2009

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

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

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

Код ниже не работает (пользовательский атрибут годовой):

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

Любая помощь будет оценена.

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

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 17 июня 2009

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

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

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

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();
1 голос
/ 06 февраля 2012

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

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

  2. Получить предмет, пример $_item[units]

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

  4. Вот и все:)

0 голосов
/ 18 мая 2011

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

0 голосов
/ 07 июня 2010

от вер. 1.3. и в версии 1.4 вы также должны использовать $ _ item , а не $ _ product , для меня это тоже хорошо работает в группируемой таблице.

Пример:

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