avpet979/yml-generator

YML (Yandex Market Language) 文件生成器

v1.11.9 2023-05-10 10:23 UTC

README

Build Status Code Coverage Scrutinizer Code Quality License Latest Stable Version Total Downloads

关于

YML (Yandex Market Language) 生成器。使用标准 XMLWriter 生成 YML 文件。不需要其他库,只需 PHP 5.5.0 或更高版本。

生成器支持以下报价类型

安装

运行 composer require

composer require avpet979/yml-generator

或者将其添加到你的 composer.json 文件中

"require": {
	"avpet979/yml-generator": "dev-master",
}

使用示例

<?php

use Avpet979\YmlGenerator\Model\Offer\OfferSimple;
use Avpet979\YmlGenerator\Model\Category;
use Avpet979\YmlGenerator\Model\Currency;
use Avpet979\YmlGenerator\Model\Delivery;
use Avpet979\YmlGenerator\Model\ShopInfo;
use Avpet979\YmlGenerator\Settings;
use Avpet979\YmlGenerator\Generator;

$file = tempnam(sys_get_temp_dir(), 'YMLGenerator');
$settings = (new Settings())
    ->setOutputFile($file)
    ->setEncoding('UTF-8')
;

// Creating ShopInfo object (https://yandex.ru/support/webmaster/goods-prices/technical-requirements.xml#shop)
$shopInfo = (new ShopInfo())
    ->setName('BestShop')
    ->setCompany('Best online seller Inc.')
    ->setUrl('http://www.best.seller.com/')
;

// Creating currencies array (https://yandex.ru/support/webmaster/goods-prices/technical-requirements.xml#currencies)
$currencies = [];
$currencies[] = (new Currency())
    ->setId('USD')
    ->setRate(1)
;

// Creating categories array (https://yandex.ru/support/webmaster/goods-prices/technical-requirements.xml#categories)
$categories = [];
$categories[] = (new Category())
    ->setId(1)
    ->setName($this->faker->name)
;

// Creating offers array (https://yandex.ru/support/webmaster/goods-prices/technical-requirements.xml#offers)
$offers = [];
$offers[] = (new OfferSimple())
    ->setId(12346)
    ->setAvailable(true)
    ->setUrl('http://www.best.seller.com/product_page.php?pid=12348')
    ->setPrice($this->faker->numberBetween(1, 9999))
    ->setCurrencyId('USD')
    ->setCategoryId(1)
    ->setDelivery(false)
    ->setName('Best product ever')
;

// Optional creating deliveries array (https://yandex.ru/support/partnermarket/elements/delivery-options.xml)
$deliveries = [];
$deliveries[] = (new Delivery())
    ->setCost(2)
    ->setDays(1)
    ->setOrderBefore(14)
;

(new Generator($settings))->generate(
    $shopInfo,
    $currencies,
    $categories,
    $offers,
    $deliveries
);

添加自定义元素

如果你需要在 yml 文件中使用额外的报价元素,可以使用方法 addCustomElement('type','value')。例如

$offers[] = (new OfferSimple())
    ->setId(12346)
    ->setAvailable(true)
    ->setUrl('http://www.best.seller.com/product_page.php?pid=12348')
    ->setPrice($this->faker->numberBetween(1, 9999))
    ->setCurrencyId('USD')
    ->setCategoryId(1)
    ->setDelivery(false)
    ->setName('Best product ever')
    ->addCustomElement('type', 'value')
;

版权 / 许可

查看 LICENSE