http://doc.prestashop.com/display/PS16/Web+service+reference 没有列出任何"附件"或"product_attachments"等资源。此外,由于列表中存在的相应资源,我已经测试了获取产品,但产品不包含附件的任何引用 ID,以 JSON 格式命名附件对象。
那么如何获取产品附件呢?至少可能吗?
它没有,或者至少我可以找到它。
您可以通过覆盖核心Product
类来添加它。
-
添加新方法
public function getWsProductAttachments() { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( 'SELECT pa.`id_attachment` AS id, a.file, a.file_name FROM `' . _DB_PREFIX_ . 'product_attachment` pa LEFT JOIN `' . _DB_PREFIX_ . 'attachment` a ON (a.id_attachment = pa.id_attachment) ' . Shop::addSqlAssociation('attachment', 'a') . ' WHERE pa.`id_product` = ' . (int) $this->id ); return $result; }
-
将下一个元素添加到
$webserviceParameters['associations']
属性:'attachments' => array( 'resource' => 'product', 'api' => 'products', 'getter' => 'getWsProductAttachments', 'fields' => array( 'id' => array('required' => true), 'file' => array(), 'file_name' => array(), ), ),
现在,您的products/{id}
请求将返回类似
<attachments nodeType="product" api="products">
<product>
<id><![CDATA[1]]></id>
<file><![CDATA[cc046998a333a9bffaa23ce292f2da43edb37065]]></file>
<file_name><![CDATA[bbb.yml]]></file_name>
</product>
<product>
<id><![CDATA[2]]></id>
<file><![CDATA[b04566afd74cdaa54c921c8907c7efd489a2eec0]]></file>
<file_name><![CDATA[aaa.csv]]></file_name>
</product>
</attachments>
您可以下载附件,例如my.shop/download/cc046998a333a9bffaa23ce292f2da43edb37065