{"id":14985641,"url":"https://github.com/notdest/yandex-yml-generator","last_synced_at":"2025-06-18T12:36:22.211Z","repository":{"id":33983543,"uuid":"37734229","full_name":"notdest/yandex-yml-generator","owner":"notdest","description":":sunglasses: Генератор YML для Яндекс.Маркет на php, не требует  других библиотек.","archived":false,"fork":false,"pushed_at":"2022-07-27T15:51:02.000Z","size":239,"stargazers_count":48,"open_issues_count":2,"forks_count":15,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-25T09:06:47.285Z","etag":null,"topics":["yandex-market-language","yml"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/notdest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-19T16:47:23.000Z","updated_at":"2024-08-24T06:41:02.000Z","dependencies_parsed_at":"2022-09-09T10:00:45.112Z","dependency_job_id":null,"html_url":"https://github.com/notdest/yandex-yml-generator","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notdest%2Fyandex-yml-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notdest%2Fyandex-yml-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notdest%2Fyandex-yml-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notdest%2Fyandex-yml-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/notdest","download_url":"https://codeload.github.com/notdest/yandex-yml-generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230058836,"owners_count":18166310,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["yandex-market-language","yml"],"created_at":"2024-09-24T14:11:24.863Z","updated_at":"2024-12-20T03:09:32.029Z","avatar_url":"https://github.com/notdest.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Yml генератор на php\n============\n\nГенератор YML для быстрого подключения вашего магазина к Yandex.Market.\n- Встраивается по принципу «Удали лишнее из примера».\n- Очень прост, состоит из всего двух классов - `ymlDocument` и `ymlOffer`.\n- Зависит только от встроенных библиотек - `php-xml` и `php-mbstring`, обычно они уже установлены.\n\n### Установка\n```bash\ncomposer require notdest/yandex-yml-generator\n```\nЕсли без композера - подсоединяем два файла из папки `/src/`, как в примерах.\n\n### Проверка работоспособности\nСкачиваем проект и запускаем пример [arbitrary.php](examples/arbitrary.php). Может ругаться, что не может создать файл - даем права на запись папке с примерами. Получившийся файл `arbitrary.xml` проверяем [сервисом](https://webmaster.yandex.ru/tools/xml-validator/) Яндекса.\n\n### Устройство примеров\nДля каждого типа описаний сделан свой пример использования по принципу \"удали лишнее\". Порядок следования полей такой же, как и в документации, за исключением вынесенных в конструктор. Примеры выглядят вот так:\n```php\n// model, vendor, id, price, currencyId, categoryId\t, [price from - \"цена от ххх руб.\" ]\n$offer = $y-\u003earbitrary( '3811', 'Brand', 'id01id1111', 900, \"USD\", 15 /* , true*/ );\n\n$offer\t-\u003ecbid(80)\t\t\t\t//\tРазмер ставки на карточке товара. 0,8 у.е.\n\t-\u003eurl(\"http://magaz.ru/tovar.html\")\t// !!!\tусловно обязательный. URL страницы товара \n\t//-\u003evat('VAT_10_110') отсутствует в схеме\t// Ставка НДС для товара.\n```\nЗдесь `arbitrary()` создает предложение типа «произвольный», в него вынесены гарантированно обязательные поля. Метод  `cbid()` уже не обязателен, его можно просто удалить, если он не нужен. Метод `url()` также можно удалить, но без него не будет работать модель «Переход на сайт» . Далее, метод `vat()` описан в документации, но отсутствует в xsd-схеме указанной в [технических требованиях](https://yandex.ru/support/webmaster/goods-prices/technical-requirements.html) и не проходит валидацию.\n Каждая строчка имеет комментарий. Файлы примеров:\n\nТип предложения\t\t\t| \tПример\t\t\t\t\t\t\t\t\t\t\t\t| Дата валидации\n----------------\t\t| ------------- \t\t\t\t\t\t\t\t\t\t| -------\nУпрощенный\t\t\t\t| [examples/simple.php](examples/simple.php)\t\t\t| 11.08.2019\nПроизвольный \t\t\t| [examples/arbitrary.php](examples/arbitrary.php)\t\t| 11.08.2019\nКниги\t\t\t\t\t| [examples/book.php](examples/book.php)\t\t\t\t| 11.08.2019\nАудиокниги\t\t\t\t| [examples/audiobook.php](examples/audiobook.php)\t\t| 11.08.2019\nАудио и видеопродукция\t| [examples/artist.php](examples/artist.php)\t\t\t| 11.08.2019\nТуры\t\t\t\t\t| [examples/tour.php](examples/tour.php)\t\t\t\t| 11.08.2019\nМероприятия\t\t\t\t| [examples/event.php](examples/event.php)\t\t\t\t| 11.08.2019\nЛекарства\t\t\t\t| [examples/medicine.php](examples/medicine.php)\t\t| 11.08.2019\n\nВалидация проводилась с помощью [сервиса Яндекса](https://webmaster.yandex.ru/tools/xml-validator/), указывая тип *\"Маркет\"*.\n\n### Сверить с документацией Яндекса\nДокументация у Яндекса сделана преимущественно в виде таблиц. Соответственно я задокументировал свои примеры такими же таблицами с аналогичным порядком следования полей, описав текущие правила и ограничения. Просто открываете рядом два окна браузера, с документацией Яндекса и моей, и ищете различия. Нет различий - хорошо, есть - пишете на *e-mail* в профиле.\n\nТаблица Яндекса\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| \tТаблица моя\t\t\n----------------------- \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t| ------------- \n[Общие поля магазина](https://yandex.ru/support/partnermarket/export/yml.html)\t\t\t| [Общие поля магазина](docs/yml.md)\n[Упрощенный тип](https://yandex.ru/support/partnermarket/offers.html)\t\t\t\t\t| [Упрощенный тип](docs/simple.md)\n[Произвольный тип](https://yandex.ru/support/partnermarket/export/vendor-model.html)\t| [Произвольный тип](docs/arbitrary.md)\n[Книги](https://yandex.ru/support/partnermarket/export/books.html)\t\t\t\t\t\t| [Книги](docs/book.md)\n[Аудиокниги](https://yandex.ru/support/partnermarket/export/audiobooks.html)\t\t\t| [Аудиокниги](docs/audiobook.md)\n[Аудио и видеопродукция](https://yandex.ru/support/partnermarket/export/music-video.html)| [Аудио и видеопродукция](docs/artist.md)\n[Туры](https://yandex.ru/support/partnermarket/export/tours.html)\t\t\t\t\t\t| [Туры](docs/tour.md)\n[Мероприятия](https://yandex.ru/support/partnermarket/export/event-tickets.html)\t\t| [Мероприятия](docs/event.md)\n[Лекарства](https://yandex.ru/support/partnermarket/export/medicine.html)\t\t\t\t| [Лекарства](docs/medicine.md)\n\nНе обязательно проверять все, используются обычно общие поля и какой-то один тип.\n\nТакже был сделан нагрузочный тест [examples/stress-test.php](examples/stress-test.php). Для генерации файла объемом 500 Мб (максимально разрешенный Яндексом) понадобилось 143 секунды, потребление памяти составило 2 Мб. Или 31 секунда на моем новом компе.\n\nВ случае необходимости внести изменения, рекомендую сначала ознакомиться с документацией по классам [ymlDocument](docs/ymlDocument.md) и [ymlOffer](docs/ymlOffer.md).\n\n**P.S.** Ставь звездочки, если считаешь, что проект должен быть в топе.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotdest%2Fyandex-yml-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotdest%2Fyandex-yml-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotdest%2Fyandex-yml-generator/lists"}