Сопутствующий продукт в нескольких позициях в одном сгруппированном продукте

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

Вопрос

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

Наша проблема в том, что на некоторых схемах одна и та же деталь присутствует в нескольких положениях.Например, одна и та же шайба может находиться в позициях 1, 15 и 40.Соответствующая сетка продуктов позволяет нам указать только одну позицию для этой шайбы.

Есть идеи, как можно настроить сгруппированный товар, чтобы можно было использовать несколько позиций связанного товара?Я уже несколько часов копаюсь, пытаясь найти способ добавить дополнительный атрибут к связанному продукту, но не нахожу там никаких возможностей.

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

Решение

После нескольких часов поиска в Интернете я смог найти решение на основе сообщения в еще один форум Magento.Я собираюсь переписать это здесь в надежде, что это поможет кому-то еще, кто наткнется.

Для этого подхода я решил добавить настраиваемый столбец в связанную сетку продуктов для моего сгруппированного продукта.Чтобы добавить новый столбец, я скопировал файл:app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php в мой локальный код по адресу: app/code/localMage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php

В функцию _prepareColumns()` я добавил это:

    $this->addColumn('diagrampos', array(
      'header'    => Mage::helper('catalog')->__('Other Position'),
      'name'      => 'diagrampos',
      'index'     => 'diagrampos',
      'width'     => '60px',
      'editable'  => true
    ));

Далее в этом файле нам нужно изменить getSelectedGroupedProducts() в строке 214, чтобы наши обновления в админке сохранялись корректно.Вот как это должно выглядеть сейчас:

    public function getSelectedGroupedProducts()
        {
        $associatedProducts = Mage::registry('current_product')->getTypeInstance(true)
                              ->getAssociatedProducts(Mage::registry('current_product'));
        $products = array();
        foreach ($associatedProducts as $product) {
            $products[$product->getId()] = array(
              'qty'       => $product->getQty(),
              'position'  => $product->getPosition(),
              'diagrampos'  => $product->getDiagrampos()
            );
        }
        return $products;
    }

Затем нам нужно обновить таблицу базы данных для catalog_product_link_attribute.Я добавил следующие значения в качестве новой строки в таблицу.Возможно, вам придется настроить первое значение в зависимости от текущего приращения в вашей таблице:

product_link_attribute_id   => 6
link_type_id                => 3
product_link_attribute_code => diagrampos
data_type                   => varchar

Дальше нам нужно изменить app/design/adminhtml/default/default/layout/catalog.xml чтобы сериализатор подхватил наше новое поле.Нам нужно изменить макет под узлом <adminhtml_catalog_product_supergroup> добавив новую строку под addColumnInputName чтобы это выглядело так:

    <action method="addColumnInputName">
        <input_name>qty</input_name>
        <input_name>position</input_name>
        <input_name>diagrampos</input_name>
    </action>

Теперь я могу добавить список целых чисел, разделенных запятыми, в это поле ввода.Благодаря умеренной настройке сгруппированных шаблонов продуктов я теперь могу отображать один и тот же SKU связанного продукта в нескольких позициях.

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