公共品 / 出价订阅
简单的出价或购买XML订阅生成器。
Requires
- php: ^7.1
- ext-dom: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^7.5
- symfony/var-dumper: ^4.3
This package is auto-updated.
Last update: 2021-12-01 07:59:23 UTC
README
出价或购买XML库
BidFeed是出价或购买XML订阅的XML生成器。
安装
BidFeed应通过Composer安装
composer require thepublicgood/bidfeed
使用方法
如果您不是使用自动加载自动加载器的框架,则需要 require
Composer自动加载器。
首先,创建一个TPG\BidFeed\Builder
的新实例。在Builder
上。
require __DIR__.'/vendor/autoload.php'; $feed = new TPG\BidFeed\Builder();
Builder
类提供了一个返回TPG\BidFeed\Collection
实例的products()
方法。您可以通过推送新的TPG\BidFeed\Product
实例来向订阅中添加新产品。
$product = new Product(); $feed->products()->push($product);
生成XML
在任何时候,您都可以通过在Builder
实例上调用toXml()
方法来获取XML的副本。
$xml = $feed->toXml(); // You can also save it directly to a file by passing a filename: $feed->toXml('feed.xml');
调用toXml()
方法不会以任何方式更改实例,因此您可以在生成XML输出后继续构建产品。
toXml()
方法还将调用每个Product
实例上的verifyAttributes()
方法。如果缺少任何内容,将抛出MissingRequiredAttribute
异常。
添加产品
您通过添加产品来构建订阅。Product类提供了一个用于处理产品的简单API。
单个产品由一个Product实例表示。Builder::products()方法始终返回一个包含一组Product实例的Collection实例。
// You can... $feed->products()->push((new Product())->...); // or add multiple products at once... $feed->products()->push([$product1, $product2]);
必需属性
$product->name($productName) ->code($productCode) ->category($category) ->price($price, $marketPrice) ->availableQuantity($quantity) ->description($description);
一些属性通常不是必需的,除非产品需要出现在出价或购买的Google Ads中,那么这些属性必须是提供的
$product->gtin($productGtin) // GTIN (GTIN-12 or GTIN-13) ->mpn($mpn); // MPN
需要许多属性。所有产品都必须有名称、产品代码、类别、价格、数量和描述。如果单个产品中缺少这些属性中的任何一个,将抛出MissingRequiredAttribute
异常。
设置产品代码
产品必须有一个唯一的产品代码,并且不能更改。任何重复的产品代码都将被忽略,并且产品将不会导入。产品代码的最大长度为100个字符。
$product->code('CODE-000111');
设置产品名称
所有产品都必须有名称。您可以使用name
方法指定产品名称。产品名称不能超过100个字符。
$product->name('My Product');
设置描述
产品描述应包含产品的详细信息。它可以是长达8000个字符的,并且可以包含一些有限的HTML。BidFeed库当前允许P
和BR
html元素。
$product->description('<p>Product description</p>');
设置类别
产品类别必须与APP产品一起提供,并且最好基于Google的分类法。请参阅https://support.google.com/merchants/answer/6324436。建议指定完整的类别路径。category
方法接受一个类别名称数组。所以如果类别应该是Electronics - Laptops - Apple
,你可以这样做:
$product->category(['Electronics', 'Laptops', 'Apple']);
设置价格
所有产品都必须设置价格。产品可以有三种价格。实际销售价格,这是必须的,和市场价格,这是可选的。市场价格仅作为参考,不作为任何销售价格。
您可以通过将销售价格和市场价格作为浮点数传递给price()
方法来设置这两种价格,或者使用marketPrice()
方法单独设置市场价格。
// Set a selling price $product->price(199.95); // Set a selling price and market price $product->price(199.95, 219.95); // Set a marketing price $product->marketPrice(211.50);
可用数量
出价或购买需要指定可用数量。您可以使用availableQuantity()
方法指定数量。任何数量为0的产品将不会导入。
$product->availableQuantity(10);
产品图片
所有产品都必须包含图片。至少要提供一张图片。您可以提供多张图片,但只有第一张图片将被用作产品封面图片。图片的显示顺序与提供的顺序相同。
您可以通过将一个数组传递给images()
方法来提供一组图片URL。
$product->images([$image1, $image2]);
图片存储为Collection
实例。您可以使用imageCollection()
方法访问实例。
// Add an image to the collection $product->imageCollection()->add($imageUrl3);
产品属性
产品可以有一个可选的自定义属性集。在这里添加Brand
属性很常见,但您可以添加任何需要的属性。根据Bid或Buy数据源规范,与市场值不匹配的属性将被忽略,因此您应该只添加特定类别的属性。
$product->productAttributes([ 'Brand' => 'Apple' ]);
保证和保修
产品可以设置保证和/或保修。您可以使用guarantee
方法设置保证,并使用warranty
方法设置保修。这两种方法都具有相同的签名
$product->guarantee($type, $text); $product->warranty($type, $text);
BidFeed提供了一套保证和保修类型的常量
GUARANTEE_NOT_OFFERED; // No guarantee GUARANTEE_MONEY_BACK_7; // 7 day money back guarantee GUARANTEE_MONEY_BACK_10; // 10 day GAURANTEE_MONEY_BACK_15; // 15 day GUARANTEE_MONEY_BACK_30; // 30 day GUARANTEE_REPLACEMENT_7; // 7 day replacement guarantee GUARANTEE_REPLACEMENT_10; // 10 day GAURANTEE_REPLACEMENT_15; // 15 day GUARANTEE_REPLACEMENT_30; // 30 day WARRANTY_NOT_OFFERED; // No warranty WARRANTY_REPLACEMENT; // Replacement warranty WARRANTY_DEALER; // Dealers warranty WARRANTY_MANUFACTURER; // Manufacturers warranty
第二个参数允许您指定有关保证或保修的更多详细信息。如果第一个参数不是`GUARANTEE_`,则必须提供文本。