刚使用 Magento 几周,就成功地使用了高级导出配置文件(非常方便),我想做的是将 url 值添加到输出列之一,特别是图像 url。我想将 url 附加到路径输出的开头。
有人可以帮忙吗?
<action type="catalog/convert_adapter_product" method="load">
<var name="store"><![CDATA[0]]></var>
<var name="filter/price/from"><![CDATA[0.01]]></var>
<var name="filter/price/to"><![CDATA[999999]]></var>
<var name="filter/visibility"><![CDATA[4]]></var>
<var name="filter/status"><![CDATA[1]]></var>
</action>
<action type="catalog/convert_parser_product" method="unparse">
<var name="store"><![CDATA[0]]></var>
<var name="url_field"><![CDATA[0]]></var>
</action>
<action type="dataflow/convert_mapper_column" method="map">
<var name="map">
<map name="name"><![CDATA[ItemTitle]]></map>
<map name="upc"><![CDATA[EANBarCode]]></map>
<map name="description"><![CDATA[ItemTextDescription]]></map>
<map name="sku"><![CDATA[SKU]]></map>
<map name="qty"><![CDATA[StockLevel]]></map>
<map name="price"><![CDATA[CostPrice]]></map>
<map name="manufacturer"><![CDATA[Brand]]></map>
<map name="ebaycategory1"><![CDATA[eBayCategory1]]></map>
<map name="ebaycategory2"><![CDATA[eBayCategory2]]></map>
<map name="image"><![CDATA[Image1]]></map>
<map name="description"><![CDATA[ListingDescription]]></map>
<map name="name"><![CDATA[ListingTitle]]></map>
<map name="msrp"><![CDATA[OriginalRetailPrice]]></map>
<map name="conditionnote"><![CDATA[SellerNotes]]></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[testing123.csv]]></var>
</action>
在 Mage_Dataflow_Model_Convert_Mapper_Column 类中查看方法映射,您现在只有 2 个变量:map 和 _only_specified。
您需要做的是重写此类和此方法,并在设置 var 之后在第 125 行添加类似的内容:
if ($this->getVar('prepend') && is_array($this->getVar('prepend'))) {
$prepend = $this->getVar('prepend');
} else {
$prepend = array();
}
现在您有了一个新的变量前缀,您可以将其用于批处理数据,如下所示 - 在您拥有的同一类中的第 138 行:
$newRow = array();
foreach ($attributesToSelect as $field => $mapField) {
$newRow[$mapField] = isset($row[$field]) ? $row[$field] : null;
}
将其更改为:
$newRow = array();
foreach ($attributesToSelect as $field => $mapField) {
$prepend = isset($prepend[$field]) ? $prepend[$field] : '';
$newRow[$mapField] = isset($row[$field]) ? $prepend . $row[$field] : null;
}
现在,在上面发布的 xml 中,您可以添加一个前置变量,如下所示:
<action type="dataflow/convert_mapper_column" method="map">
<var name="prepend">
<map name="image"><![CDATA[http://example.com/]]></map>
我还没有测试过这个,但这就是我首先尝试的方法。也没有添加有关如何重写此模型类的部分,因为我认为那里有很多示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)