leroy-merlin-br/bazaarvoice-feed
一个用于生成Bazaarvoice XML产品交互数据的PHP库。
2.3.1
2024-06-19 17:01 UTC
Requires
- php: ^8.0
- ext-simplexml: *
- phpseclib/phpseclib: ~2.0.38
Requires (Dev)
- ext-curl: *
- mikey179/vfsstream: ~1.6.11
- phpunit/phpunit: ^7.5.20 || ^8.5.29
README
一个用于生成和通过sFTP发送XML Bazaarvoice 数据的PHP库。
安装
通过Composer
$ composer require leroy-merlin-br/bazaarvoice-feed
使用方法
创建数据流。
$productFeed = new \BazaarVoice\Product\Feed();
创建数据流元素。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed');
创建增量数据流。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed', true);
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed') ->setIncremental(true);
创建产品并将其添加到数据流中。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); $productElement = $productFeed->newProduct('my_product', 'My Product', 'product_category_123', 'http://www.example.com/my-product', 'http://www.example.com/images/my-product.jpg'); $feedElement->addProduct($product_element); $moreProducts = []; $secondProduct = $productFeed->newProduct('second_product', 'Second Product', 'product_category_456', 'http://www.example.com/second-product', 'http://www.example.com/images/second-product.jpg'); ->setDescription('This is my second product') ->addPageUrl('http://www.example.es/second-product', 'es_SP') ->setBrandId('my_brand_123') ->addUPC('012345'); $moreProducts[] = $secondProduct; $moreProducts[] = $productFeed->newProduct('third_product', 'Third Product', 'product_category_789', 'http://www.example.com/third-product', 'http://www.example.com/images/third-product.jpg') ->addISBN('123-456-7890') ->addPageUrl('http://www.example.co.uk/third-product', 'en_UK') ->addCustomAttribute('PRODUCT_FAMILY', 'example_products'); $feedElement->addProducts($moreProducts);
创建类别并将其添加到数据流中。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... $categoryElement = $productFeed->newCategory('my_category', 'My Category', 'http://www.example.com/my-product'); $feedElement->addCategory($categoryElement); $moreCategories = []; $secondCategory = $productFeed->newCategory('second_category', 'Second Category', 'http://www.example.com/second-category') ->setImageUrl('http://www.example.com/images/second-category.jpg') ->addImageUrl('http://www.example.co.uk/images/uk-second-category.jpg', 'en_UK') ->setParentId('parent_category_id'); $moreCategories[] = $secondCategory; $feedElement->addCategories($moreCategories);
创建品牌并将其添加到数据流中。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... $brandElement = $productFeed->newBrand('my_brand', 'My Brand'); $feedElement->addBrand($brandElement); $moreBrands = []; $secondBrand = $productFeed->newBrand('second_brand', 'Second Brand') ->addName('Duo Brand', 'es_SP') ->addName('Brand the Second', 'en_UK'); $moreBrands[] = $secondBrand; $moreBrands[] = $productFeed->newBrand('third_brand', 'Third Brand'); $feedElement->addBrands($moreBrands);
创建交互(订单)并将其添加到数据流中。
$orderFeed = new \BazaarVoice\Interaction\Feed(); $feedElement = $orderFeed->newFeed('Order feed'); $orderProducts = [ [ 'id' => 'productId123', 'name' => 'Product name', 'category' => 'Product Category', 'url' => 'http://product-url', 'imageUrl' => 'http://image-url', 'price' => 29, ], ]; $order = $feed->newInteraction('22/03/1987', 'john@doe.com', 'John Doe', 'userId123', 'pt_BR', $orderProducts); $feedElement->addInteraction($orderFeed); // $orderFeed->printFeed();
打印产品数据流XML字符串。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... print $productFeed->printFeed($feedElement);
将产品数据流保存为XML文件。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ');
通过sFTP将产品数据流发送到BazaarVoice生产环境。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... if ($feedFile = $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ') { try { $productFeed->sendFeed($feedFile, $sftpUsername, $sftpPassword); } catch (\Exception $e) { // Failed to FTP feed file. } }
通过sFTP将产品数据流发送到BazaarVoice测试环境。
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... if ($feedFile = $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ') { try { $productFeed->useStage()->sendFeed($feedFile, $sftpUsername, $sftpPassword); } catch (\Exception $e) { // Failed to FTP feed file. } }
测试
$ composer test
致谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。