Как дополнить таблицу связанных товаров дополнительными столбцами?

атрибутами

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 10:47

С помощью атрибутов я могу добавить в табличку еще две колонки (см. рисунок). Или как это еще можно сделать?
Изображение

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 11:37

Указанная вами таблица расположена в шаблоне catalog/product/view/type/grouped.phtml вашей темы

#3 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 12:20

Спасибо.
Здесь еще одно но, в примере, как выводить атрибуты - выводится атрибут для основного товара, на чьей карточке мы есть.
А как мне изменить вывод, вывести атрибут для связанного товара с таблички?

echo $_product->getColor();


#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 12:27

Рядовые товары «группы однотипных товаров» являются экземплярами класса Mage_Catalog_Model_Product, как и любые другие товары, поэтому их свойства выводятся точно также как и свойства других видов товаров.

В указанном мной шаблоне есть пример вывода названия и цены товаров «группы однотипных товаров».

#5 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 12:41

То есть разницы нет ...
Но почему-то ничего не выводится.

<catalog_category_default translate="label">
       ...
    
        <reference name="content">
            <block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
                <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
                   
				   <action method="addAttribute"><name>color</name></action>
...


 <td><?php echo $this->htmlEscape($_item->getName()); echo $_product->getColor(); ?></td>


Тогда же в чем может быть причина? Атрибут существует, настроен на отображение, товар тоже получил значение атрибута (выпадающий список)...

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 12:43

Опубликуйте административные настройки свойства color.

#7 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 12:52

Прикрепленное изображение: screen.jpg

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 13:07

Значения свойств типа выпадающий список (dropdown) выводятся иначе, нежели значения свойств текстового типа.
Для вывода значения свойства типа выпадающий список (dropdown) надо вызвать метод товара getAttributeText, например:

$product->getAttributeText('test')


#9 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 13:16

Но тогда выдает ошибку "Fatal error: Call to a member function getAttributeText() on a non-object in"
$product->getAttributeText('color');


#10 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 13:21

А переменная $product у вас инициализирована?

#11 Мика Рух
  • Группа: Пользователь
  • Сообщений: 68
  • Регистрация: 22.11.2011

23.11.2011 14:03

...Не знаю. А как ее инициализировать? В catalog/product/view/type/grouped.phtml переменной $product не встречается.

Код:
<?php $this->setPreconfiguredValue(); ?>
<?php $_product = $this->getProduct(); ?>
<?php $_associatedProducts = $this->getAssociatedProducts(); ?>
<?php $_hasAssociatedProducts = count($_associatedProducts) > 0; ?>
<?php if ($_product->isAvailable() && $_hasAssociatedProducts): ?>
    <p class="availability in-stock"><?php echo $this->__('Availability:') ?> <span><?php echo $this->__('In stock') ?></span></p>
<?php else: ?>
    <p class="availability out-of-stock"><?php echo $this->__('Availability:') ?> <span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
<?php echo $this->getChildHtml('product_type_data_extra') ?>
<table class="data-table grouped-items-table" id="super-product-table">
    <col />
    <col />
    <col width="1" />
    <thead>
        <tr>
            <th><?php echo $this->__('Farbe') ?></th>
            <?php if ($this->getCanShowProductPrice($_product)): ?>
            <th class="a-right"><?php echo $this->__('Price') ?></th>
            <?php endif; ?>
            <?php if ($_product->isSaleable()): ?>
            <th class="a-center"><?php echo $this->__('Qty') ?></th>
            <?php endif; ?>
        </tr>
    </thead>
    <tbody>
    <?php if ($_hasAssociatedProducts): ?>
    <?php foreach ($_associatedProducts as $_item): ?>
        <?php $_finalPriceInclTax = $this->helper('tax')->getPrice($_item, $_item->getFinalPrice(), true) ?>
        <tr>
            <td><?php echo $this->htmlEscape($_item->getName()); echo $product->getAttributeText('color');  ?>
			</td>
            <?php if ($this->getCanShowProductPrice($_product)): ?>
            <td class="a-right">
                <?php if ($this->getCanShowProductPrice($_item)): ?>
                <?php echo $this->getPriceHtml($_item, true) ?>
                <?php echo $this->getTierPriceHtml($_item) ?>
                <?php endif; ?>
            </td>
            <?php endif; ?>
            <?php if ($_product->isSaleable()): ?>
            <td class="a-center">
            <?php if ($_item->isSaleable()) : ?>
                <input type="text" name="super_group[<?php echo $_item->getId() ?>]" maxlength="12" value="<?php echo $_item->getQty()*1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
            <?php else: ?>
                <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
            <?php endif; ?>
            </td>
            <?php endif; ?>
        </tr>
    <?php endforeach; ?>
    <?php else: ?>
       <tr>
           <td colspan="<?php if ($_product->isSaleable()): ?>4<?php else : ?>3<?php endif; ?>"><?php echo $this->__('No options of this product are available.') ?></td>
       </tr>
    <?php endif; ?>
    </tbody>
</table>


#12 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.11.2011 14:06

В данном контексте эта переменная называется $_item.

Поделиться темой: