Расширенный профиль экспорта в Magento - PullRequest
2 голосов
/ 17 октября 2011

Я не могу найти никакой документации по этому вопросу, я даже не знаю, возможно ли это. Мне нужно экспортировать некоторые продукты, у меня уже есть профиль, потому что этот экспорт предназначен для конкурентоспособного сайта, такого как nextag.com или pricegrabber.com, мы хотим экспортировать только несколько продуктов, а не 3000, которые у нас есть.

Я мог бы создать логический атрибут с именем Export.

Проблема в том, как добавить профиль в профиль, чтобы экспортировать только те товары, для которых установлено значение yes?

Это код, который он генерирует:

<action type="catalog/convert_adapter_product" method="load">
    <var name="store"><![CDATA[5]]></var>
    <var name="filter/type"><![CDATA[simple]]></var>
    <var name="filter/price/from"><![CDATA[90]]></var>
    <var name="filter/price/to"><![CDATA[6000]]></var>
    <var name="filter/status"><![CDATA[1]]></var>
</action>

<action type="catalog/convert_parser_product" method="unparse">
    <var name="store"><![CDATA[5]]></var>
    <var name="url_field"><![CDATA[1]]></var>
</action>

<action type="dataflow/convert_mapper_column" method="map">
    <var name="map">
        <map name="sku"><![CDATA[MPN/UPC]]></map>
        <map name="brand"><![CDATA[Manufacturer]]></map>
        <map name="name"><![CDATA[Product Name]]></map>
        <map name="product_link"><![CDATA[product_link]]></map>
        <map name="condition"><![CDATA[Product Condition]]></map>
        <map name="price"><![CDATA[Selling Price]]></map>
        <map name="shipping_costs"><![CDATA[Shipping costs]]></map>
        <map name="weight_box1"><![CDATA[Weight]]></map>
    </var>
    <var name="_only_specified">true</var>
</action>

<action type="dataflow/convert_parser_csv" method="unparse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA["]]></var>
    <var name="fieldnames">true</var>
</action>

<action type="dataflow/convert_adapter_io" method="save">
    <var name="type">file</var>
    <var name="path">var/export</var>
    <var name="filename"><![CDATA[nextagfeed.csv]]></var>
</action>

Спасибо

1 Ответ

4 голосов
/ 17 октября 2011

Попробуйте добавить фильтр экспорта в ваши действия xml

<var name="filter/export"><![CDATA[1]]></var>

Что-то вроде

<action type="catalog/convert_adapter_product" method="load">
    <var name="store"><![CDATA[5]]></var>
    <var name="filter/type"><![CDATA[simple]]></var>
    <var name="filter/price/from"><![CDATA[90]]></var>
    <var name="filter/price/to"><![CDATA[6000]]></var>
    <var name="filter/status"><![CDATA[1]]></var>
    <var name="filter/export"><![CDATA[1]]></var>
</action>

<action type="catalog/convert_parser_product" method="unparse">
    <var name="store"><![CDATA[5]]></var>
    <var name="url_field"><![CDATA[1]]></var>
</action>

<action type="dataflow/convert_mapper_column" method="map">
    <var name="map">
        <map name="sku"><![CDATA[MPN/UPC]]></map>
        <map name="brand"><![CDATA[Manufacturer]]></map>
        <map name="name"><![CDATA[Product Name]]></map>
        <map name="product_link"><![CDATA[product_link]]></map>
        <map name="condition"><![CDATA[Product Condition]]></map>
        <map name="price"><![CDATA[Selling Price]]></map>
        <map name="shipping_costs"><![CDATA[Shipping costs]]></map>
        <map name="weight_box1"><![CDATA[Weight]]></map>
    </var>
    <var name="_only_specified">true</var>
</action>

<action type="dataflow/convert_parser_csv" method="unparse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA["]]></var>
    <var name="fieldnames">true</var>
</action>

<action type="dataflow/convert_adapter_io" method="save">
    <var name="type">file</var>
    <var name="path">var/export</var>
    <var name="filename"><![CDATA[nextagfeed.csv]]></var>
</action>

Это означает, что magento отфильтровывает коллекцию товаров по статусу цены и атрибуту экспорта, поскольку для экспорта задано логическое значение, в данном случае необходимо установить соответствующее логическое значение 1 для true.

Теперь, если это не сработает, возможно, будет проще добавить Parser вашего продукта и использовать расширенный импорт. Дайте мне знать, как это происходит.

Хорошо, теперь мы знаем, что определенно не работает, но давайте посмотрим, почему это не работает. Причина в том, что нам не хватает этого фильтра на нашем адаптере, открытом

app/core/Mage/Catalog/Model/Convert/Adapter/Product.php

ищите функцию загрузки вокруг строки 99:

public function load()
{
    $attrFilterArray = array();
    $attrFilterArray ['name']           = 'like';
    $attrFilterArray ['sku']            = 'startsWith';
    $attrFilterArray ['type']           = 'eq';
    $attrFilterArray ['attribute_set']  = 'eq';
    $attrFilterArray ['visibility']     = 'eq';
    $attrFilterArray ['status']         = 'eq';
    $attrFilterArray ['price']          = 'fromTo';
    $attrFilterArray ['qty']            = 'fromTo';
    $attrFilterArray ['store_id']       = 'eq';

    $attrToDb = array(
        'type'          => 'type_id',
        'attribute_set' => 'attribute_set_id'
    );

И чуть ниже идентификатора магазина добавьте свой новый фильтр

 $attrFilterArray ['is_imported']     = 'eq';

Приветствия

...