Magento - Показывать пользовательские атрибуты в сгруппированной таблице продуктов
-
05-07-2019 - |
Вопрос
Мне нужно найти способ показать значение пользовательского атрибута вместо "Названия продукта", показанного на изображении ниже.
(источник: 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 р>