Как быстро составить 1000 объявлений контекстной рекламы из YML-файла
Запуск рекламной кампании неразрывно связан с подбором ключевых фраз и составлением продающих объявлений. Для интернет-магазинов с 20-30 товарами этот процесс не занимает много времени, даже если все делать вручную. Но если нужно прорекламировать 200, 500 или даже 1000 товаров, то задача становится слишком трудоемкой.
Решить проблему поможет генератор из YML. За пару кликов он сгенерирует ключевые фразы и объявления для каждой позиции в вашем ассортименте.
Рассмотрим, что умеет инструмент и как с ним работать.
Кому и для каких задач подходит генератор из YML
Как работать с генератором ключей и объявлений
Шаг 1. Добавление YML-файла
Шаг 2. Генерация ключевых слов
Шаг 3. Генерация объявлений для Яндекс.Директ
Шаг 4. Генерация объявлений для Google Ads
Шаг 5. Получение результата
Сколько стоит инструмент
Кому и для каких задач подходит генератор из YML
Генератор из YML позволяет собрать ключевые фразы из YML–файла. Сгенерированные ключевики используются для расширения семантики сайта и запуска контекстной рекламы.
Инструмент подходит интернет-магазинам с широким ассортиментом товаров, которые выставляют свои предложения на Яндекс.Маркете в формате YML.
Возможности генератора из YML:
- Быстрая генерация ключевых фраз из файла YML для поискового продвижения или контекстной рекламы.
- Автоматическое создание объявлений для каждого товара (отдельно для Яндекс.Директа и Google Ads).
- Настраиваемые шаблоны ключей и объявлений.
- Создание нескольких шаблонов объявлений для одного и того же товара.
- Ограничение длины заголовков и описаний объявлений (по количеству слов или символов).
- Доступно 4 элемента объявления: заголовок 1, заголовок 2, описание, отображаемая ссылка.
- Для всех объявлений доступен предварительный просмотр.
Преимущества использования генератора из YML:
- Не нужно специально загружать YML файл — достаточно указать ссылку на него.
- Результат выгружается в формате XLS.
- По завершении формирования отчета на e-mail приходит уведомление.
- Отчет хранится в «облаке» неограниченное время.
- Инструмент бесплатный.
Как работать с генератором ключей и объявлений
Зарегистрированные пользователи Click.ru могут бесплатно пользоваться возможностями генератора из YML.
Если у вас еще нет аккаунта, заведите его. Подробнее о процессе регистрации и запуске рекламы через Click.ru читайте в статье «Как запустить рекламу в Яндекс.Директ и Google Ads через Click.ru».
Шаг 1. Добавление YML-файла
После авторизации перейдите на страницу инструмента. Для этого в левом меню в разделе «Инструменты» выберите «Объявления» — «Генератор из YML»:
Нажмите «Добавить задачу». Укажите ссылку на свой YML-файл.
Для справки: Что такое файл YML и где его взять
YML (Yandex Market Language) — это стандарт на основе XML, разработанный Яндексом. Служит для передачи данных о товарах интернет-магазинов в Яндекс.Маркет.
Файл YML содержит в структурированном и стандартизированном виде информацию о товарах магазина: название, цена, категория, описание и т. д. Преимущество YML перед другими форматами — в возможности автоматизировать обновление информации о товарах в Яндекс.Маркете.
Структура документа YML выглядит так:
Может быть 2 ситуации:
- ваш магазин уже принят в Яндекс.Маркет. Если прайс-лист создан в формате YML, то файл будет располагаться в корне сайта. Если вы подгружаете товары с помощью XLS, CSV и TSV, то файл YML нужно создать и разместить в корневой папке;
- ваш магазин не добавлен в Яндекс.Маркет. В такой ситуации у вас не будет YML, и его надо сгенерировать.
Создается YML-файл разными способами: вручную, с помощью CMS, скрипта или генератора.
Шаг 2. Генерация ключевых слов
Генератор ключевых слов работает по принципу шаблона. В квадратных скобках указаны переменные элементы шаблона, которые подгружаются из YML-файла. Текст, который будет оставаться без изменений, указывается за квадратными скобками (до или после переменных элементов).
Доступные элементы:
- Название товара (в синтаксисе YML — name).
- Название бренда (vendor).
- Тип товара (typePrefix).
- Категория (category).
- Описание (description).
- Цена (price).
Для добавления переменного элемента в шаблон просто перетащите его из поля справа в поле шаблона:
При необходимости вы можете добавить столько шаблонов, сколько нужно (кнопка «Добавить шаблон для генерации слов»).
Бывает, что необходимо подкорректировать содержание элемента шаблона (например, название товара слишком длинное). В этом случае нажмите на значок шестеренки в поле шаблона, чтобы перейти в режим настройки тегов для этого шаблона.
В этом режиме для каждого переменного элемента шаблона вы можете:
- Указать регистр слов («С заглавной буквы», «Нижний регистр», «Верхний регистр», «Название Товара»).
- Задать правила обрезки фраз (например, оставить только 3 первых слова или 40 первых символов).
После сохранения изменений ключевые фразы формируются с учетом заданных правил:
Как составить шаблоны ключевых фраз:
- Воспользуйтесь Яндекс Wordstat для сбора базового семантического ядра (собирайте ключи по категориям товаров — «кроссовки», «сапоги», «ботинки»
и т. п.). Подробнее об использовании Яндекс Wordstat в контекстной рекламе читайте здесь. - После этого посмотрите, какие синтаксические конструкции наиболее характерны для вашей тематики (ваша задача — определить плюс-слова и то, как пользователи формулируют запросы).
- Исходя из собранной информации сформируйте шаблоны ключевых фраз, которые помогут привлечь целевую аудиторию.
Пример. В Яндекс Wordstat вводим запрос «электродрель» и получаем ориентировочный список фраз:
На основе проанализированной информации можно сформировать такие шаблоны:
- Купить [Название товара]
- [Тип товара] [Название бренда] цена
- [Категория] интернет-магазин
- [Категория] Москва
- Купить [Название товара] Москва
- Купить [Категория] [Название бренда] недорого
И это только начало. Вариантов может быть масса. В зависимости от тематики могут добавляться плюс-слова «от производителя», «оптом», «в розницу», «продажа», «цена за кг» и др.
Следите, чтобы статические слова не конфликтовали с переменными элементами. Например, если в ассортименте магазина есть дрели и сверла, то шаблон вида «[Категория] аккумуляторные» даст адекватную фразу «дрели аккумуляторные» и бессмысленную «сверла аккумуляторные»
Шаг 3. Генерация объявлений для Яндекс.Директ
С помощью шаблона генерируются объявления для рекламы в Яндексе. Принцип работы аналогичен шаблону для генерации ключей.
Помните, что длина полей имеет ограничения:
- Заголовок 1-35 символов с пробелами.
- Заголовок 2-30 символов с пробелами.
- Описание — 81 символ с пробелами.
- Отображаемая ссылка — 20 символов с пробелами.
Для «обрезания» фраз в каждом поле можно пойти одним из двух путей:
1. Задать максимальное количество символов
То есть придется убирать слова, которые обрезались. Чтобы такого не произошло, воспользуйтесь вторым способом.
2. Ограничить максимальное количество слов. Например, для заголовка 1 обычно устанавливают не более 2-3 слов. Этот способ менее трудоемкий, чем предыдущий. Тем не менее необходимо просмотреть и при необходимости откорректировать объявления перед размещением, ведь из-за длинных слов лимит может быть превышен.
Шаг 4. Генерация объявлений для Google Ads
Здесь все аналогично созданию объявлений для Яндекс.Директа. Отличие лишь в том, что тут 2 поля для отображаемого URL:
Также отличается максимальная длина текста в полях:
- Заголовок 1-30 символов с пробелами.
- Заголовок 2-30 символов с пробелами.
- Описание — 80 символов с пробелами.
- Отображаемая ссылка 1 — 15 символов с пробелами.
- Отображаемая ссылка 2 — 15 символов с пробелами.
Шаг 5. Получение результата
После генерации ключей и объявлений отчет в формате XLSX доступен в списке задач. Здесь же есть ссылка, по которой вы можете проверить частотность сгенерированных ключей с помощью парсера Wordstat. О том, как с его помощью отобрать фразы, которые обеспечивают трафик, читайте здесь.
В отчете 2 листа. На первом собраны ключи и объявления для Яндекса, на втором — для Google.
Если вы генерируете несколько сотен или тысяч объявлений, это займет пару минут. После запуска процесса не обязательно держать браузер открытым. По завершении генерации вам на почту придет уведомление.
Сколько стоит инструмент
Инструмент бесплатный для всех пользователей, зарегистрированных в Click.ru. Ограничений по количеству сгенерированных ключей и объявлений нет.
С генератором из YML создание 1000 объявлений за 5 минут становится реальностью. Конечно, нужно потратить пару часов на «шлифовку», но эта работа несравнима с полностью ручным составлением текстов.
Хотите увеличить доход от ведения контекстной и таргетированной рекламы? Регистрируйтесь в Click.ru, подключайте аккаунты своих клиентов к системе и получайте вознаграждение до 12% от их расходов на контекст и до 18% — на таргет.
Импорт товаров из YML
Если у вас есть данные о товарах от поставщика в виде файла формата YML — вы можете воспользоваться данной инструкцией, чтобы добавить товары из такого файла.
YML — стандарт Яндекс Маркета, который основан на XML, подробнее о его структуре можно прочитать здесь.
- Алгоритм выполнения импорта
- Настройки импорта
- Параметры
Алгоритм выполнения импорта
1. Перейдите в раздел Товары → Импорт/Экспорт → Склад и нажмите «Новый импорт», в выпадающем списке выберите «из YML»
2. Выберите файл для импорта на вашем компьютере, выберите (если есть) языковую версию сайта, для которой производится импорт. Если вы обновляете список товаров — проставьте настройки в соответствии с вашими потребностями.
Нажмите «Загрузить». Если система покажет ошибку — обратитесь в техподдержку InSales.
Важно: идентификация товарных предложений проходит по атрибуту offer_id в блоках offer, который сохраняется в специальное скрытое дополнительное поле товара при его создании через YML импорт. В связи с этим, если товар создавался не импортом или из файла с другими offer_id, то он будет дублироваться, а не обновлять существующий.
Настройки импорта
Большинство настроек отключают обновление указанных атрибутов товара в системе, их назначение интуитивно понятно. Рассмотрим некоторые настройки импорта.
Обнулить остатки товарам, отсутствующим в файле импорта — остаток товаров, которых нет в файле станет равен нулю. Данная настройка учитывает складскую категорию, в которую производится импорт. Если импорт производится не в категорию «Склад», а в ее подкатегорию, то обнулятся остатки только тех товаров, которые находятся в этой подкатегории.
Скрыть товары, отсутствующие в файле импорта — скрывает товары, которые отсутствуют в файле импорта. Данная настройка учитывает складскую категорию, в которую производится импорт. Если импорт производится не в категорию «Склад», а в ее подкатегорию, то товары скроются только в рамках этой подкатегории.
Выставить товары, присутствующие в файле импорта — при использовании данной настройки товары, которые есть в файле выставятся. Если в бэк-офисе товар скрыт и присутствует в файле, то после импорта он выставится.
Параметр поставщика (vendor), Тип товара (typePrefix), Параметр страны происхождения (country_of_origin) — в данных полях можно указать название параметра товара, в который нужно записать информацию из соответствующего тега YML-файла. Если указать название еще несозданного параметра в бэк-офисе, то при импорте он создастся автоматически.
Параметры
<quantity>10</quantity> — остаток
Важно: если остаток передается не в теге <quantity>, а теге <offer> в атрибуте available, то при указании available=»true» в бэк-офисе в остатке будет проставлен прочерк, при available=»false» — 0. Прочерк в бэк-офисе в остатке обозначет бесконечный остаток.
<price_rrp>500</price_rrp> — РРЦ (рекомендуемая розничная цена, тип цены для поставщиков)
<weight>3.6</weight> — вес в кг
<vendorCode>9604</vendorCode> — артикул
<dimensions>5х10х15</dimensions> — габариты в формате ШхГхВ (ширина, глубина, высота). Можно использовать как целые, так и десятичные числа. Разделитель в десятичных числах — точка. «х» — можно использовать как латинскую, так и кириллическую.
Важно: создать варианты товара и задать свойства товару с помощью импорта YML не получится, так как формат YML не поддерживает свойства, поддерживает только параметры.
Требования к фиду для оптимальной работы лингвогенератора
Фид данных должен иметь формат YML. Стандарт YML, Yandex Market Language, разработан Яндексом и основан на стандарте XML.
Общие требования к YML-файлу
- В файле не должно быть непечатаемых символов с ASCII-кодами от 0 до 31 — кроме 9, 10 и 13 — это табуляция, перевод строки и возврат каретки.
- Допустимые кодировки файла — UTF-8 и Windows-1251.
- В одном из полей фида обязательно должно быть название товара. Обычно название содержится в теге <name>, но лингвогенератор сможет выделить его из других тегов.
- Оптимальный объем фида для работы лингвогенератора — до 100 000 товаров. Если их больше, такой фид можно использовать, но при этом нужно создать несколько проектов по разным категориям. Для этого отфильтруйте их на 3 шаге настройки.
Общая структура YML-файла
<?xml version=»1.0&» encoding=»UTF-8&»?>
<yml_catalog date=»2017−02−05 17:22″>
<shop>
…
<offers>
<offer …>
…
</offer>
<offer…> …
</offers>
</shop>
</yml_catalog>
1. Между тегами <shop> и <offers> должно располагаться дерево категорий
Это обязательное условие. Каждый товар должен ссылаться на одну из категорий, перечисленных в таком дереве. Если у какого-то товара не указана категория, по нему генерации не будет.
Например:
<categories>
<category>Одежда</category>
<category parentId=»1 153 308″>Женская одежда</category>
<category parentId=»1 153 308″>Детская одежда</category>
<category parentId=»1 165 442″>Одежда для девочек</category>
<category parentId=»1 165 442″>Одежда для мальчиков</category>
<category parentId=»1 165 442″>Одежда для новорожденных</category>
<category parentId=»1 153 308″>Мужская одежда</category>
</categories>
2. В тегах <offers></offers> размещаются все предложения компании
Каждый отдельный товар или услуга описываются между тегами <offer></offer>.
Информация о товаре/услуге
Тег <offer> обязательно должен содержать атрибут id: <offer>.
Атрибут available необязателен. Он указывает на наличие товара или доступность услуги — <offer available=»true»>.
При генерации этот тег не учитывается, в обработку берутся все товары, которые есть в фиде.
При экспорте и обновлениях, которые происходят каждый час, товары с available=»false», как и отсутствующие товары, снимаются с показов.
Тип товара — обычно <model> или <typePrefix>
Настоятельно рекомендуемый: без него семантика может быть неполной.
Если нет тега <model>, но указан <param name=«Тип»>, то тип товара будет подтягиваться из этого тега.
Ссылка на товар — обычно <url>
Обязателен: если его нет, то появится ошибка в интерфейсе.
Цена — обычно <price>
Рекомендован, но опционален. Если его нет, то в рекламных объявлениях не будет указываться цена.
Пример: <price>149</price>
Цены указываются только в рублях.
Товарная категория — <categoryId>
Обязателен.
Категория в товаре должна находиться в шапке категорий в фиде, иначе инструмент не сможет обработать такой товар.
Если категория у товара не указана или тег пустой — <categoryId></categoryId>, инструмент не обработает товар.
Если категорий для товара указано несколько, будет выбрана только одна — первая указанная.
Пример: <categoryId>1 179 438</categoryId>
Ссылка на изображение — обычно <picture>
Обязательно, если вам нужны объявления с изображениями.
Если тега нет, лингвогенератор не будет добавлять картинки к рекламным объявлениям.
лингвогенератор сам проверяет изображения на соответствия требованиям Яндекса. Если картинка невалидна, она не будет добавлена к рекламному объявлению.
Краткая информация о товаре — обычно <name>
Обязательный, если название товара содержится только в этом теге.
Лучше всего, когда тип товара идет в начале тега name, а доп.информация разделена запятыми или любыми другими знаками препинания.
Названия — например, название книги «Дети капитана Гранта» — лучше указывать в кавычках « », чтобы лингвогенератор не разделил их на отдельные слова, и не стал рекламировать отдельно детей и гранты.
Производитель — обычно <vendor>
Обязателен, если вам нужна семантика с производителем.
Неструктурированное описание товара — обычно <description>
Опционален, но семантика будет более полной, если его указать.
Рекомендуем не выбирать тег в настройках лингвогенератора, если описание не связано с тематикой товара. Например, если товар — бумажная модель танка, а в описании — пространные сведения о Второй мировой. В таком случае и семантика будет скорее не о товаре, а о войне.
Дополнительная информация о товаре — <param>
Расширяет семантику. Можно указать ее для обработки лингвогенератором на шаге № 2 «Обработка полей YML», нажав на кнопку «+Добавить дополнительные поля».
: Полная инструкция :: Freelance
Макросы в Excel Freelance Excel из Пром → YML для Розетка :: Полная инструкцияПолное руководство по использованию excel-приложения с макросами vba, генерирующего YML для Розетки из экспортного xlsx-файла с Prom.
В макрос периодически добавляется новый функционал, в связи с чем дописываются новые пункты. Недавние обновления подсвечиваются красным цветом.
-
До макроса
Правка товаров на Prom
Выгрузка экспортного Excel-файла с Prom
Редактирование экспортного Excel-файла с Prom
-
Макрос
Настройки
-
Лист options
-
Лист category
-
-
Применение макроса
-
После макроса
До макроса↑
У Розетки требования к оформлению товаров гораздо строже чем у Пром, поэтому прежде чем генерировать YML из экспортного prom-файла, стоит навести некоторый первичный порядок.
Правка товаров на Prom↑
Непосредственно на своём prom-сайте делаются изменения с товарами, чтобы у модераторов Розетки было меньше поводов придираться. Например, можно названия товаров сделать по их схеме или проследить чтобы фото было без ватермарков. Самому prom-сайту это пойдёт только на пользу.
Выгрузка экспортного Excel-файла с Prom↑
- Авторизируйтесь в своём личном кабинете на Prom.
- Выберите в левом вертикальном меню «Товары и услуги» >>> «Управление товарами и услугами».
- В верхнем горизонтальном панельном меню кликните по кнопке «Экспорт».
- Во диалоговом окне выберите пункты:
- Настройки групп и позиций для экспорта —> Экспортировать все группы и все позиции.
- Настройки видимости позиций для экспорта —> Опубликованные позиции.
- Формат для экспорта —> Excel-файл (формат .xlsx).
- Нажмите кнопку «Экспортировать группы и позиции».
- Сохраните экспортный excel-файл на своём компьютере.
Редактирование экспортного Excel-файла с Prom↑
Правится полученный на предыдущем этапе экспортный Excel-файл – контент-менеджер подправляет категории, описания, названия и т.п. таким образом, чтобы модераторы Розетки не возмущались.
На этом этапе делаются именно те правки, соответствующие требованиям Розетки, но нежелательные на самом prom-сайте.
Макрос↑
Подготовленный на предыдущих этапах excel-файл можно прогнать через макрос. Сохраните изменения в экспортном файле с Пром и закройте его. Откройте excel-приложение «_prom_rozetka.xlsm» (в режиме выполнения макросов, разумеется).
Настройки↑
Прежде чем запустить макрос на выполнение – необходимо убедиться, что на листах «options» и «category» все параметры прописаны правильно. На остальных листах ничего менять не нужно: «temp-product» и «temp-category» технические, а в «log» записываются логи при формировании YML.
Лист options↑
Это основной (но не единственный) лист, где указываются почти все настройки макроса.
В зелёной области прописываются глобальные настройки, в синей области ничего менять не нужно, в жёлтой области указываются настройки для тегов.
Общие настройки↑
- «Короткое название магазина» – содержимое для основного тега <name> (наименование интернет-магазина) в финальном YML-файле для Розетки.
- «Наименование компании» – содержимое для основного тега <company> (форма собственности и официальное название юридического лица, владеющего интернет-магазином).
- «Веб-сайт магазина» – содержимое для основного тега <url> (базовая ссылка для интернет-магазина).
- «id для offer (№ столбца)» – Из какого столбца на листе «Export Products Sheet» в экспортном excel-файле с Пром брать значение для атрибута id тега <offer> (уникальный идентификатор товара). Обычно это столбец №21.
- «id для групп разновидностей (№ столбца)» – Из какого столбца на листе «Export Products Sheet» в экспортном excel-файле с Пром брать идентификаторы групп разновидностей (вариантов товара). Обычно это столбец №28.
- «rate для UAH» – Курс основной валюты по отношение к гривне. Так как основная валюта – гривна, то курс, скорее всего, нужно установить равным 1.
- «rate для EUR» – Курс основной валюты (украинская гривна) по отношение к евро.
- «rate для USD» – Курс основной валюты (украинская гривна) по отношение к доллару.
- «rate для RUB» – Курс основной валюты (украинская гривна) по отношение к рублю.
- «Товары, первая строка» – начиная с какой строки на листе «Export Products Sheet» переносить товары в YML для Розетки. Обычно нужно здесь указать значение 2, потому что, скорее всего, на первой строке на листе «Export Products Sheet» будут заголовки столбцов.
- «Товары, последняя строка (необязательно)» – заканчивая на какой строке на листе «Export Products Sheet» переносить товары в YML для Розетки. Таким образом, в макросе можно указать диапазон строк, из которых товары будут перенесены в YML, остальные строки будут проигнорированы. Если значение этой опции равно 0 (это также значение по умолчанию), то произойдёт обработка товаров до последней строки.
- «Добавлять товары с критическими ошибками (0 или 1)» – В случае если указано значение 0, то товары с отсутствующей обязательной информацией (цена, название, категория и т.п.) в YML добавлены не будут. Если значение равно 1, то то товар всё равно попадёт в YML. При этом сообщения об этих инфидентах в любом случае допишутся на лист «log».
- «Универсальное значение для offer[available] (0 или 1)» – Товар по умолчанию сразу доступен или нет? 0 означает false, а 1 означает true.
- «Добавлять товары, которых нет в наличии? (0 или 1)» – Если указано значение 0, то отсутствующие товары (см. две предыдущие опции) добавлены не будут. Если указано значение 0, то добавление товара в YML зависит от других факторов, но не от наличия.
- «Лист с товарами» – Название листа с товарами в экспортном excel-файле с Пром. Если этот лист не переименован, то он называется «Export Products Sheet».
- «Лист с категориями» – Название листа с категориями. Если этот лист не переименован, то он называется «Export Groups Sheet».
- «Номер строки, с которой начинаются категории» – с какой строки на листе «Export Groups Sheet» начинаются категории. Обычно со второй, потому что на первой строке заголовки столбцов.
- «Категории — categoryId (номер столбца)» – порядковый номер столбца на листе «Export Groups Sheet», в котором хранятся уникальные идентификаторы категорий. Обычно это столбец №1.
- «Категории — название (номер столбца)» – порядковый номер столбца на листе «Export Groups Sheet», в котором хранятся названия категорий. Обычно это столбец №2.
- «Категории — parentId (номер столбца)» – порядковый номер столбца на листе «Export Groups Sheet», в котором хранятся идентификаторы родителей для категорий. Обычно это столбец №4.
Категории↑
На листе «options» вообще не нужно трогать синюю облать, макрос её заполняет сам.
Теги↑
В жёлтой области перечислены теги, для которых нужно указать столбец на листе «Export Products Sheet» в экспортном excel-файле с Пром, в котором у товаров указаны значения для этих тегов. Также можно указать значения по умолчанию, на случай у товара значение не заполнено или же такой столбец у тега вообще отсутствует.
- «url» – Откуда брать значение для тега <url> (Ссылка на товар)? Обычно это столбец №2 на листе «Export Products Sheet» в экспортном excel-файле с Пром.
- «price» – Откуда брать значение для тега <price> (Цена)? Обычно это столбец №6.
- «currencyId» – Откуда брать значение для тега <currencyId> (Валюта)? Обычно это столбец №7.
- «categoryId» – Откуда брать значение для тега <categoryId> (Идентификатор категории)? Обычно это столбец №15.
- «picture» – Откуда брать значение для тегов <picture> (Ссылки на изображения)? Обычно это столбец №12.
- «vendor» – Откуда брать значение для тега <vendor> (Производитель)? Обычно это столбец №15.
- «stock_quantity» – Откуда брать значение для тега <stock_quantity> (Количество товара на складе)? Обычно это столбец №14. Также в столбце «По умолчанию» стоит указать дефолтное значение, которое будет применено к товару, если данное значение для него на листе «Export Products Sheet» отсутствует.
- «name» – Откуда брать значение для тега <name> (Наименование товара)? Обычно это столбец №2.
- «description» – Откуда брать значение для тега <description> (Описание товара)? Обычно это столбец №4.
- «param=Артикул» – Откуда брать значение для тега <param> с атрибутом name=Артикул (Артикул товара)? Обычно это столбец №1.
- «param=Страна» – Откуда брать значение для тега <param> с атрибутом name=Страна (Страна производителя)? Обычно это столбец №26.
- «param=Доставка/Оплата» – Откуда брать значение для тега <param> с атрибутом name=Доставка/Оплата (Условия доставки и оплаты)? Обычно в экспортном excel-файле с Пром нет данной информации, однако в столбце «По умолчанию» можно указать дефолтное значение, которое будет применено ко всем товарам.
- «param=Гарантия» – Откуда брать значение для тега <param> с атрибутом name=Гарантия (Гарантия на товар)? Обычно нет данной информации, однако в столбце «По умолчанию» можно указать дефолтное значение.
Дополнительные настройки↑
В красной области прописываются дополнительные настройки для тегов. Настройка должна быть указана в той же строке, что и соответствующий тег в жёлтой области.
- «Универсальный коэффициент для цены» – Универсальная скидка/наценка для всех товаров. Все цены умножаются на указанное число. По умолчанию равно 1. Если нужно указать скидку/наценку для товаров из конкретной категории, то это можно сделать на листе «category».
- «Переводить все цены в гривны? (0 или 1)» – Если 1, то в финальном YML все цены будут переведены в гривны (по тем курсам, что указаны в настройках выше). Если 0, то иные валюты останутся такими, как есть.
- «Максимальное количество фотографий» – сколько изображений <picture> прикреплять к торговому предложению. Согласно правилам Розетки, у товара не должно быть более 8-ми фото. Если имеется много фотографий, а указано в этой настройке, к примеру 2, то тогда в YML попадут первые две фотографии товара.
- «Только с производителями? (0 или 1)» – если значение этой настройки равно 1, то в YML попадут только те товары у которых указан производитель.
- «Столбец с наличием товара» – Колонка, в которой указано, доступен ли товар для немедленной доставки. Обычно это столбец №13.
- «Отсеять дубликаты по названию? (0 или 1)» – Если значение =1, то производится проверка, не вносили ли в YML уже товар с таким названием? Если уже есть, то товар не попадает в YML.
- «Брать только первые абзацы?» – В настройке указывается суммарное число – количество абзацев/параграфов <div>/<p>, обрезается весь текст, идущий после них.
- «Название характеристики, первый столбец» – С какого столбца на листе «Export Products Sheet» в экспортном excel-файле с Пром начинаются характеристики товара? Обычно это столбец №31.
Лист category↑
На этом листе указываются наценки к цене, которые применяеются к товарам из определённых категорий. Если для категории указывается наценка, то цены всех товаров из данной категории будут умножены на этот коэффициент. Что касается товары из тех категорий, у которых нет своей наценки, то их цены будут умножены на глобальную наценку, указанную на листе «options».
Применение макроса↑
После того, как все настройки проверены и правильно указаны, можно наконец-то применить макрос.
- Нажмите кнопку «Загрузить файл и создать XML».
- В открывшемся диалоговом окне выберите экспортный excel-файл с prom-товарами.
- Макрос автоматически преобразует excel в yml и закроет экспортный файл
- YML для Розетки будет автоматически сохранён в той же папке, где находится макрос. В названиии файла yml будет указано дата и время его создания.
- На листе «log» в файле с макросом появится отчёт о процессе генерации. Будут указаны какие товары попали в YML, а какие нет и по каким причинам (отсутствует цена, категория и проч.)
- На листе «temp-product» в файле с макросом строки добавленных в YML товаров закрасятся в зелёный цвет. Если товар не попал в YML в результате ошибки, то ячейка с ошибкой (название-дубликат, некорректная цена, отсутствие производителя и т.п.) будет закрашена в красный цвет.
После макроса↑
Можно ещё подредактировать товары непосредственно в сгенерированном YML, если это удобнее, чем в экспортном excel-файле.
После всех правок на всех этапах YML высылаеся в Розетку на проверку.
Ссылки
Prom.ua
Формат файлов XLS, XLSX и CSV
Формат файлов XLS, XLSX и CSV (новый кабинет)
Rozetka.ua
Требования к XML-файлу
Требования к контенту
Отзыв 1
Отзыв 2
Отзыв 3
YML-генератор с товарами в KeepinCRM
Данный функционал позволяет генерировать YML-файл с товарами с прайс-листа или склада KeepinCRM. Кол-во таких файлов не ограничено, и фид можно настраивать под любые системы, указав нужные названия тегов, что позволяет формировать файлы любой структуры и с нужными данными.
Используется
- Для синхронизации товаров или остатков с KeepinCRM на сайт
- Для синхронизации/загрузки товаров с KeepinCRM в любые системы, к примеру: Google Merchant, Hotline и тд.
- Для генерации файлов с товарами для компаний-партнеров (к примеру, если для каждого нужен свой формат)
Например, есть сайт с товарами, а в KeepinCRM ведется склад, данный YML-генератор позволит синхронизировать остатки с KeepinCRM на сайт:
- Устанавливаете/выбираете плагин на сайт для импорта YML-файлов или пишите свой скрипт обработки
- Настраиваете генерацию файла на стороне KeepinCRM с нужными названиями тегов (чтобы сайт/плагин понимал куда размещать передаваемые данные). Характеристики товаров ставятся в параметре param name.
- Настраиваете периодичность синхронизации на сайте
Важно!
- Это не функционал в стиле «нажал на кнопку и все синхронизировалось». Чтобы создать YML-файл, нужно понимать его структуру, и как называть теги которые нужны, к примеру название товара можно передавать как тег <title> или <name> и тд. Чтобы понимать как называть теги, нужно выбрать плагин импорта для сайта и смотреть его документацию, или же написать свой скрипт обработки с нужными названиями тегов, потом эти теги указать в соответствующие поля.
- Часть плагинов использует артикул для поиска соответствия, и если артикул не находит, то скорее всего будет создаваться копия товара на сайте. Это нужно учитывать, чтобы не возникло ситуации: на сайте 100 товаров, после синхронизации стало 101, если стало больше — значит где-то ошибка в артикуле (пробелы, несоответствие и тд.)
- После настройки файла и системы импорта на сайте желательно проверить синхронизацию на нескольких товарах.
- Товар в YML можно добавлять с прайс-листа или со склада, в зависимости от того, что используется
- Данный функционал доступен только на расширенном тарифе
Настройка генератора
Описание пунктов:
- Название магазина, компании и URL — используется по стандартам и обязательны к заполнению.
- Выгружаемые категории — можно настроить с каких именно папок выгружать товары в YML.
- Блок «Поля» — в данном блоке указывается название тегов слева и с какого пользовательского поля в товаре брать данные для этого тега. Теги обрамляются в «<>», к примеру: <title>, <price>. Название тегов должны соответствовать тем, которые «понимает» Ваша система импорта на сайте.
- Блок «Дополнительные параметры» — в данном блоке настраивается вывод характеристик товара в param name. При нажатии на кнопку «Скопировать из пользовательских полей» наша система автоматически подставит все пользовательские поля с товара в данный блок. Но! Важно понимать, что система подставляет и поля с названием товара, артикулом, ценой и другими системными полями, все ненужные поля или поля которые используются в блоке «Поля» нужно убрать, и использовать только нужные характеристики, а не все подряд.
- Не выгружать товары, где цена 0 — если товар имеет нулевую цену, он не попадет в YML.
- Не выгружать неактуальные товары — если на товаре стоит галочка «Не актуальный», то данный товар не попадет в YML.
- Добавить фото — если нужно вывести фото товаров в YML.
- Заменить комы в себестоимости и цене на точки в YML-файле — в KeepinCRM используются комы для разделения, если на Вашем сайте используются точки и нужно обновлять цену/себестоимость то данная галочка обязательна к включению.
После настройки и сохранения, появиться ссылка на YML. Данный URL постоянный и не меняется никогда. Если нужно создать еще один файл или удалить созданный — есть соответствующие кнопки.
Если Вам нужно настроить синхронизацию товаров с KeepinCRM на сайт, мы предоставляем такую услугу, стоимость — от 4 000 грн. (в зависимости от CMS сайта).
Robo.market. Документация
Общие сведения
Robo.market – это дополнительное современное средство заработка и ресурс для размещения своих товаров на новой торговой площадке, разработанной специально для партнеров Robokassa из России и Казахстана.
Множеству покупателей будет доступен выбор из сотен тысяч товаров магазинов – партнеров Robokassa, а осуществить оплату товаров они смогут практичным и безопасным способом, используя для этого более 40 способов оплаты, доступных на Robokassa – надежном платежном агрегаторе с многолетним опытом работы в РФ.
Сервис содержит пользовательскую и партнерскую части.
Фискализация
С 15 июля 2016 года вступили в силу изменения в Федеральный закон от 22.05.2003 № 54-ФЗ, регулирующий вопросы применения контрольно- кассовой техники, а с 1 февраля 2017 они обязательны для большинства юридических лиц и индивидуальных предпринимателей.
Данные о каждой операции по приему денежных средств должны автоматически передаваться в налоговую инспекцию посредством сети интернет. Передаются они через специальных субъектов – операторов фискальных данных, с которыми юридическое лицо или предприниматель обязаны заключить договор. Поэтому при регистрации магазина необходимо выбрать одно из решений по фискализации. Решение Вы выбираете в Вашем Личном кабинете клиента Robokassa.
- МЕНЮ
- Управление
- Фискализация
По умолчанию для магазина предлагается Самостоятельное решение, но Вы всегда можете выбрать другое, более подходящее.
Например, Вы выбрали Готовое решение.
Управление магазином на Robo.market
Управление магазином на Robo.market происходит на панели Robo.market.по ссылке https://robo.market/merchant
Настройки магазина
Настройки магазина. Закладка «Информация о магазине»
Управление настройками магазина осуществляется в разделе «Настройки — Информация о магазине», где содержатся данные магазина:
Данные магазина:
- Логотип магазина – размер изображения от 20КБ, но не более 1МБ. Виден в предложениях Robo.market, в Корзине клиента, в письме-уведомлении покупателю.
- Адрес сайта – url магазина.
- Описание магазина – краткая информация о магазине, видимая в Robo.market (не более 500 символов).
Контакты магазина для клиента
- Телефон – номер телефона, по которому клиент сможет с Вами связаться.
- E-mail – адрес электронной почты, по которой клиент сможет связаться с Вашим магазином.
Настройки магазина. Закладка «Технические настройки»
В закладке «Технические настройки» настройте уведомления о заказах:
Вы можете указать несколько e-mail адресов через «,» или «;».
Импорт товаров из YML файла
Товары в магазин также можно импортировать, используя ссылку на подготовленные Вами YML-файлы:
При создании YML-файла, пожалуйста, обратите внимание на то, чтобы все товары имели фото и описание.
1. Вставьте ссылку на нужный Вам YML-файл или загрузите его.
3. Нажмите кнопку «Загрузить».
4. Следите за загрузкой файла на закладке. При щелчке на выбранную загрузку Вы увидите подробное описание лога загрузки.
При загрузке YML-файла убедитесь, что файл корректный. Проверку можно провести здесь.
Закладка «Товары»
Для просмотра, создания и управления товарами своего магазина на Robo.market предназначена закладка «Товары»:
В закладке перед Вами будет список всех Ваших товаров, отсортированных по выбранному Вами параметру (Вы можете просматривать как все свои товары сразу, так и просматривать отдельно согласно их статусу).
- ID – уникальный номер товара, генерируемый в Личном кабинете Robo.market при создании товара. Или же щелкните по названию колонки и переключитесь на
- Название – имя, под которым товар будет виден в каталоге Robo.market.
- Категория – раздел каталога Robo.market, в котором находится товар.
- Количество – количество единиц товара, доступное для продажи.
- Статус – статус товара на Robo.market: Активные – эти товары можно купить на Robo.market, На модерации — проверяются модератором и пока не видны на Robo.market, Скрытые – не видны на Robo.market и недоступны для покупателей, Заблокированные – выключенные администратором Robo.market, они также недоступны для покупателей.
- Цена – цена за единицу.
Панель поиска товара.
Панель поиска товара поможет найти нужный товар по ID или названию товара, статусу товара, категории – разделу каталога Robo.market, и по диапазону цен.
Редактирование товара.
Для редактирования товара щелкните по строчке товара и перейдите в Карточку товара. В Карточке товара можно как отредактировать, заменить или удалить любые свойства товара, кроме ID.
Удаление товара.
Для удаления товара щелкните по строчке товара и перейдите в Карточку товара. После подтверждения товар будет удален как из Вашего каталога, так и из каталога Robo.market.
Создание товара
Эта закладка предназначена для создания и редактирования товара для продажи на Robo.market.
На закладке «Товары» нажмите кнопку «Добавить новый товар».
В открывшейся «Карточке товара» заполните поля, обратив особое внимание на раздел каталога Robo.market, в котором будет находиться товар.
- Название – имя, под которым товар будет виден в каталоге Robo.market.
- Категория – раздел каталога Robo.market, в котором будет находиться товар. Если категория не будет выбрана, товар попадет в раздел каталога «Разное».
- Количество – количество единиц товара, доступное для продажи.
- Неограниченно – если выбрано это поле, то количество единиц товара не будет уменьшаться и исключена возможность, что они закончатся.
- Цена, руб – цена за единицу товара на текущий момент времени.
- Скидка — с помощью ползунка, Вы можете быстро выставить нужную скидку на товар. Цена со скидкой установиться автоматически.
- Цена со скидкой, руб – цена за единицу товара, проставляемая для предложения скидки на этот товар в Robo.market. Можно установить стоимость вручную.
- Описание – все, что Вы хотите написать об этом товаре на сайте.
- Сообщение покупателю в письме – поле для сообщения или инструкций покупателю, которые Магазин не размещает на публичном сайте.
- URL покупателю – поле для ссылки, по которой покупатель сможет перейти из письма, например на файл на вашем хостинге, файлообменнике или на облачном диске,
ID – уникальный номер товара в системе Robo.market, присваивается автоматически при создании.
Если Вы желаете сразу же разместить товар на Robo.market, нажмите «Опубликовать».
Формат загружаемых файлов для изображений- JPEG, PNG, GIF.
Размер одного файла не должен превышать 1 Мб.
Размер фотографии не должен быть меньше 600 пикселей по меньшей стороне и 1500 по большей. Рекомендованные пропорции — 3:2. Фотографии должны быть в формате jpeg или jpg со степенью сжатия изображения 75–80 %.
Товар после сохранения попадает на модерацию. Модерация занимает до суток.
Товары с непонятным наименованием, без фотографий и описания, а также с некорректной категорией привязки к каталогу могут быть не согласованы модератором.
Редактирование товара
Для редактирования параметров товара щелкните по нему в закладке «Товары» и в открывшейся форме произведите необходимые изменения.
При редактировании ID товара изменить нельзя.
Товар после редактирования попадает на модерацию.
Закладка «Доставка»
Внимание! Товары Вашего магазина будут показываться только тем покупателям, которым Вы их сможете доставить. Если область проживания потенциального покупателя находится вне зоны охвата Вашей службы доставки, то такие товарные позиции не будут показаны данному покупателю.
Для создания или редактирования способа доставки Ваших товаров откройте раздел «Доставка», выберите нужный вид доставки и войдите в него:
Создание и редактирование электронной доставки производится в разделе «Доставка» при щелчке на ссылку «Электронная доставка»:
Для создания электронной доставки достаточно задать ее стоимость (может быть задана нулевая стоимость). Но для лучшего информирования покупателя заполните поле
- Описание – укажите в нем свои параметры доставки или воспользуйтесь нашим описанием.
При наличии электронной доставки товар будет виден всем покупателям во всех регионах.
Создание и редактирование курьерской доставки производится в разделе «Доставка» при щелчке на ссылку «Доставка Курьером».
Для создания первой доставки в новом городе выберите город из выпадающего списка:
Для создания еще одной доставки в городе, где уже есть курьерская доставка, выберите в Вашем списке городов, нужный Вам город, щелкните по названию, и в открывшемся списке доставок этого города создайте новую доставку. Или выберите город в выпадающем списке, заполните поля и нажмите кнопку «Сохранить».
Для редактирования доставки в выбранном городе наведите курсор на строку с выбранной доставкой и нажмите на появившийся карандаш. Сохраните Ваши изменения нажав на галочку. Отменить изменения можно нажав на минус. Для удаления выбранной доставки нажмите на знак корзины в строке доставки. Если Вы хотите удалить город из списка доставок, нажмите на знак корзины рядом с названием города, все доставки в этом городе будут удалены.
Создание и редактирование доставки товаров из пунтов самовывоза производится в разделе «Доставка» при щелчке на ссылку «Самовывоз».
Для создания первой доставки из пункта самовывоза в новом городе выберите город из выпадающего списка:
Для создания новой доставки в городе, где уже есть доставка в пункт самовывоза, выберите в Вашем списке городов нужный город, щелкните по названию, и в открывшемся списке доставок этого города создайте новую доставку. Или выберите город в выпадающем списке, заполните поля и нажмите кнопку «Сохранить».
Чтобы отредактировать доставку в выбранном городе наведите курсор на строку с выбранной доставкой и нажмите на появившийся карандаш. Сохраните изменения нажав на галочку. Отменить изменения можно нажав на минус. Для удаления выбранной доставки нажмите на знак корзины в строке доставки. Для удаления города из списка доставок нажмите на знак корзины рядом с названием города, все доставки в этом городе будут удалены.
Создавайте и редактируйте доставки товаров с помощью Почты России в разделе «Доставка» при щелчке на ссылку «Почта».
Почтовую доставку можно создать как для города, так и для субъекта Российской Федерации целиком или по все России. Стоимость доставки может быть нулевой.
Для создания почтовой доставки в субъекте РФ, выберите нужный субъект из списка, щелкните по появившемуся окошку и введите стоимость доставки в открывшееся поле. Стоимость доставки во все почтовые отделения данного субъекта РФ будет одинаковой для всех заказов из Вашего магазина.
Для создания почтовой доставки в конкретном городе, выберите субъект федерации РФ из списка, затем город из списка справа. Щелкните по знаку карандашика. Введите стоимость доставки в открывшееся поле. Стоимость доставки во все почтовые отделения данного города будет одинаковой для всех заказов из Вашего магазина.
Если стоимость доставки в города одного субъекта федерации разная, то для всего субъекта будет указан диапазон цен доставки.
Для удаления почтовой доставки в выбранном городе нажмите на знак корзины.
Для удаления почтовой доставки в выбранном субъекте РФ целиком, удалите почтовую доставку во всех городах этого субъекта. Откройте список городов, выберите все города и нажмите знак корзины.
Управление заказами и учет заказов в магазине
Управляйте заказами в Вашем магазине из Robo.market в разделе «Заказы».
Панель поиска заказов поможет найти как конкретный заказ, так и группу заказов по следующим параметрам:
- Поиск по вхождению – искать заказ по любому сочетанию символов.
- Заказ за период с – найти все заказы за период.
Список всех Ваших заказов.
Закладки Новые, Выполненные и Отменные содержат, соответственно, все Ваши новые, выполненные и отмененные заказы.
- N – уникальный номер заказа, присвоенный Robo.market при формировании данного заказа покупателем.
- Статус заказа – состояние заказа для магазина:
Выполненные – заказ полностью завершен.
Отмененные – заказ отменен Покупателем или Магазином.
- Статус платы — состояние оплаты заказ
Оплачен – за заказ поступила оплата, но он еще не доставлен.
Не оплачен – за заказ оплата не поступала, заказ не выполнен.
- Создан – дата создания заказа покупателем на Robo.market.
- Заказчик – ФИО заказчика, указанные им при формировании заказа.
- E-mail – электронная почта заказчика, указанная им при формировании заказа.
- Телефон – номер телефона заказчика, указанный им при формировании заказа.
- Сумма – полная сумма за заказ, включая плату за доставку.
При щелчке по заказу откроется подробная информация по данному заказу. Дополнительно будет указано:
- номер заказа – номер заказа по нумерации Robo.market.
- ID – номер заказа по внутренней нумерации магазина (может отсутствовать).
- Invoice Id Robokassa – номер заказа, созданный в Robo.market, который будет доступен как номер заказа (InvId) в списках заказов в Личном кабинете клиента в Robokassa (при выборе пункта меню см. закладку «Настройки»).
- Кол-во товаров – количество всех товаров в заказе.
- В резерве до – товар при заказе был зарезервирован до указанного времени.
- Оплата – время оплаты товара покупателем.
- Выполнен – время выполнения заказа (заказ доставлен покупателю, покупатель забрал заказ из пункта самовывоза и т.д.).
- Доставка – способ доставки товара покупателю ( с указанием суммы доставки).
По каждой позиции товара дополнительно будет указано:
- наименование – название товара в заказе по каждой позиции.
- Кол-во – количество единиц по каждому наименованию товара.
- Цена – цена единицы данного товара.
- Сумма – сумма только за данный товар.
Заказ можно перевести в любое из состояний, если требуется:
- Выполненный – заказ выполнен продавцом, и больше никаких действий с ним производить не нужно.
- Неоплаченный – заказ еще не оплачен (например, если Покупатель решил оплатить заказ при доставке).
- Отмененный – заказ отменен Покупателем или Магазином, или не может быть выполнен по каким-то причинам.
Для экспорта заказов из Robo.Market и работы с ними предназначена функция Экспортировать.
Экспортируйте все свои заказы или же отберите их по нужным параметрам и экспортируйте выбранные.
Нажмите на Скачать xlsx файл и сохраните xlsx-файл
В результате Вы получите такой xlsx-файл.
в котором указаны параметры заказа.
- RoboInvoiceId – номер заказа в Robo.Market.
- ShopInvoiceId – номер заказа в системе магазина, который магазин передает (если передает) в Robo.Market. Если магазин не поддерживает передачу InvId (см. здесь), то графа пустая.
- External Id товара – номер товара, передаваемй магазином в Robo.Market. Если товары в заказе разные, но на каждый товар в заказе будет своя строчка. Если магазин не поддерживает передачу номера товара (см. здесь), то графа пустая.
Промокоды
Раздел Промокоды.
В раздле можно добавить новый промокод, изменить параметры существующего промокода и удалить промокод. Все удаленные промокоды находятся в истории промокодов.
Для создания нового промокода нажмите кнопку «Добавить промокод» и заполните поля:
Нажмите кнопку «Сохранить» для активации нового промокода.
Для изменения параметров существующего промокода нажмите кнопку «Изменить» и внесите требуемые изменения.
При просмотре заказа в закладке «Заказы» Вы увидите всю информацию по применению промокода в этом заказе: название промокода, процент скидки по промокоду, к чему применен промокод и общую сумму скидки по промокоду на заказ в целом.
Закладка «Генератор utm-меток»
Robo.market предоставляет возможность продавцу использовать utm-метки для отслеживания и анализа траффика сайта.
- Целевой URL – адрес страницы для перехода.
- Источник кампании – название источника трафика, например, google, yandex, vk, facebook.
- Канал кампании – тип рекламы. Используйте устоявшиеся значения cpc (cost per click) – это контекстная реклама, display – баннерная реклама с оплатой за показы и т.д..
- Название кампании – для отличия одной рекламной кампании от другой в статистике.
- Ключевое слово – при учёте этого параметра в статистике отобразятся данные по ключевым словам, использующиеся для таргетинга рекламной кампании и выявления нецелевых запросов.
- Содержание кампании – дополнительная информация для отслеживания. Используйте важные характеристики объявления — разделы каталога товара или услуги, тип самого объявления и т. п.
Подробнее можно прочитать здесь.
Заказ и покупка товаров в магазине на Robo.market
На Robo.market Покупатель может приобрести товар только с оплатой сразу (при всех видах доставки).
Настройка способов покупки Товара производится магазином самостоятельно.
Сразу после оформления заказа Продавцу приходит письмо от [email protected] с темой письма «Новый заказ — №N на Robo.market»
Статус заказа «Не оплачен»:
Сразу после успешной оплаты приходит письмо от [email protected] с темой письма «Оплачен — заказ №N»:
И вслед за ним письмо от [email protected] с темой «Получено N,00 RUR Банковская карта» об оплате товара :
Покупатель сразу оплатил товара на Robo.market придет электронное письмо jn [email protected] c темой письма «Ваш заказ на Robo.market», в котором Robo.market сообщит об успешной покупке Товара и проинформирует Покупателя о реквизитах магазина и с способах связи с ним.
Упрощенная регистрация
При подключении к Robo.market по упрощенной схеме через https://insta.robo.market/ и ваш магазин одновременно подключат к сервису приема платежей Robokassa для приёма оплаты за товар.
1. Перейдите по ссылке https://insta.robo.market/
2. Введите ник (имя) из Instagram и нажмите кнопку «Начать продавать».
3. Откроются последние 9 публикаций.
Выберите те, что хотите загрузить как товары на Robo.market
4. Нажмите кнопку «Продолжить» и перейдите к регистрации
4.1 Выберите страну:
4.2 Выберите, как будете работать (как физическое или юридическое лицо) и заполните данные:
- Наименование продавца – название магазина, под которым магазин работает в Robo.market. Это название будет видно в предложениях на Robo.market и в письмах-уведомлениях покупателю.
- Телефон – телефон продавца.
Не вводите фейковый номер телефона. Настоящий номер необходим для регистрации, на него придет SMS-сообщение с кодом активации.
- E-mail – электронная почта продавца.
- Домен (.robo.market/) – специальный поддомен для Вашего магазина на Robo.market, на котором будут находиться все товары.
4.3 Подтвердите телефон:
4.4. Подтвердите e-mail:
Если email неправильно введен, попробуйте еще раз
5. После подтверждения на Вашу почту придет письмо с логином и паролем для Вашего Личного Кабинета.
Войдите в Кабинет и начните работу!
Как продолжить работу посмотрите здесь.
Создаем блог используя Jekyll и GitHub Pages
Недавно я перенес блог с WordPress на Jekyll — это генератор статических сайтов. Jekyll был специально разработан для создания минималистичных блогов, которые затем можно разместить на GitHub Pages. Написание статей и создание тем для Jekyll удивительно просты, однако настройка сайта заняла у меня значительно больше времени, чем ожидалось.
В этой статье мы рассмотрим следующие моменты:
- как быстрее всего запустить блог на Jekyll;
- как избежать основных ошибок при работе с Jekyll;
- как перенести материалы из WordPress, как использовать свое доменное имя и как писать статьи в любимом редакторе;
- как создавать темы для Jekyll используя Liquid;
- несколько новых функций из Jekyll 2.0, включая поддержку Sass, CoffeeScript и коллекций.
Назначение Jekyll
Том Престон-Вернер (Tom Preston-Werner) создал Jekyll, чтобы вести блог используя простой статический сайт на HTML. Всё содержимое сайта хранится на GitHub, который, к тому же, осуществляет контроль версий. Целью было избавиться от сложности, свойственной другим блог-платформам, чтобы при этом можно было вести блог как настоящий хакер.
Октокот, который является маскотом Jekyll. (Изображение принадлежит: GitHub)
Jekyll берет контент написанный в маркдаун, применяет к нему шаблоны и выдает на выходе готовый, полностью статический сайт. GitHub Pages отдает сайт прямо из GitHub-репозитория, так что вам не нужно иметь дело с хостингами.
Вот примеры сайтов, созданных с использованием Jekyll:
Преимущества статики
Простота
Jekyll сводит все к абсолютному минимуму, избавляясь от сложных составляющих:Никаких баз данных В отличие от WordPress и других систем управления контентом (CMS), Jekyll не использует базы данных (БД). Все страницы перед публикацией преобразуются в статический HTML. Это прекрасно с точки зрения скорости загрузки страницы, так как во время загрузки не происходит никаких запросов к БД.
Никаких CMS Просто пишите в Markdown — Jekyll сам применит шаблоны к контенту и сгенерирует статический сайт. GitHub может исполнять роль CMS, если нужно, потому что он позволяет редактировать контент.
Быстрый Jekyll быстрый, потому, что в нём нет ничего лишнего и он не использует базы данных — он просто собирает статические страницы. Мой основной шаблон Jekyll Now создает всего три HTTP-запроса, включая картинки и иконки социальных сетей!
Минималистичный Большинство сайтов на Jekyll не содержит никакой лишней функциональности или возможностей, которые вы не используете.
Контроль представления Тратьте меньше времени на сложные шаблоны, написанные другими людьми, и больше — адаптируя простой базовый шаблон или создавая свой собственный.
Безопасность Большинство уязвимостей, которые есть у платформ вроде WordPress, отсутствуют в Jekyll, потому что здесь нет CMS, нет баз данных или PHP. Так что вам не нужно тратить массу времени устанавливая обновления, закрывающие дыры в безопасности.
Удобный хостинг Это просто удобно, если вы уже используете GitHub, вот и все. GitHub Pages бесплатно соберет и выложит сайт, использующий Jekyll, и одновременно реализует для него контроль версий.
Давайте попробуем
Есть несколько способов разобраться с Jekyll, у каждого свои особенности. Вот несколько вариантов:
- Установите Jekyll локально используя консоль, создайте
заготовку нового сайта командой
jekyll new
, соберите его командойjekyll build
и выложите. (Веб-сайт Jekyll показывает процесс.) - Клонируйте репозиторий с заготовкой на локальную машину, установите Jekyll локально из консоли, внесите правки, соберите локально, выложите.
- Форкните репозиторий с заготовкой, измените, выложите.
Давайте начнем с самого простого и быстрого варианта: форкнем репозиторий с заготовкой. Это позволит запустить проект в считанные минуты, и нам не придется устанавливать все зависимости. Вот что мы сделаем на GitHub.com прямо в браузере:
- Создадим сайт используя Jekyll
- Бесплатно разместим на GitHub Pages.
- Изменим так, что бы он включал наше имя, аватар и ссылки на социальные сети.
- Опубликуем наш первый пост!
1. Форкните заготовку
Начнем с создания форка репозитория — это хорошая практика, о которых мы упоминали в статье. Этот способ направит нас по верному пути и сбережет уйму времени.
Я уже создал нам репозиторий. Откройте Jekyll Now и нажмите кнопку «Fork» в верхнем правом углу страницы, чтобы создать форк темы блога в вашу учетную запись на GitHub.
Инструкция к шагам 1 и 2. (Картинка в высоком разрешении)
Начинать с форка отличная идея, ведь это позволит выяснить что из себя представляет Jekyll без необходимости поднимать локальное окружение для разработки, устанавливать зависимости и разбираться с процессом сборки.
Проблема №1: Создание сайта на базе Jekyll через терминал может раздражать и занимать много времени, так как надо установить и настроить зависимости, например, Ruby и RubyGems. Позвольте GitHub Pages собирать ваш сайт, пока не возникнет реальная причина делать сборку локально.
2. Разместим сайт на вашем GitHub-аккаунте
Как пользователь GitHub, вы можете бесплатно создавать «пользовательские» сайты
(в отличии от веб-сайтов «проектов»), которые будут доступны по адресу http://yourusername.github.io
. Идеально подходит для размещения
блога на Jekyll!
Лучше всего в этом то, что вы просто помещаете Jekyll-блог в ветку master
,
после чего GitHub Pages сам соберет статический сайт и будет его раздавать.
Вам вообще не нужно беспокоиться о процессе сборки — об этом уже позаботились.
Нажмите кнопку «Settings» в форке репозитория (меню справа) и измените имя
репозитория на yourusername.github.io
, заменив yourusername
на ваше имя
пользователя на GitHub.
Скорее всего, сайт станет доступен немедленно, это можно проверить открыв http://yourusername.github.io
. Если ещё не доступен — не беспокойтесь,
на Шаге 3 мы выясним как принудительно вызвать сборку.
Базовая тема блога непосредственно после форка будет выглядеть следующим образом. (Источник:Jekyll Now) (В высоком разрешении)
Уф! Мы быстро продвигаемся, мы уже запустили сайт на Jekyll! Давайте сделаем шаг назад и рассмотрим наиболее часто встречающиеся проблемы, которые стоит иметь ввиду, размещая Jekyll-блог на GitHub Pages.
Проблема №2: нужно понимать различия между размещением на GitHub
сайта пользователя и страницы проекта. Для пользовательского сайта (который
мы делаем) не нужно создавать никакие ветки: master
и так сконфигурирована
нужным образом, чтобы обрабатывать с помощью Jekyll всё, что в неё помещают,
и создавать статический сайт. Нет нужды создавать ветку gh-pages
.
Проблема №3: использование сайта для проекта
немного все усложняет, так как сайт будет находиться
в поддиректории. URL будет выглядеть так: http://yourname.github.io/repository-name
,
что вызовет проблемы с шаблонами в Jekyll: например, битые ссылки
на картинки и невозможность посмотреть сайт локально.
Проблема №4: для Jekyll существует масса плагинов, но GitHub Pages поддерживает всего несколько из них. Если подключить плагин, который не поддерживается, Jekyll не сможет собрать сайт, так что строго придерживайтесь списка поддерживаемых плагинов. Благо мой любимый плагин есть в списке: Jemoji — он позволяет добавлять в статьи emoji, как на GitHub или Basecamp.
3. Настраиваем сайт
Теперь можно изменить имя сайта, его описание, аватар и прочие настройки
отредактировав файл _config.yml
. Эти пользовательские переменные для удобства
были вынесены отдельно, и они подтянутся в тему сайта во время сборки.
Изменение _config.yml
(или любого файл в репозитории) вызовет повторную сборку
сайта. Увидеть результат можно будет через пару секунд по адресу http://yourusername.github.io
. Если после Шага 2 сайт не появился, то он
появится после этого действия.
Вперед, адаптируйте сайт под себя, изменяя переменные в _config.yml
и
коммитя изменения.
Вы можете править файлы одним из трех способов. Выберите тот, который вас больше устраивает:
- Редактируйте файлы непосредственно в браузере на сайте GitHub.com в
вашем репозитории
username.github.io
(как показано ниже). - Используйте сторонний редактор, поддерживающий работу с GitHub, например, Prose, разработанный Development Seed. Он оптимизирован для работы с Jekyll и позволяет легко редактировать Markdown, создавать черновики и загружать изображения.
- Клонируйте репозиторий, внесите правки локально, затем пушните все обратно в репозиторий на GitHub (у Atlassian даже есть гайд на эту тему).
Редактируем _config.yml на GitHub.com. (Источник: Jekyll Now) (В высоком разрешении)
Проблема №5: Не думайте, что нужно выполнять jekyll build
локально,
чтобы внести изменения в сайт на Jekyll — GitHub Pages сделает
это за вас. Достаточно поместить файлы, которые нужно собрать,
в ветку master
репозитория с вашим сайтом или в gh-pages
любого другого репозитория, после этого GitHub Pages соберет их используя Jekyll.
4. Публикуем первую статью
Теперь сайт настроен, работает и отлично выглядит. Можно опубликовать первую статью:
- Отредактируйте
/_posts/2014-3-3-Hello-World.md
, удалите «рыбу» и введите свой текст. Если нужно освежить в памяти основы использования Markdown, используйте шпаргалку Адама Причарда (Adam Pritchard). - Измените имя файла, что бы оно включало текущую дату и заголовок поста.
Jekyll требует определённый формат именования:
year-month-day-title.md
. - Обновите заголовок. Переменные в начале файла называются вводным блоком,
мы рассмотрим их более подробно немного позже. В данном случае они определяют
заголовок статьи и используемый шаблон. Существуют и
другие переменные, которые можно использовать во вводном блоке,
например,
permalink
,tags
иcategory
.
Если захотите создать новую статью на GitHub.com прямо в вашем браузере,
просто перейдите в директорию /_posts/
и нажмите иконку «+».
Главное — не забывайте придерживаться формата имени файлов и добавлять
вводный блок, чтобы файлы обрабатывались Jekyll.
Создание новой статьи на сайте GitHub.com. (В высоком разрешении)
Проблема №6: Единственная проблема с Jekyll, с которой я столкнулся при создании блога — отсутствие CMS, так что я не мог просто залогиниться в CMS, чтобы сделать быстрые правки, находясь за чужим компьютером. Оказывается, блог на Jekyll будет иметь CMS, если использовать GitHub Pages, так как роль CMS исполняет сам GitHub. Можете редактировать статьи в браузере даже с телефона, если захотите. И, хотя это не так удобно как в других CMS, — это не помешает вам внести изменения даже если вы окажетесь далеко от своего компьютера.
Необязательные шаги
Использование своего доменного имени
Настройка доменного имени, что бы оно указывало на GitHub Pages — это простое действие, состоящее из двух шагов:
Создайте в корневой директории репозитория файл CNAME так, что бы он содержал нужное доменное имя (например,
www.yourdomainname.com
).У регистратора доменного имени добавьте в настройках DNS запись CNAME, указывающую на GitHub Pages:
- type:
CNAME
- host:
www.yourdomainname.com
- answer:
yourusername.github.io
- TTL:
300
- type:
Затем настойчиво обновляйте What’s My DNS, пока не распространится информация о новой записи. Если возникнут проблемы, обратитесь к документации: «Настройка пользовательского доменного имени при работе с GitHub Pages».
Импорт статей из WordPress
Прежде чем импортировать статьи в блог, их надо сначала экспортировать из WordPress, возможно, немного адаптировав (например, обновив ссылки на изображения), и только затем импортировать их в ваш блог на Jekyll. К счастью есть несколько инструментов, которые могут в этом помочь.
Для экспорта статей из WordPress, я очень рекомендую WordPress to Jekyll Exporter Бена Балтера (Ben Balter), который позволяет сделать всё в один клик. Он экспортирует весь контент WordPress-блога, включая статьи, изображения и мета-данные, конвертирует, где необходимо, в подходящий для Jekyll формат и выдает в виде ZIP-архива. Спасибо тебе, Бен.
Ещё один вариант — экспортировать все содержимое WordPress через меню «Tools» панели администрирования, а затем импортировать используя Jekyll’s importer.
Затем, нужно обновить ссылки на изображения. Плагин, написанный Беном
Балтером, экспортирует все изображения в папку. Затем их нужно будет
скопировать туда, где вы храните изображения для своего Jekyll-блога,
это может быть папка /images
или CDN.
После этого перед нами встанет задача обновить все ссылки на изображения в статьях. Так как я обновлял всего пять-шесть статей, мне отлично подошли быстрый поиск и замена, но если материалов много, тогда, возможно, стоит написать скрипт или подобрать уже готовый, например, скрипт Паула Стаматиуса (Paul Stamatiou).
И, наконец, нужно импортировать комментарии. Так как Jekyll — платформа для
статических сайтов, он не поддерживает комментарии, однако, решения вроде Disqus
отлично подходят для такого случая! Я рекомендую импортировать комментарии из
WordPress в Disqus, затем, если вы используете Jekyll Now, можете ввести
имя пользователя Disqus в _config.yml
и все заработает.
Написание статей локально в любимом текстовом редакторе
Если вы предпочитаете писать статьи в Sublime, Vim, Atom или другом редакторе,
всё, что нужно сделать — клонировать репозиторий, создать новый пост на Markdown
в директории _posts
и затем запушить изменения на GitHub. GitHub Pages
автоматически пересоберёт сайт как только файл с маркдауном попадет в
репозиторий, и новая статья появится в блоге сразу по окончании сборки.
- Сначала выполните команду
git clone [email protected]:yourusername/yourusername.github.io.git
, или клонируйте репозиторий используя GitHub Mac. - Создайте файл для новой статьи в папке
_posts
. Не забудьте назвать его в соответствии с форматомyear-month-day-title.md
и добавить в начало вводный блок. - Закоммитьте файл статьи и пушните в репозиторий. Может быть полезным посмотреть основы Git от компании Atlassian.
- Вот и все! Подождите пока GitHub Pages пересоберет сайт. Обычно это занимает не больше 10 секунд, если у вас, конечно, не слишком много статей.
Проблема №7: Опять же, не нужно собирать сайт локально, чтобы написать и опубликовать статью. Можно просто локально написать статью и пушнуть её со всеми картинками в репозиторий, после чего GitHub Pages сам пересоберет сайт на сервере.
Создание темы для Jekyll
Хотите изменить тему? Вот кое-что, что вам нужно знать:
Сборка сайта локально
Если вы захотите создать довольно сложную тему, разумно проводить её разработку и тестирование локально. Это необязательно, можно просто пушить изменения в репозиторий и GitHub Pages всё соберёт, однако видеть изменения в процессе работы может быть полезно.
Сначала нужно установить Jekyll и его зависимости. Запустите gem install jekyll
,
затем gem install jemoji jekyll-sitemap
. Должны быть установлены Ruby,
RubyGems и Kramdown. Полный список зависимостей Jekyll.
Вот шаги для локального создания и просмотра сайта на Jekyll:
- Сначала перейдите (
cd
) в директорию, в которой находится сайт. - Запустите
jekyll serve --watch
. (у Jekyll масса встроенных настроек.) - Откройте свой сайт по адресу
http://0.0.0.0:4000
. - Когда закончите, закоммитьте изменения и пушните все в ветку
master
соответствующего репозитория. GitHub Pages пересоберёт сайт.
Проблема №8: Имейте в виду, что jekyll build
стирает
все содержимое папки /_sites/
. Первый шаг jekyll build
— удаление
всего, что есть в /_sites/
, и сборка всех страниц с нуля. Так что
не стоит хранить там файлы, если вы не хотите, чтобы они
исчезли при следующей же сборке. В /_sites/
должно быть
только то, что генерирует Jekyll.
Структура директорий
Вот структура сайта на Jekyll:
/Users/barryclark/Code/jekyll-now
├─ CNAME
├─ _config.yml
├─ _includes
│ ├─ analytics.html
│ └─ disqus.html
├─ _layouts
│ ├─ default.html
│ ├─ page.html
│ └─ post.html
├─ _posts
│ └─ 2014-3-3-Hello-World.md
├─ _site
│ ├─ CNAME
│ ├─ LICENSE
│ ├─ about.html
│ ├─ feed.xml
│ ├─ index.html
│ ├─ sitemap.xml
│ └─ style.css
├─ about.md
├─ feed.xml
├─ images
│ ├── first-post.jpg
├─ index.html
├─ scss
│ ├─ _highlights.scss
│ ├─ _reset.scss
│ ├─ _variables.scss
│ └─ style.scss
└── sitemap.xml
Шаблонизатор Liquid
Jekyll использует язык шаблонов Liquid. Про него нужно знать две важные вещи:
Во-первых, в начале каждого файла есть вводный блок YAML, он определяет шаблон
для вывода страницы и такие переменные, как title
, date
и tags
.
Кроме того, он может содержать пользовательские переменные.
Теги шаблонизатора Liquid используются для создания циклов, условных операторов и для вывода материалов.
Например, пусть каждая статья в блоге использует шаблон из /_layouts/post.html
:
---
layout: default
---
<article>
<h2>{{ page.title }}</h2>
<div>
{{ content }}
</div>
<div>
Написано {{ page.date | date: "%B %e, %Y" }}
</div>
<div>
{% include disqus.html disqus_identifier=page.disqus_identifier %}
</div>
</article>
Вначале файла располагается вводный блок YAML, окруженный тремя дефисами. В нем
мы определяем, что файл должен быть обработан как содержимое шаблона default.html
,
который содержит шапку и подвал сайта.
Разметка Liquid использует двойные фигурные скобки для вывода данных. Самые
первые Liquid-теги в примере выше {{ page.title }}
и {{ content }}
—
они выводят заголовок и содержание статьи. В Jekyll доступно множество
переменных для использования в шаблонах.
Одинарные фигурные и квадратные скобки используются для создания условных
операторов, циклов и включения сниппетов кода. В этом примере я добавил в
конец шаблона блок комментариев Disqus, который находится в файле /_includes/disqus.html
.
_config.yml
Это файл конфигурации Jekyll, который содержит все настройки блога. Что
хорошо в _config.yml
, так это то, что в нем можно задавать пользовательские
переменные, которые затем можно будет использовать в шаблонах сайта.
Например, я использую пользовательские переменные из _config.yml
в блоге
Jekyll Now, чтобы можно было удобно добавлять SVG-иконки в подвал сайта.
Вот переменные в _config.yml
:
footer-links:
github: barryclark
twitter: baznyc
И вот как они используются в /_layouts/default.html
:
<footer>
{% if site.footer-links.github %}<a href="http://github.com/{{ site.footer-links.github }}">{% include svg-icons/github.html %}</a>{% endif %}
{% if site.footer-links.twitter %}<a href="http://twitter.com/{{ site.footer-links.twitter }}">{% include svg-icons/twitter.html %}</a>{% endif %}
</footer>
<figure>
Пример SVG-иконок в подвале
Переменные в ссылку на Twitter добавляются следующим образом: http://twitter.com/{{ site.footer-links.twitter }}
, так что ссылка в футере
будет указывать на вашу учетную запись в Twitter. Ещё одна вещь,
которая меня радует в переменных, — то, что их можно использовать для
опционального отображения элементов интерфейса. Например, иконок в футере
вообще не будет, если вы не зададите значение переменной.
Проблема №9: Обратите внимание, что изменения в _config.yml
обновляются во
время сборки, а не в реальном времени. Это означает, что если вы запускаете
локально jekyll serve
и редактируете _config.yml
, — изменения не применятся.
Нужно остановить и снова запустить jekyll serve
.
Шаблоны и статические страницы
Большинству простых блогов нужно всего два шаблона: один для постов
(post.html
) и один для статических страниц (page.html
). И единственная
разница между ними в Jekyll Now состоит в том, что post.html
включает блок
комментариев Disqus и дату, а page.html
— нет.
Если вы создадите файл с расширением .html
или .md
в корневой
директории сайта, он будет рассматриваться как статическая страница.
Например about.md
будет доступна по адресу www.mysite.com/about
.
Легко и просто!
Изображения
Я храню изображения в директории репозитория /images/
и на данный
момент не испытываю никаких проблем с производительностью. Если сайт размещен
на GitHub Pages, изображения будут отдаваться с CDN GitHub’а и очень быстро
загружаться. Я пока не вижу причин хранить их в другом месте, но, если
уж мигрировать куда-нибудь вроде CloudFront, изменить ссылки совершенно
не проблема.
Мне нравится простота хранения изображений в директории /images/
,
добавлять картинки в пост тоже очень просто, код в маркдаун выглядит вот так:
![Image description](/images/my-image.jpg)
Поддержка препроцессоров
Jekyll на данный момент поддерживает Sass и CoffeeScript без необходимости
использовать плагины или Grunt. Можно просто добавить файлы с расширениями .sass
, .scss
и .coffee
в рабочую директорию, и Jekyll их обработает,
сгенерировав в той же директории .css
и .js
Время Sass’ить! (Источник: Sass)
Чтобы быть уверенным, что .sass
, .scss
и .coffee
будут обрабатываться,
добавьте в начало файлов две строки с тройным дефисом:
---
---
$color-coffee:
Если вы используете @imports
для разбиения Sass на модули, надо сообщить об этом
Jekyll, добавив в _config.yml
следующее:
sass:
sass_dir: _scss
Кроме того, можно задать стиль вывода скомпилированного CSS:
sass:
sass_dir: _scss
style: :compressed
Расширенные возможности Jekyll
В Jekyll есть несколько мощных, более продвинутых фич, которые могут пригодиться, если вы захотите создать что-либо сложнее простого блога.
Файлы данных
Есть два способа интегрировать внешние данные в Jekyll. Первый — используя сторонние сервисы и API. Например, Disqus позволяет добавлять динамический контент на статический сайт используя внешние сервисы.
Второй способ — использование файлов данных. Jekyll может читать файлы в
формате YAML и JSON из директории /_data/
и позволяет использовать их в
шаблонах как обычные переменные. Это весьма полезно для хранения переиспользуемых
данных или настроек, которые вы не хотите помещать в _config.yml
, чтобы он
не разрастался сверх меры.
Кроме того, data-файлы дают возможность добавлять на сайт большие наборы
данных. Можно написать скрипт, который будет разбивать их на несколько
JSON-файлов и размещать их в директории /_data/
. Ярким примером такого подхода
является использование данных Google Analytics в Jekyll для
ранжирования постов по популярности.
Коллекции
Два стандартных типа документов Jekyll — это посты (статьи для блога) и страницы (просто статический контент). Релиз Jekyll 2.0 добавил коллекции, которые позволяют создавать собственные типы документов. Например, можно использовать коллекции для создания фотоальбома, книги или портфолио.
Заключение
Jekyll подходит не для каждого проекта. Основным недостатком генератора статики является сложность внедрения динамических функций на стороне сервера. Количество сервисов, которые можно интегрировать в проект, таких как Disqus, растет, но не все из них предоставляют гибкие настройки и возможность контроля. Jekyll не подходит для создания сайтов с базами пользователей, так как в нём нет ни баз данных, ни логики на стороне сервера для обработки регистрации или аутентификации.
Достоинства Jekyll — его простота и минимализм. Jekyll дает вам всё необходимое, чтобы создать сайт, ориентированный на контент, и который не подразумевает особой интерактивности. Это делает Jekyll идеальным для блога и портфолио и позволяет использовать его для реализации простых сайтов для клиентов.
Не дайте репутации Jekyll, как платформы для создания блогов для хакеров, отпугнуть вас. Создание красивых, быстрых, минималистичных сайтов с его помощью не требует элитных хакерских навыков или умения работать с командной строкой. Как я уже показал в пошаговом руководстве выше, его можно настроить за считанные минуты, посвятив остальное время работе над контентом и дизайном.
Ресурсы для дальнейшего изучения
Jekyll Официальный сайт — это лучший ресурс для изучения Jekyll и создания сайта.
Значительная часть информации для статьи была почёрпнута оттуда.Jekyll Now Этот ресурс упрощает создание блога на основе Jekyll, избавляя от необходимости разбираться вот множестве начальных настроек.
Исходный код Jekyll Репозиторий содержит исходный код и дискуссии на тему Jekyll.
codegen.yml | Генератор кода GraphQL
Наличие файла конфигурации хорошо подходит, когда у нас есть большое количество опций, которые нужно предоставить для генерации некоторого кода. Это может происходить в основном в крупномасштабных проектах, где схема GraphQL довольно сложна, и мы хотели бы создать множество различных форматов.
Чтобы передать конфигурацию в GraphQL Codegen, вам нужно просто создать файл codegen.yml
или codegen.json
и запустить codegen.
Интерфейс командной строки автоматически обнаружит указанный файл конфигурации и сгенерирует соответствующий код.Кроме того, вы также можете определить путь к вашему файлу конфигурации с помощью параметров --config
, например:
yarn graphql-codegen —config ./path/to/config.yml
npx graphql-codegen — -config ./path/to/config.yml
Вот пример возможного файла конфигурации:
Здесь можно увидеть пример очень большого файла конфигурации.
YAML Config Проверка и автозаполнение
Если вы используете VSCode в качестве IDE, обязательно установите плагин YAML, это добавит проверку и автозаполнение для доступных плагинов, конфигурации плагинов и общей структуры кодогенератора .yml
файл!
Доступные параметры #
Вот поддерживаемые параметры, которые вы можете определить в файле конфигурации (см. Исходный код):
Схема
.graphql
, шаблон глобуса для ваших файлов схемы GraphQL или файл JavaScript, который экспортирует схему для генерации кода. Это также может быть массив, определяющий несколько схем для генерации кода. Вы можете узнать больше о поддерживаемых форматах здесь.документов
— Массив путей или глобальных шаблонов для файлов, которые экспортируют документы GraphQL с использованием тегаgql
или простой строки; например:./src/**/*.graphql
. Вы также можете предоставить эти параметры строкой вместо массива, если вы имеете дело с одним документом. Вы можете узнать больше о поддерживаемых форматах здесь.генерирует
(обязательно) — Карта, где ключ представляет выходной путь для сгенерированного кода, а значение представляет набор параметров, которые актуальны для этого конкретного файла.Ниже приведены возможные варианты, которые можно указать:generates.plugins
(обязательно) — список подключаемых модулей для использования при создании файла. Шаблоны также считаются плагинами, и их можно указать в этом разделе. Полный список поддерживаемых плагинов можно найти здесь. Вы также можете указать пользовательский плагин в локальном файле (см. Пользовательские плагины).generates.preset
— список доступных предустановок для сгенерированных файлов.Например,почти рабочий файл
, который генерирует файлы вместе с вашими документами.generate.schema
— То же, что и корневаясхема
, но применяется только к определенному выходному файлу.generate.documents
— То же, что и корневые документыgenerate.config
— То же, что и rootconfig
, но применяется только к определенному выходному файлу.генерирует. Перезапись
— То же, что и root, перезаписывает
, но применяется только для конкретного выходного файла.
require
— Путь к файлу, который определяет настраиваемые обработчики Node.JSrequire ()
для настраиваемых расширений файлов. Это важно, если генератору кода необходимо просмотреть файлы, для которых требуются другие файлы в неподдерживаемом формате (по умолчанию). См. Дополнительную информацию. Обратите внимание, что значения, указанные в вашем.yml
будет загружен после загрузки файла.yml
.config
— Параметры, которые мы хотели бы предоставить указанным плагинам. Параметры могут отличаться в зависимости от того, какие плагины вы указали. Прочтите документацию этого конкретного плагина для получения дополнительной информации. Вы можете узнать больше о том, как передать конфигурацию плагинам здесь.overwrite
— Флаг перезаписи файлов, если они уже существуют при генерации кода (true
по умолчанию).watch
— Флаг для запуска генерации кода при наличии изменений в указанных схемах GraphQL. Вы можете либо указать логическое значение, чтобы включить / выключить его, либо указать массив шаблонов глобусов для добавления пользовательских файлов в часы.тихо
— Флаг для подавления ошибок печати, когда они возникают.errorsOnly
— Флаг для подавления печати чего-либо, кроме ошибок.хуков
— Задает сценарии, запускаемые при возникновении событий в ядре кодогенератора. Вы можете узнать больше о хуках жизненного цикла здесь. Вы можете указать это в своей корневой конфигурации или на каждом выходе.pluginLoader
— Если вы используете программный API в среде браузера, вы можете переопределить эту конфигурацию, чтобы загрузить свои плагины способом, отличным от, требует
.pluckConfig
— позволяет переопределить конфигурацию дляgraphql-tag-pluck
, инструмента, который извлекает ваши операции GraphQL из файлов кода.pluckConfig.modules
— Массив{имя: строка, идентификатор: строка}
, который будет использоваться для отслеживания использования и импортаgql
. Используйте это, если ваши файлы кода импортируютgql
из другой библиотеки или у вас есть собственный тегgql
.идентификатор
— это именованный экспорт, поэтому не указывайте его, если функция тега импортируется по умолчанию.pluckConfig.gqlMagicComment
— Настраивает волшебные комментарии GraphQL для поиска.По умолчанию —/ * GraphQL * /
).pluckConfig.globalGqlIdentifierName
— заменяет имя идентификатора имени GraphQL по умолчанию.
Переменные среды #
Переменные среды можно использовать в файле codegen.yml
::
Вы можете загрузить файл .env
, добавив параметр -r dotenv / config
в свой Команда CLI.
Вы можете указать значение по умолчанию, если переменная среды отсутствует:
Флаги CLI #
Codegen также поддерживает несколько флагов CLI, которые позволяют вам переопределить поведение по умолчанию, указанное в вашем .yml
config file:
--config
(-c
) — указывает используемый файл конфигурации codegen.--watch
(-w
) — заменяет конфигурациюwatch
на true. Вы также можете указать глобальное выражение для создания настраиваемого списка наблюдения.--silent
(-s
) — заменяет конфигурациюsilent
на true.--errors-only
(-e
) — ЗаменяетerrorsOnly
config на true.--require
(-r
) — Задаетrequire.extensions
перед загрузкой файла.yml
.--overwrite
(-o
) — заменяет конфигурациюoverwrite
на true.
Debug Mode #
Вы можете установить для переменной среды DEBUG
значение 1
, чтобы указать генератору кода для печати отладочной информации.
Вы можете установить для переменной среды VERBOSE
значение 1
, чтобы указать генератору кода напечатать дополнительную информацию, касающуюся вывода CLI ( listr
).
Другие способы предоставления конфигурации #
GraphQL-Codegen использует библиотеку cosmiconfig
для управления загрузкой конфигурации.
Это означает, что вы можете использовать codegen.yml
, но также подойдут codegen.json
или codegen.js
. Вы также можете указать всю конфигурацию под ключом "codegen"
в вашем package.json
.
Для получения дополнительной информации обратитесь к документации cosmiconfig
.
GraphQL-Codgen также интегрируется с `GraphQL-Config, поэтому вы можете указать .graphqlrc
в качестве файла конфигурации.
Генерировать случайный YAML — онлайн-инструменты YAML
В этом примере мы генерируем случайный вложенный YAML из случайных английских слов, который также встроен и уменьшен.
Необходимые опцииЭти параметры будут использоваться автоматически, если вы выберете этот пример.
Глубина конфигурации YAML Максимальная глубина YAML
Элементов на уровень Максимальное количество элементов на уровень
Используйте максимум элементов На каждом уровне используйте ровно это много элементов
Использовать встроенный синтаксис Случайным образом используйте встроенный синтаксис для последовательности и коллекции
Последовательности Сгенерировать последовательности?
Коллекции Создавать коллекции?
Числа Сгенерировать числа?
Струны Создавать строки?
Булевы Сгенерировать логические значения?
Используйте случайные английские слова Используйте случайные английские слова для строк и ключей объекта
Не делайте отступов вообще Сжать и минимизировать YAML
generate / generate-travis: создать файл.travis.yml в cwd или в указанный каталог. Установить глобально и запустить с помощью интерфейса командной строки generate или использовать в качестве компонента в собственном генераторе.
Сгенерировать файл .travis.yml в cwd или в указанный каталог. Установить глобально и запустить с помощью интерфейса командной строки generate или использовать в качестве компонента в собственном генераторе.
Быстрый старт
Установить
Установить generate и generate-travis
:
$ npm install --global generate generate-travis
Сгенерировать .travis.yml
файл
Пользовательские шаблоны
Замените встроенный шаблон, добавив пользовательский файл .travis.yml
в ~ / templates / .travis.yml
.
Что такое «Создать»?
Generate — это инструмент командной строки и фреймворк для разработки новых проектов GitHub с помощью генераторов и задач.
Ответы на запросы и среда пользователя могут использоваться для определения шаблонов, каталогов, файлов и содержимого для создания.Поддержка плагинов gulp, base и assembly и многого другого.
Дополнительная информация :
Начало работы
Установить
Установка CLI
Чтобы запустить генератор travis
из командной строки, вам необходимо сначала установить Generate global. Вы можете сделать это сейчас с помощью следующей команды:
$ npm install --global generate
Это добавляет команду gen
к вашему системному пути, позволяя запускать ее из любого каталога.
Установить generate-travis
Установите этот модуль с помощью следующей команды:
$ npm install --global generate-travis
Использование
Запустите задачу этого генератора по умолчанию
с помощью следующей команды:
Что должно быть в терминале
В случае успешного завершения вы должны увидеть в терминале как , начиная с
, так и , завершившиеся
событий, например:
[00:44:21] запуск... ... [00:44:22] закончено ✔
Если вы не видите одно или оба этих события, сообщите нам об этом.
Справка
Чтобы увидеть общее меню справки и доступные команды для интерфейса командной строки Generate, выполните:
Задачи
Все доступные задачи.
Трэвис
Создает файл .travis.yml
в текущий рабочий каталог.
Пример
Чтобы узнать о задачах, посетите документацию Generate.
Следующие шаги
Запуск модульных тестов
Никогда не рано начинать запускать модульные тесты.Когда вы будете готовы начать работу, следующая команда обеспечит установку зависимостей проекта, а затем запустит все модульные тесты:
Публикация вашего генератора
Если ваши тесты проходят и вы готовы опубликовать свой генератор в npm, вы можете сделать это сейчас с помощью следующей команды:
Вы уверены, что готовы ?!
Поехали!
Около
Связанные проекты
- generate-file: Генератор для создания одного файла из шаблона.| домашняя страница
- generate-git: Генератор для инициализации репозитория git и добавления первого коммита. | домашняя страница
- generate-package: создать package.json из предопределенного или определяемого пользователем шаблона. Этот генератор можно использовать из… подробнее | домашняя страница
- generate: инструмент командной строки и фреймворк для разработки новых проектов GitHub. Generate предлагает… больше | домашняя страница
Сообщество
Вы используете Generate в своем проекте? Вы опубликовали генератор и хотите поделиться своим проектом со всем миром?
Вот несколько предложений!
- Если вам нравится Generate и вы хотите написать об этом в Твиттере, пожалуйста, укажите
@generatejs
или используйте хэштег#generatejs
- Покажи свою любовь, поставив в главной роли Generate и
generate-travis
- Получить справку по реализации на StackOverflow (используйте тег
generatejs
в вопросах) - Gitter Обсудите Генерируйте вместе с нами на Gitter
- Если публикуете генератор, спасибо! Чтобы сделать ваш проект максимально доступным для обнаружения, добавьте в package ключевое слово
generategenerator
.json.
Авторы
Содействие
Pull-запросы и звезды всегда приветствуются. В случае ошибок и запросов функций, пожалуйста, создайте проблему.
Эксплуатационные испытания
Установить зависимости разработчика:
$ npm установить -d && npm test
Автор
Джон Шлинкерт
Лицензия
Авторские права © 2016, Джон Шлинкерт. Выпущено по лицензии MIT.
Этот файл был создан командой verb-generate-readme, v0.2.0, 09 декабря 2016 г.
Файл конфигурации generator.yml (1_4)
Генератор админки Symfony позволяет создавать внутренний интерфейс для классы вашей модели. Он работает независимо от того, используете ли вы Propel или Doctrine в качестве ORM.
Создание
Модули генератора Admin создаются propel : generate-admin
или доктрина: generate-admin
задач:
$ php symfony propel: статья о бэкэнд-генерации администратора
Доктрина $ php symfony: статья о бэкэнде generate-admin
Приведенная выше команда создает модуль генератора статьи
администратора для Артикул
модельный класс.
примечание
Конфигурационный файл generator.yml
кэшируется как файл PHP; то
процесс автоматически управляется sfGeneratorConfigHandler
учебный класс.
Файл конфигурации
Конфигурирование такого модуля может быть выполнено в apps / backend / modules / model / article / generator.yml
файл:
: класс: sfPropelGenerator параметр: # Массив параметров
Файл содержит две основные записи: class
и param
.Класс sfPropelGenerator
для Propel и sfDoctrineGenerator
для Doctrine.
Запись param
содержит параметры конфигурации для сгенерированного модуля. model_class
определяет класс модели, связанный с этим модулем, а
Тема Параметр
определяет используемую по умолчанию тему.
Но основная конфигурация выполняется под записью config
. Это организовано
на семь секций:
-
действий
: конфигурация по умолчанию для действий, найденных в списке и в формах -
полей
: Конфигурация полей по умолчанию -
список
: Конфигурация для списка -
фильтр
: Конфигурация фильтров -
форма
: Конфигурация для новой / редактируемой формы -
edit
: Специальная конфигурация для страницы редактирования -
новый
: Специальная конфигурация для новой страницы
При первом создании все разделы определены как пустые, как администратор генератор определяет разумные значения по умолчанию для всех возможных вариантов:
Генератор: параметр: config: действия: ~ поля: ~ список: ~ фильтр: ~ форма: ~ редактировать: ~ новое: ~
В этом документе описаны все возможные параметры, которые вы можете использовать для настройки
Генератор администратора через запись config
.
примечание
Все параметры доступны как для Propel, так и для Doctrine и работают то же, если не указано иное.
Поля
Многие опции принимают в качестве аргумента список полей. Поле может быть настоящим
имя столбца или виртуальное. В обоих случаях геттер должен быть определен в
класс модели ( получает суффикс
после имени поля в верблюжьем регистре).
Судя по контексту, генератор админки достаточно умен, чтобы знать, как
отображать поля. Чтобы настроить рендеринг, вы можете создать частичный или
компонент. По соглашению перед частичными числами ставится знак подчеркивания ( _
), и
компоненты по тильде ( ~
):
дисплей: [_title, ~ content]
В приведенном выше примере поле заголовка
будет отображено заголовком
partial, а поле content
— компонентом content
.
Генератор админки передает некоторые параметры частям и компонентам:
На странице отредактируйте
или новую страницу
, если вы хотите сохранить макет с двумя столбцами (поле
метка и виджет), частичный или компонентный шаблон должен следовать этому
шаблон:
<метка>
Заполнители объектов
Некоторые параметры могут принимать заполнители объекта модели.Заполнитель — это строка
который следует шаблону: %% NAME %%
. Строка NAME
может быть чем угодно,
может быть преобразован в допустимый метод получения объекта ( получить
с суффиксом
верблюжья версия строки NAME
). Например, %% title %%
будет
заменяется значением $ article-> getTitle ()
. Значения-заполнители
динамически заменяется во время выполнения в соответствии с объектом, связанным с
текущий контекст.
подсказка
Когда у модели есть внешний ключ к другой модели, Propel и Doctrine
определить геттер для связанного объекта.Как и любой другой геттер, он
может использоваться в качестве заполнителя, если вы определяете значимый __toString ()
метод, преобразующий объект в строку.
Наследование конфигурации
Конфигурация админ-генератора основана на каскаде конфигураций. принцип. Правила наследования следующие:
-
новое
иредактировать
наследуется отформы
, которая наследуется отполей
-
список
наследуется отполей
-
фильтр
наследуется отполей
Учетные данные
Действия в админ-генераторе (в списке и на формах) можно скрыть,
на основе учетных данных пользователя с использованием параметра учетных данных
(см. ниже).Однако, даже если ссылка или кнопка не отображаются, действия должны
по-прежнему быть должным образом защищенными от незаконного доступа. Управление учетными данными в
генератор админки заботится только об отображении.
Учетные данные Параметр
также можно использовать для скрытия столбцов на странице списка.
Настройка действий
Если конфигурации недостаточно, вы можете переопределить сгенерированные методы:
Метод | Описание |
---|---|
executeIndex () | список просмотреть действие |
executeFilter () | Обновляет фильтры |
executeNew () | новый посмотреть действие |
executeCreate () | Создает новый рекорд |
executeEdit () | изменить просмотреть действие |
executeUpdate () | Обновляет запись |
executeDelete () | Удаляет запись |
executeBatch () | Выполняет пакетное действие |
executeBatchDelete () | Выполняет пакетное действие _delete |
processForm () | Обрабатывает форму записи |
getFilters () | Возвращает текущие фильтры |
набор фильтров () | Набор фильтров |
getPager () | Возвращает пейджер списка |
getPage () | Получает страницу пейджера |
setPage () | Устанавливает страницу пейджера |
buildCriteria () | Создает критериев для списка |
addSortCriteria () | Добавляет сортировку Критерии в список |
getSort () | Возвращает текущий столбец сортировки |
набор Сортировка () | Устанавливает текущий столбец сортировки |
Настройка шаблонов
Каждый сгенерированный шаблон можно переопределить:
Шаблон | Описание |
---|---|
_активы.php | Отображает CSS и JS для использования в шаблонах |
_filters.php | Отображает блок фильтров |
_filters_field.php | Отображает одно поле фильтра |
_flashes.php | Отображает флэш-сообщения |
_form.php | Отображает форму |
_form_actions.php | Отображает действия формы |
_form_field.php | Отображает одно поле формы |
_form_fieldset.php | Отображает набор полей формы |
_form_footer.php | Отображает нижний колонтитул формы |
_form_header.php | Отображает заголовок формы |
_list.php | Показывает список |
_list_actions.php | Отображает список действий |
_list_batch_actions.php | Отображает список пакетных действий |
_list_field_boolean.php | Отображает одно логическое поле в списке |
_list_footer.php | Отображает нижний колонтитул списка |
_list_header.php | Отображает заголовок списка |
_list_td_actions.php | Отображает действия объекта для строки |
_list_td_batch_actions.php | Показывает флажок для строки |
_list_td_stacked.php | Отображает макет с накоплением для строки |
_list_td_tabular.php | Отображает одно поле для списка |
_list_th_stacked.php | Отображает имя одного столбца для заголовка |
_list_th_tabular.php | Отображает имя одного столбца для заголовка |
_pagination.php | Отображает нумерацию страниц списка |
editSuccess.php | Отображает редактировать вид |
indexSuccess.php | Отображает список вид |
новыйSuccess.php | Отображает новый вид |
Настройка внешнего вида
Внешний вид генератора админки можно очень легко настроить, так как сгенерированный
шаблоны определяют множество атрибутов HTML class
и id
.
В редактируют
или новую страницу
, каждое поле HTML-контейнера имеет следующее
классов:
-
sf_admin_form_row
- класс в зависимости от типа поля:
sf_admin_text
,sf_admin_boolean
,sf_admin_date
,sf_admin_time
илиsf_admin_foreignkey
. -
sf_admin_form_field_COLUMN
, гдеCOLUMN
— имя столбца
На странице списка
каждый контейнер HTML поля имеет следующие классы:
- класс в зависимости от типа поля:
sf_admin_text
,sf_admin_boolean
,sf_admin_date
,sf_admin_time
илиsf_admin_foreignkey
. -
sf_admin_form_field_COLUMN
, гдеCOLUMN
— имя столбца
Поле Раздел
определяет конфигурацию по умолчанию для каждого поля. Этот
конфигурация определяется для всех страниц и может быть переопределена на каждой странице.
основа страницы ( список
, фильтр
, форма
, редактировать
и новый
).
этикетка
По умолчанию : гуманизированное имя столбца
Параметр label
определяет метку, используемую для поля:
: поля: slug: {label: "URL-ярлык"}
справка
По умолчанию : нет
Параметр справки
определяет текст справки, отображаемый для поля.
атрибуты
По умолчанию : array ()
Параметр attributes. Параметр
определяет атрибуты HTML, передаваемые виджету:
: поля: slug: {attributes: {class: foo}}
учетные данные
По умолчанию : нет
Параметр учетные данные Параметр
определяет учетные данные, которые пользователь должен иметь для этого поля.
для отображения. Учетные данные применяются только для списка объектов.
: поля: slug: {учетные данные: [админ]} is_online: {учетные данные: [[админ, модератор]]}
примечание
Учетные данные должны быть определены по тем же правилам, что и в security.yml
конфигурационный файл.
средство визуализации
По умолчанию : нет
Параметр визуализатора
определяет обратный вызов PHP для вызова для визуализации поля.Если
определенный, он переопределяет любой другой флаг, например частичный или компонентный.
Обратный вызов вызывается со значением поля и определенными аргументами.
параметром renderer_arguments
.
renderer_arguments
По умолчанию : array ()
Параметр renderer_arguments
определяет аргументы, передаваемые в renderer
Обратный вызов PHP при визуализации поля. Используется только в том случае, если Renderer
опция определена.
тип
По умолчанию : Текст
для виртуальных столбцов
Параметр type
определяет тип столбца. По умолчанию symfony использует
тип, определенный в определении вашей модели, но если вы создаете виртуальный столбец, вы
может переопределить тип Text
по умолчанию одним из допустимых типов:
-
Иностранный ключ
-
логический
-
Дата
-
Время
-
Текст
-
Enum
(доступно только для Doctrine)
формат_даты
По умолчанию : f
Параметр date_format
определяет формат, используемый при отображении дат.Это
может быть любым форматом, распознаваемым классом sfDateFormat
. Этот вариант не
используется, когда тип поля - Дата
.
Для формата можно использовать следующие токены:
-
G
: Эра -
г.
: год -
П
: пн -
д
: день -
ч
: Час 12 -
H
: часы -
м
: минут -
с
: секунды -
E
: сегодня -
D
: день -
F
: DayInMonth -
w
: WeekInYear -
Вт
: неделя в месяц -
a
: AMPM -
к
: HourInDay -
K
: HourInAMPM -
z
: часовой пояс
Фреймворк определяет несколько встроенных действий.Все они начинаются с префикса
подчеркивание ( _
). Каждое действие можно настроить с помощью параметров, описанных в
эта секция. Те же параметры можно использовать при определении действия в список
, редактирование
или новых
записей.
этикетка
По умолчанию : Клавиша действия
Метка Параметр
определяет метку, используемую для действия.
действие
По умолчанию : определяется на основе имени действия
Параметр action
определяет имя действия для выполнения без execute
префикс.
учетные данные
По умолчанию : нет
Параметр учетные данные
определяет учетные данные, которые пользователь должен иметь для действия.
для отображения.
примечание
Учетные данные должны быть определены по тем же правилам, что и в security.yml
конфигурационный файл.
титул
По умолчанию : Гуманизированное имя класса модели с суффиксом «Список»
Параметр заголовок
определяет заголовок страницы списка.
дисплей
По умолчанию : все столбцы модели в порядке их определения в схеме. файл
Параметр display
определяет массив упорядоченных столбцов для отображения в
список.
Знак равенства ( =
) перед столбцом - это соглашение о преобразовании строки в
ссылка, которая ведет на страницу редактирования
текущего объекта.
: список: дисплей: [= имя, название]
примечание
Также см. Параметр скрыть
, чтобы скрыть некоторые столбцы.
скрыть
По умолчанию : нет
Параметр hide
определяет столбцы, которые нужно скрыть из списка. Вместо
указав столбцы, которые будут отображаться с опцией display
, это
иногда быстрее скрыть некоторые столбцы:
: список: скрыть: [created_at, updated_at]
примечание
Если предусмотрены оба варианта: display
и hide
, hide
опция игнорируется.
макет
По умолчанию : табличный
Возможные значения : табличное
или составное
Макет Параметр
определяет, какой макет использовать для отображения списка.
В табличном макете
каждое значение столбца находится в своем собственном столбце таблицы.
В макете с накоплением
каждый объект представлен одной строкой,
который определяется опцией params
(см. ниже).
примечание
Дисплей Параметр
по-прежнему необходим при использовании макета с накоплением
в качестве
он определяет столбцы, которые пользователь может сортировать.
параметры
Значение по умолчанию : нет
Параметр params
используется для определения шаблона строки HTML, который будет использоваться, когда
с использованием макета с накоплением
.Эта строка может содержать заполнители объекта модели:
: список: параметры: | %% title %% написано %% author %% и опубликовано на %% published_at %%.
Знак равенства ( =
) перед столбцом - это соглашение о преобразовании строки в
ссылка, которая ведет на страницу редактирования
текущего объекта.
сортировать
Значение по умолчанию : нет
Параметр sort
определяет столбец сортировки по умолчанию.Это массив, состоящий из
два компонента: имя столбца и порядок сортировки: по возрастанию
или по убыванию
:
: список: sort: [published_at, desc]
max_per_page
Значение по умолчанию : 20
Параметр max_per_page
определяет максимальное количество объектов для отображения на
одна страница.
pager_class
Значение по умолчанию : sfPropelPager
для Propel и sfDoctrinePager
для Doctrine
Параметр pager_class
определяет класс пейджера для использования при отображении
список.
партии_операций
Значение по умолчанию : {_delete: ~}
Параметр batch_actions
определяет список действий, которые могут быть выполнены
для выбора объектов в списке.
Если вы не определите действие
, генератор администратора будет искать метод
названный в честь имени в верблюжьем регистре с префиксом executeBatch
.
Выполняемый метод получил первичные ключи выбранных объектов через ids
параметр запроса.
подсказка
Функцию пакетных действий можно отключить, установив для параметра значение
пустой массив: {}
объект_действие
Значение по умолчанию : {_edit: ~, _delete: ~}
Параметр object_actions
определяет список действий, которые могут быть выполнены.
по каждому объекту списка:
действия объекта: moveUp: {label: "двигаться вверх", action: "moveUp"} moveDown: {label: "двигаться вниз", action: "moveDown"} _edit: ~ _delete: ~
Если вы не определите действие
, генератор администратора будет искать метод
назван в честь имени в верблюжьем регистре с префиксом executeList
.
подсказка
Функцию действий с объектом можно отключить, установив для параметра значение
пустой массив: {}
действий
Значение по умолчанию : {_new: ~}
Параметр действий Параметр
определяет действия, не требующие выполнения каких-либо объектов, например создание
новый объект.
Если вы не определите действие
, генератор администратора будет искать метод
назван в честь имени в верблюжьем регистре с префиксом executeList
.
подсказка
Функцию действий с объектом можно отключить, установив для параметра значение
пустой массив: {}
peer_method
Значение по умолчанию : doSelect
Параметр peer_method
определяет метод, вызываемый для извлечения объектов из
отобразить в списке.
предупреждение
Эта опция существует только для Propel.Для Doctrine используйте table_method
вариант.
table_method
Значение по умолчанию : doSelect
Параметр table_method
определяет метод, вызываемый для получения объектов.
для отображения в списке.
предупреждение
Эта опция существует только для Doctrine. Для Propel используйте peer_method
вариант.
peer_count_method
Значение по умолчанию : doCount
Параметр peer_count_method
определяет метод, вызываемый для вычисления
количество объектов для текущего фильтра.
предупреждение
Эта опция существует только для Propel. Для Доктрины используйте table_count_method
вариант.
table_count_method
Значение по умолчанию : doCount
Параметр table_count_method
определяет метод, вызываемый для вычисления
количество объектов для текущего фильтра.
предупреждение
Эта опция существует только для Doctrine. Для Propel используйте peer_count_method
вариант.
Раздел filter
определяет конфигурацию формы фильтрации
отображается на странице списка.
дисплей
Значение по умолчанию : все поля, определенные в классе формы фильтра, в порядке их определение
Параметр display
определяет упорядоченный список полей для отображения.
подсказка
Поскольку поля фильтра всегда необязательны, нет необходимости переопределять класс формы фильтра для настройки отображаемых полей.
класс
Значение по умолчанию : имя класса модели с суффиксом FormFilter
Параметр class
определяет класс формы, который будет использоваться для формы filter
.
подсказка
Чтобы полностью удалить функцию фильтрации, установите class
на false
.
Форма Раздел
существует только как резерв для редактирования
и новых разделов
(см. правила наследования во введении).
примечание
Для разделов формы ( форма
, редактировать
и новый
) метка
и помогают
опциям
переопределить те, которые определены в классах формы.
дисплей
Значение по умолчанию : все поля, определенные в классе формы, в порядке их определение
Параметр display
определяет упорядоченный список полей для отображения.
Эту опцию также можно использовать для группирования полей:
# приложения / бэкэнд / модули / модель / config / generator.yml config: форма: отображать: Содержание: [название, текст, автор] Администратор: [is_published, expires_at]
Приведенная выше конфигурация определяет две группы ( Content
и Admin
), каждая
содержащий подмножество полей формы.
предупреждение
Все поля, определенные в модельном бланке, должны присутствовать на дисплее
вариант.В противном случае это может привести к неожиданным ошибкам проверки.
класс
Значение по умолчанию : название класса модели с суффиксом Форма
Параметр class
определяет класс формы, который будет использоваться для edit
и new
страниц.
подсказка
Несмотря на то, что вы можете определить опцию class
как в new
, так и в edit
разделы, лучше использовать один класс и позаботиться о различиях
используя условную логику.
Раздел edit
принимает те же параметры, что и раздел form
.
титул
По умолчанию : суффикс «Редактировать» - это очеловеченное имя класса модели
Параметр заголовок
определяет заголовок заголовка страницы редактирования. Он может содержать
заполнители объекта модели.
действий
Значение по умолчанию : {_delete: ~, _list: ~, _save: ~}
Параметр действий Параметр
определяет действия, доступные при отправке формы.
Новая секция
имеет те же параметры, что и секция формы
.
титул
По умолчанию : «Новый» с суффиксом гуманизированного имени класса модели
Параметр заголовок
определяет заголовок новой страницы. Он может содержать модель
заполнители объекта.
подсказка
Даже если объект новый, он может иметь значения по умолчанию, которые вы хотите вывод как часть заголовка.
действий
Значение по умолчанию : {_delete: ~, _list: ~, _save: ~, _save_and_add: ~}
Параметр действий Параметр
определяет действия, доступные при отправке формы.
Параметры OpenAPI Generator одинаковы, независимо от того, используете ли вы CLI, плагины Maven / Gradle или параметры онлайн-генерации. На этой странице демонстрируется навигация по параметрам через интерфейс командной строки.Команды представлены здесь в логической последовательности в виде учебного пособия, но вы можете сразу перейти к команде создания.
#help
Параметр help
содержит список всех команд, доступных для интерфейса командной строки.
Копироватьopenapi-generator-cli help
использование: openapi-generator-cli <команда> [
] Наиболее часто используемые команды openapi-generator-cli:
author Утилиты для создания генераторов или настройки шаблоны.
config-help Справка по настройке для выбранного языка
generate Сгенерировать код с указанным генератором.
help Показать справочную информацию о openapi-generator
list Список доступных генераторов
meta MetaGenerator. Генератор для создания нового набора шаблонов и конфигурации для Codegen. Вывод будет основан на указанном вами языке и будет включать шаблоны по умолчанию.
проверить Проверить спецификацию
версия Показать информацию о версии, используемой в инструментарии
См. 'Openapi-generator-cli help
' для получения дополнительной информации о конкретной команде .
#version
Команда version предоставляет информацию о версии, возвращая либо версию semver по умолчанию, либо git sha при передаче --sha
.
Copy 9000НАЗВАНИЕ
openapi-generator-cli version - Показать информацию о версии
ОБЗОР
openapi-generator-cli version [--sha]
OPTIONS
--sha
Git commit
#list
Команда list
выводит отформатированный список всех доступных генераторов.Передайте опцию -s / - short
, если вы хотите, чтобы вывод в формате CSV был удобен для синтаксического анализа.
Копироватьopenapi-generator-cli help list
NAME
openapi-generator-cli list - выводит список доступных генераторов
SYNOPSIS
openapi-generator-cli list [(-i
| --include < include>)] [(-s | --short)]
ОПЦИИ
-i
, --include список индексов стабильности, разделенных запятыми (значение:
все , бета, стабильная, экспериментальная, устаревшая).Исключая устаревшие по умолчанию
.
-s, --short
сокращенный вывод (подходит для сценариев)
Пример:
Копияopenapi-generator-cli list -s | tr ',' '\ n'
Полный список генераторов см. в Списке генераторов.
# config-help
Параметр config-help
предоставляет подробную информацию о
Копироватьopenapi-generator-cli help config-help
NAME
openapi-generator-cli config-help - Config help для выбранного языка
ОБЗОР
openapi-generator-cli config-help
[(-f <выходной формат> | --format <выходной формат>)]
[(-g <имя генератора> | --generator-name < имя генератора>)]
[--markdown-header] [- named-header]
[(-o <расположение вывода> | --output <расположение вывода>)]
ОПЦИИ
-f <вывод format>, --format <выходной формат>
Записывать выходные файлы в желаемом формате.Возможные варианты: text,
markdown или yamlsample. По умолчанию - «текст».
-g <имя генератора>, --generator-name <имя генератора>
генератор, чтобы получить справку по конфигурации для
--markdown-header
Если формат = уценка, включите эту опцию для записи заголовков уценки
(например, для докзавра).
- named-header
Заголовок включает имя генератора, для ясности в выводе
-o <расположение вывода>, --output <расположение вывода>
При желании напишите справку в это место, в противном случае по умолчанию
стандарт вывод
Обратите внимание на вариант -g / - имя-генератора
(другие параметры доступны для инструментов).
Вы можете передать любое имя генератора (см. Команду list) в -g
, и будут отображены параметры, специфичные для этого генератора. У некоторых генераторов есть много вариантов , в то время как у других может быть только несколько.
Пример:
Копироватьopenapi-generator-cli config-help -g go
Выходы:
КопироватьОПЦИИ КОНФИГУРАЦИИ
packageName
Имя пакета Go (в нижнем регистре). (По умолчанию: openapi)
hideGenerationTimestamp
Скрывает временную метку генерации при создании файлов.(По умолчанию: true)
packageVersion
Версия пакета Go. (По умолчанию: 1.0.0)
withGoCodegenComment
следует ли включать комментарий кодогенератора Go для отключения Go Lint и свертывания по умолчанию в PR и различиях GitHub (по умолчанию: false)
withXml
включать ли поддержку содержимого application / xml введите и включите аннотации XML в модель (работает с библиотеками, которые обеспечивают поддержку JSON и XML) (по умолчанию: false)
prependFormOrBodyParameters
Добавить параметры формы или тела в начало списка параметров.(По умолчанию: false)
Чтобы передать эти параметры, специфичные для генератора клиента go, команде generate
для клиента go, используйте параметр --additional-properties
. См. Пример в разделе "Создать команду".
#meta
Команда meta
создает новый класс Java и файлы шаблонов, которые используются для создания ваших собственных пользовательских шаблонов.
Копироватьopenapi-generator-cli help meta
NAME
openapi-generator-cli meta - MetaGenerator.Генератор для создания нового набора шаблонов
и конфигурации для Codegen. Вывод будет основан на
языке, который вы укажете, и будет включать шаблоны по умолчанию для включения.
ОБЗОР
openapi-generator-cli meta [(-n
| --name )] [(-o <выходной каталог> | --output <выходной каталог>)]
[ (-p
| --package )] [(-t | --type )] ОПЦИИ
-n
, --name удобочитаемое имя генератора
-o <выходной каталог>, --output <выходной каталог>
куда записывать сгенерированные файлы (текущий каталог по умолчанию)
-p
, --package < package> пакет, в который будет помещен основной класс (по умолчанию
org.openapitools.codegen)
-t
, --type тип создаваемого генератора
Подробный пример использования команды meta
см. в разделе Настройка.
#validate
Команда validate
позволяет проверить входную спецификацию, при необходимости предоставляя рекомендации по исправлению ошибок или другим улучшениям (если таковые имеются).
Копироватьopenapi-generator-cli help validate
NAME
openapi-generator-cli validate - Проверить спецификацию
SYNOPSIS
openapi-generator-cli validate
(-i
| --input spec <файл спецификации>) [--recommend] ОПЦИИ
-i <файл спецификации>, --input-spec <файл спецификации>
расположение спецификации OpenAPI в виде URL или файла (обязательно)
- -recommend
Пример действительной спецификации (с использованием petstore-v3.0.yaml)
Копияopenapi-generator-cli validate -i petstore-v3.0.yaml
КопияПроверка спецификации (petstore-v3.0.yaml)
Проблем с проверкой не обнаружено.
Пример неверной спецификации (с использованием petstore-v3.0-invalid.yaml):
Копияopenapi-generator-cli validate -i petstore-v3.0-invalid.yaml
КопироватьПроверка spec (petstore-v3.0-invalid.yaml)
Ошибки:
-отсутствует информация об атрибуте
[ошибка] В спецификации 1 ошибка.
#completion
Хотя это не задокументировано в выводе справки
, интерфейс командной строки предлагает команду завершения
, которую можно использовать для автозаполнения.
Эта команда принимает один или несколько параметров, представляющих список аргументов, который вы в противном случае передали бы в openapi-generator
. Например:
Копироватьopenapi-generator-cli завершение config-help
-o
- выход
- named-header
-g
--generator-name
-f
- -format
--markdown-header
Пример сценария завершения bash можно найти в репозитории по адресу scripts / openapi-generator-cli-completion.баш.
#generate
Команда generate
- это рабочая лошадка инструментария генератора. Таким образом, он имеет на больше доступных на параметров, чем предыдущие команды. Сокращенные варианты приведены ниже, но вы можете развернуть их полное описание.
generate OPTIONSКопироватьopenapi-generator-cli help generate
NAME
openapi-generator-cli generate - сгенерировать код с указанным генератором
.
SYNOPSIS
openapi-generator-cli generate
[(-a
| --auth )] [--api-name-suffix <суффикс имени api>] [--api- пакет
] [--artifact-id <идентификатор артефакта>] [--artifact-version <версия артефакта>]
[(-c <файл конфигурации> | --config <файл конфигурации>)] [--dry-run]
[(-e <шаблонизатор> | --engine <шаблонизатор>)]
[--enable-post-process-file]
[(-g <имя генератора> | --generator-name <имя генератора>)]
[--generate-alias-as-model] [--git-host
] [--git-repo-id
] [--git-user-id ] [--global-property <глобальные свойства>...] [--group-id <идентификатор группы>]
[--http-user-agent <пользовательский агент http>]
(-i <файл спецификации> | --input-spec <файл спецификации>)
[--ignore-file-override <игнорировать расположение переопределения файла>]
[--import-mappings <сопоставления импорта> ...]
[--instantiation-types <типы экземпляров> ...]
[--invoker-package
] [--language-specific-primitives <языковые примитивы>...]
[--library <библиотека>] [--log-to-stderr] [--minimal-update]
[--model-name-prefix <префикс названия модели>]
[- имя-модели-суффикс <суффикс имени модели>]
[--model-package <пакет модели>]
[(-o <выходной каталог> | --output <выходной каталог>)]
[(-p <дополнительные свойства> | --additional-properties <дополнительные свойства>)...]
[--package-name <имя пакета>] [--release-note
] [--remove-operation-id-prefix]
[--reserved-words-mappings <сопоставления зарезервированных слов> ...]
[(-s | --skip-overwrite)] [--server-variables <серверные переменные> ...]
[--skip-validate-spec] [- -strict-spec <истинное / ложное строгое поведение>]
[(-t <каталог шаблонов> | --template-dir <каталог шаблонов>)]
[--type-mappings <сопоставления типов>...] [(-v | --verbose)]
КопированиеOPTIONS
-a
, --auth добавляет заголовки авторизации при удаленной выборке определений OpenAPI
. Передайте строку name: header в кодировке URL с запятой
, разделяя несколько значений
--api-name-suffix <суффикс имени api>
Суффикс, который будет добавлен ко всем именам API ('тегам').По умолчанию:
Api. например Питомец => ПетАпи. Примечание. В настоящий момент эту функцию поддерживают только генераторы ruby, python, jaxrs
.
--api-package
пакет для сгенерированных классов api
--artifact-id
artifactId в сгенерированном pom.xml. Это также становится частью имени файла сгенерированной библиотеки
--artifact-version <версия артефакта>
версия артефакта в сгенерированном pom.xml. Это также становится частью имени файла сгенерированной библиотеки
-c <файл конфигурации>, --config <файл конфигурации>
Путь к файлу конфигурации. Это может быть JSON или YAML. Если файл JSON,
, содержимое должно иметь формат {"optionKey": "optionValue",
"optionKey1": "optionValue1" ...}. Если файл YAML, содержимое
должно иметь формат optionKey: optionValue.Поддерживаемые параметры могут быть
разными для каждого языка. Запустите команду config-help -g {имя генератора}
, чтобы получить параметры конфигурации для конкретного языка.
--dry-run
Попробуйте все и сообщите о потенциальных изменениях (без внесения изменений в
).
-e <шаблонизатор>, --engine <шаблонизатор>
шаблонизатор: "усы" (по умолчанию) или "руль" (бета)
--enable-post-process-file
Включить пост- обработка файла с использованием переменных среды.
-g <имя генератора>, --generator-name <имя генератора>
используемый генератор (список см. В команде list)
--generate-alias-as-model
Создание реализации модели для псевдонимов для сопоставления и схемы массивов.
«Псевдоним» - это массив, карта или список, который определяется встроенным в документ OpenAPI
и становится моделью в сгенерированном коде. Схема «карта»
- это объект, который может иметь необъявленные свойства, т.е.е. для этого объекта установлен атрибут
'additionalproperties'. Схема 'array'
- это список подсхем в документе OAS
--git-host
Git host, например gitlab.com.
--git-repo-id
Идентификатор репозитория Git, например openapi-генератор.
--git-user-id
Идентификатор пользователя Git, например openapitools.
--global-property <глобальные свойства>
устанавливает указанные глобальные свойства (ранее называвшиеся «системные
свойства») в формате имя = значение, имя = значение (или несколько опций
, каждый с именем = значение )
--group-id
groupId в сгенерированном pom.xml
--http-user-agent
HTTP user agent, e.грамм. codegen_csharp_api_client, по умолчанию
'OpenAPI-Generator / {packageVersion} / {language}'
-i
, --input-spec расположение спецификации OpenAPI в виде URL или файла ( обязательно)
--ignore-file-override <игнорировать расположение переопределения файла>
Задает место переопределения для файла .openapi-generator-ignore
. Наиболее полезно при начальном поколении.
--import-mappings
определяет сопоставления между заданным классом и импортом, который должен использоваться для этого класса
в формате type = import, type = import. Вы
также можете иметь несколько экземпляров этого параметра.
--instantiation-types
устанавливает сопоставления типов экземпляров в формате
type = instantiatedType, type = instantiatedType.Например (в Java):
array = ArrayList, map = HashMap. Другими словами, для типов массивов будет создано
экземпляров как ArrayList в сгенерированном коде. Вы также можете иметь
нескольких экземпляров этого параметра.
--invoker-package
корневой пакет для сгенерированного кода
--language-specific-primitives <специфичные для языка примитивы>
определяет дополнительные специфичные для языка примитивы в формате
типа type1, type2, тип3, тип3.Например:
String, boolean, Boolean, Double. Вы также можете иметь несколько экземпляров
этого параметра.
--library
шаблон библиотеки (подшаблон)
--log-to-stderr
записывать все сообщения журнала (а не только ошибки) в STDOUT. Полезно для
передачи JSON-вывода параметров отладки (например, `--global-property debugOperations = true`)
на внешний синтаксический анализатор напрямую во время тестирования генератора.
--minimal-update
Записывать только измененные выходные файлы.
--model-name-prefix <префикс названия модели>
Префикс, который будет добавлен ко всем названиям моделей.
--model-name-suffix <суффикс названия модели>
Суффикс, который будет добавлен ко всем названиям моделей.
--model-package <пакет модели>
пакет для сгенерированных моделей
-o <выходной каталог>, --output <выходной каталог>
куда записывать сгенерированные файлы (текущий каталог по умолчанию)
- p <дополнительные свойства>, --additional-properties <дополнительные свойства
>
устанавливает дополнительные свойства, на которые могут ссылаться шаблоны усов
в формате имя = значение, имя = значение.Вы также можете иметь
нескольких экземпляров этого параметра.
--package-name <имя пакета>
пакет для сгенерированных классов (где поддерживается)
--release-note <примечание к выпуску>
Примечание к выпуску, по умолчанию - «Незначительное обновление».
--remove-operation-id-prefix
Удалить префикс operationId, например config_getId => getId
--reserved-words-mappings <сопоставления зарезервированных слов>
указывает, как следует экранировать зарезервированное имя.В противном случае используется
по умолчанию _ <имя>. Например id = идентификатор. Вы также можете
иметь несколько экземпляров этого параметра.
-s, --skip-overwrite
указывает, должны ли существующие файлы быть перезаписаны во время генерации
.
--server-variables <серверные переменные>
устанавливает переопределения серверных переменных для спецификационных документов, которые поддерживают
шаблонов переменных серверов.
--skip-validate-spec
Пропускает стандартное поведение проверки входной спецификации.
--strict-spec
Строго соблюдаются формулировки «ДОЛЖЕН» и «ДОЛЖЕН» в спецификации OpenAPI.
например если указано значение false, никакие исправления не будут применяться к документам, которые прошли проверку
, но не соответствуют спецификации.
-t <каталог шаблонов>, --template-dir <каталог шаблонов>
папка, содержащая файлы шаблонов
--type-mappings <сопоставления типов>
устанавливает сопоставления между типами спецификаций OpenAPI и сгенерированными типами кода в
формат OpenAPIType = generatedType, OpenAPIType = generatedType.
Например: массив = Список, карта = Карта, строка = Строка. Вы также можете иметь
нескольких экземпляров этого параметра.
-v, --verbose
подробный режим
Как минимум, generate
требует:
-
-g
, чтобы указать генератор -
-o
, чтобы указать значимый выходной каталог ( по умолчанию используется текущий каталог!) -
-i
, чтобы указать входной документ OpenAPI
ПРИМЕЧАНИЕ Вы также можете передать
-Dcolor
как системное свойство для раскрашивания выходных данных терминала.
#Examples
В следующих примерах используется petstore.yaml.
#Additional Properties
Параметры, относящиеся к генератору, должны быть переданы как --additional-properties
:
Копироватьopenapi-generator-cli generate -g go --additional-properties = prependFormOrBodyParameters = true \
-o out -i petstore.yaml
Передавать дополнительные параметры через пары ключ / значение, разделенные запятыми:
Copy--additional-properties = key1 = value1, key2 = value2
Для полного списка генератора -специфические параметры, см. документацию по генераторам.
# Сопоставления типов и сопоставления импорта
Большинство генераторов позволяют переназначать типы, привязанные к типам спецификации OpenAPI, на типы, желаемые пользователем. Не , все сопоставления типов можно переназначить, поскольку некоторые генераторы определяют сопоставления, которые тесно связаны со встроенными шаблонами.
Если вы не используете свои собственные шаблоны с импортом пакетов star / glob, вам, скорее всего, потребуется объединить --type-mappings
и --import-mappings
вместе.
-
--type-mappings
Определяет целевой тип пользователя -
--import-mappings
Сообщает шаблону тип, который будет импортирован
Вот как можно изменить генератор сервера kotlin-spring
по умолчанию of OffsetDateTime от
до LocalDateTime
:
Копироватьopenapi-generator-cli generate \
-i petstore.yaml \
-g kotlin-spring \
-o out \
-additional properties = library = spring-boot, beanValidations = true, swaggerAnnotations = true, serviceImplementation = true \--import-mappings = DateTime = java.time.LocalDateTime \
--type-mappings = DateTime = java.time.LocalDateTime
ПРИМЕЧАНИЕ: сопоставления применяются к
DateTime
, поскольку это представление примитивного типа. См. DefaultCodegen.
#File Post-Processing
Параметр --enable-post-process-file
позволяет определенным генераторам вызывать некоторый внешний скрипт форматирования, зависящий от языка. Каждое имя файла передается индивидуально этому внешнему сценарию, что позволяет выполнять линтинг, форматирование или другую настраиваемую очистку.
Для получения дополнительной информации см. Постобработка файла.
#Target External Models
Иногда вы не хотите, чтобы кодогенератор создавал для вас модель - вы можете просто включить ту, которая уже существует в вашей кодовой базе. Допустим, у вас уже есть объект User
и вы хотите повторно использовать его, который имеет пакет модели, отличный от других сгенерированных файлов:
Во-первых, укажите, что класс уже включен по умолчанию. Это предотвратит попытки кодогенератора сгенерировать класс.
Copy--language-specific-primitives = Pet
Этот параметр командной строки указывает генератору считать Pet
"примитивным" типом.
Затем, если класс Pet
является другим пакетом, добавьте --import-mapping
, чтобы указать генератору включить этот импорт везде, где используется Pet
:
Копировать--import-mappings = Pet = com.yourpackage.models.Pet
Теперь генератор кода будет знать, что импортировать из этого конкретного пакета.
ПРИМЕЧАНИЕ. сопоставлений импорта
назначается пара "ключ-значение" в этом примере, но несколько значений могут быть разделены запятыми. Например:
Скопируйте--import-mappings = Pet = com.yourpackage.models.Pet, User = com.yourpackage.models.User
# Файл конфигурации
Вместо передачи параметров генератора в CSV of --additional-properties
, вы также можете указать настройки через файл JSON или YAML.
Например, один из наших образцов машинописного текста имеет следующий файл конфигурации:
Copy{
"npmName": "@ swagger / typescript-fetch-petstore",
"npmVersion": "1.0.0 ",
" npmRepository ":" https://skimdb.npmjs.com/registry ",
" snapshot ": false,
" supportsES6 ": true
}
Эти настройки могут быть передается через -c filename
. Здесь мы сохранили вышеуказанное как config.json
:
Копироватьopenapi-generator-cli generate -i petstore.yaml -g typescript-fetch -o out \
- c config.json
Тот же файл конфигурации можно передать в формат YAML со следующим эквивалентным содержимым:
CopynpmName: "@ swagger / typescript-fetch-petstore"
npmVersion: "1.0.0 "
npmRepository:" https://skimdb.npmjs.com/registry "
снимок: false
supportsES6: true
Настройки передаются точно так же, как для config.json
. Самая важная часть - это расширение файла. Поддерживаемые значения: yml
или yaml
.
Имя файла должно быть config.yml
или config.yaml
(в нашем примере это будет config.yaml
.
Copyopenapi-generator-cli generate -i petstore.yaml -g typescript-fetch -o out \
-c config.yaml
#batch
Команда batch
позволяет переместить все аргументы CLI, поддерживаемые командой generate
, в YAML или JSON файл.
ПРИМЕЧАНИЕ : Эта команда поддерживает дополнительное свойство ! Include
, которое может указывать на другой «общий» файл, базовый путь к которому может быть
изменен --includes-base-dir
. Начиная с версии 5.0.0, команда ! Batch
поддерживает несколько свойств ! Include
, как последовательных, так и вложенных.Для поддержки нескольких свойств ! Include
в файле JSON имя свойства может иметь суффикс, например ! Include1
, ! Include2
и т. Д. Суффикс не имеет другого значения, кроме предоставления уникальных имен свойств.
Копияopenapi-generator-cli help batch
NAME
openapi-generator-cli batch - сгенерировать код в пакетном режиме через внешние конфигурации
.
SYNOPSIS
openapi-generator-cli batch [--fail-fast]
[--includes-base-dir
] [(-r | --threads )] [--root-dir
] [--timeout ] [(-v | --verbose)] [-]
... ОПЦИИ
--fail-fast
fail fast при любых ошибках
--includes-base-dir
Базовый каталог, используемый для include
-r
, --threads < Threads> количество потоков
--root-dir
используемый корневой каталог output / includes (include может быть переопределен)
--timeout
таймаут выполнения (минут)
-v, --verbose
подробный режим
-
Этот параметр можно использовать для отделения параметров командной строки от списка аргументов
(полезно, когда аргументы могут быть ошибочно приняты за параметры командной строки
<конфигурации >
Файлы конфигурации генератора.
Пример:
Copymkdir shared && cat> shared / common.yaml << EOF
inputSpec: https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi- генератор / src / test / resources / 3_0 / petstore.yaml
additionalProperties:
x-ext-name: "Your Name"
EOF
cat> kotlin.yaml << EOF
'! include': ' shared / common.yaml '
outputDir: out / kotlin
generatorName: kotlin
artifactId: kotlin-petstore-string
additionalProperties:
dateLibrary: string
serializableModel
: "true" csharp.yaml << EOF
'! include': 'shared / common.yaml'
outputDir: out / csharp-netcore
generatorName: csharp-netcore
additionalProperties:
packageGuid: "{321C8C3F-0- 0 AE42-D59761FB9B6C} "
useCompareNetObjects:" true "
EOF
openapi-generator-cli batch * .yaml
#author
Эта группа команд содержит утилиты для создания генераторов шаблонов или настраиваемых генераторов.
Копироватьopenapi-generator-cli help author
NAME
openapi-generator-cli author - Утилиты для создания генераторов или
шаблонов настройки.
SYNOPSIS
openapi-generator-cli author
openapi-generator-cli author template [(-v | --verbose)]
[(-o <выходной каталог> | --output <выходной каталог>)]
[--library
] (-g <имя генератора> | --generator-name <имя генератора>)
ОПЦИИ
--help
Показать справку об инструменте
--version
Показать вывод полной версии
КОМАНДЫ
Без аргументов, Показать справочную информацию о генераторе openapi
шаблон
Получить шаблоны для локальной модификации
С опцией --verbose, подробный режим
С опцией --output, куда записывать файлы шаблонов (по умолчанию
'out')
С параметром --library , шаблон библиотеки (подшаблон)
С параметром --generator-name, используемый генератор (см. команду list для списка
)
#template
Эта команда позволяет пользователю извлекать шаблоны из jar интерфейса командной строки что упрощает настройку.
КопироватьNAME
openapi-generator-cli author template - Получение шаблонов для локальной модификации
SYNOPSIS
openapi-generator-cli author template
(-g <имя генератора> | --generator-name < имя генератора>)
[--library
] [(-o <выходной каталог> | --output <выходной каталог>)]
[(-v | --verbose)]
ОПЦИИ
-g <имя генератора>, --generator-name <имя генератора>
используемый генератор (список см. В команде list)
--library
шаблон библиотеки (подшаблон)
-o <выходной каталог>, --output <выходной каталог>
куда записывать файлы шаблонов (по умолчанию 'out')
-v, --verbose
подробный режим 900 03
Пример:
Извлечь шаблоны Java, ограничиваясь библиотекой webclient
.
Copyopenapi-generator-cli author template -g java --library webclient
Извлечь все шаблоны Java:
Copyopenapi-generator-cli author template -g java
Create and Configure Задания и конвейеры с использованием YAML
Вот формат конфигурации YAML задания со значениями по умолчанию. Обратите внимание, что поля со значением ""
указывают на то, что он принимает строковое значение, которое по умолчанию пусто. ""
не является допустимым значением для некоторых полей, например name
, vm-template
и url
. Если вы хотите, чтобы поле использовало значение по умолчанию, не добавляйте поле в файл YAML.
При настройке задания такие поля, как name
, description
, vm-template
и auto
, должны предшествовать таким группам, как git
, params
и steps
.
работа:
имя: ""
описание: ""
vm-template: "" # требуется
auto: false # true подразумевает ветку: master; в противном случае явно установите ветку
авто:
ветка: mybranch
from-job: "" # создать задание как копию другого задания; игнорируется после создания
для-слияния-запроса: ложь
мерзавец:
- url: "" # обязательно
ветка: "мастер"
репо-имя: "происхождение"
local-git-dir: ""
Включенные регионы: ""
исключенные-регионы: ""
исключенные-пользователи: ""
ветвь слияния: ""
имя-пользователя-конфигурации: ""
config-user-email: ""
слияние из репо: ложь
URL-адрес слияния-репо: ""
prune-удаленные-ветки: ложь
пропустить внутренний тег: правда
clean-after-checkout: ложь
обновления-подмодули: ложь
использование-коммит-автор: ложь
wipeout-workspace: ложь
сборка при фиксации: ложь
параметры:
# логические параметры, параметры выбора и строковые могут быть указаны как строковые значения в форме - ИМЯ = ЗНАЧЕНИЕ
# ЗНАЧЕНИЕ логического параметра должно быть истинным или ложным, e.г., - BUILD_ALL = true
# ЗНАЧЕНИЕ параметра выбора - это список, разделенный запятыми, например, - PRIORITY = NORMAL, HIGH, LOW
# ЗНАЧЕНИЕ строкового параметра - любое другое, например - URL = https: //github.com
# Как вариант, параметры можно указать как объекты:
- логическое:
имя (обязательно
значение: true # требуется
описание: ""
- выбор:
имя (обязательно
описание: ""
choices: [] # массив вариантов строковых значений; хотя бы один необходим
- мерж-реквест:
параметры:
GIT_REPO_BRANCH = "" # требуется
GIT_REPO_URL = "" # требуется
MERGE_REQ_ID = ""
- пароль:
имя (обязательно
пароль: "" # требуется - рекомендуется использовать ссылку на именованный пароль, например "# {NAME}"
описание: ""
- нить:
имя (обязательно
value: "" # требуется
описание: ""
перед:
- копии-артефакты:
с работы: ""
номер сборки: 1 # требуется, какая сборка: SPECIFIC_BUILD
артефакты для копирования: ""
целевой-каталог: ""
which-build: "LAST_SUCCESSFUL" # другие варианты: LAST_KEEP_FOREVER, UPSTREAM_BUILD, SPECIFIC_BUILD, PERMALINK, PARAMETER
последний-успешный-резервный: ложь
постоянная ссылка: "LAST_SUCCESSFUL" # другой вариант: LAST, LAST_FAILED, LAST_UNSTABLE, LAST_UNSUCCESSFUL
# другой вариант требует which-build: PERMALINK
param-name: "BUILD_SELECTOR" # требует, какая сборка: PARAMETER
flatten-dirs: ложь
необязательно: ложь
- оракул-мавен:
otn-login: "" # требуется
otn-password: "" # требуется
идентификатор сервера: ""
настройки.xml: ""
- xvfb:
display-number: "0"
смещение экрана: "0"
размеры экрана: "1024x768x24"
время ожидания в секундах: 0
дополнительные параметры: "-nolisten inet6 + extension RANDR -fp / usr / share / X11 / fonts / misc"
лог-вывод: истина
выключение-xvfb-после: правда
шаги:
- муравей:
файл сборки: ""
цели: ""
характеристики: ""
java-options: ""
- bmccli:
закрытый ключ: "" # требуется
user-ocid: "" # требуется
отпечаток пальца: "" # требуется
аренда: "" # требуется
регион: "US_Phoenix_1"
- docker-build: # командам docker требуется vm-template с программным пакетом Docker
источник: "DOCKERFILE" # другие варианты: DOCKERTEXT, URL
path: "" # каталог с файлами
опции: ""
изображение:
хост реестра: ""
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
корневой-контекст-путь: ""
docker-text: "" # требуется, если источник: DOCKERTEXT, в противном случае не допускается
context-root-url: "" # требуется, если source: URL в противном случае не разрешен
- образ-докер:
опции: ""
изображение:
хост реестра: ""
идентификатор реестра: ""
имя-изображения: ""
тег версии: ""
- докер-загрузка:
input-file: "" # обязательно
- докер-логин:
хост реестра: ""
имя пользователя: "" # требуется
Требуется пароль
- докер-толчок:
опции: ""
изображение:
registry-host: "" # требуется
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
- docker-rmi:
remove: "NEW" # другой вариант: ONE, ALL
опции: ""
image: # только если удалить: ONE
registry-host: "" # требуется
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
- докер-сохранение:
выходной файл: # требуется
изображение:
registry-host: "" # требуется
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
- докер-тег:
исходное изображение:
registry-host: "" # требуется
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
целевое изображение:
registry-host: "" # требуется
идентификатор реестра: ""
image-name: "" # требуется
тег версии: ""
- докер-версия:
опции: ""
- fn-build:
build-args: ""
рабочий-реж: ""
использовать-докер-кеш: правда
подробный вывод: ложь
хост реестра: ""
имя пользователя: ""
- fn-bump:
рабочий-реж: ""
bump: "--patch" # другие варианты: "--major", "--minor"
- fn-deploy:
deploy-to-app: "" # требуется
build-args: ""
рабочий-реж: ""
развернуть все: ложь
подробный вывод: ложь
использовать-докер-кеш: правда
no-version-bump: правда
не нажимать: правда
хост реестра: ""
имя пользователя: ""
api-url: "" # требуется
- fn-oci:
ID-купе: "" # требуется
провайдер: ""
кодовая фраза: "" # требуется
- fn-push:
рабочий-реж: ""
подробный: ложь
хост реестра: ""
имя пользователя: ""
- fn-test:
рабочий-реж: ""
подробный вывод: ложь
тест-все-функции: ложь
- fn-версия: {}
- градиент:
использование-обертка: ложь
make-executable: false # игнорируется, если только use-wrapper: true
from-root-build-script-dir: false # игнорируется, если только use-wrapper: true
задачи: "чистая сборка"
build-файл: "build.Gradle "
переключатели: ""
использовать-рабочее пространство-как-дома: ложь
- maven:
цели: "чистая установка"
pom-файл: "pom.xml"
частное репо: ложь
частный временный каталог: ложь
офлайн: false
показать ошибки: ложь
рекурсивный: истина
профили: ""
характеристики: ""
многословность: NORMAL # другие варианты: DEBUG, QUIET
контрольная сумма: NORMAL # другие варианты: STRICT, LAX
снимок: NORMAL # другие варианты: FORCE, SUPPRESS
проекты: ""
резюме-из: ""
режим отказа: NORMAL # другие варианты: AT_END, FAST, NEVER
make-mode: NONE # другие варианты: DEPENDENCIES, DEPENDENTS, BOTH
поток: ""
jvm-options: ""
- nodejs:
источник: SCRIPT # другой вариант: FILE
file: "" # только если источник: FILE
script: "" # только если источник: SCRIPT
- psmcli:
имя пользователя: "" # требуется
Требуется пароль
identity-domain: "" # требуется
регион: США # другой выбор: EMEA
выходной формат: JSON # другой вариант: HTML
- ракушка:
сценарий: ""
xtrace: true
verbose: false # оба verbose и xtrace не могут быть истинными
- sqlcl:
имя пользователя: ""
пароль: ""
файл учетных данных: ""
строка подключения: ""
источник: SQLFILE # другой вариант: SQLTEXT
sql-file: "" # только если источник: SQLFILE
sql-text: "" # только если источник: SQLTEXT
роль: ПО УМОЛЧАНИЮ # другие варианты: SYSDBA, SYSBACKUP, SYSDG, SYSKM, SYSASM
уровень ограничения: ПО УМОЛЧАНИЮ # другие варианты: УРОВЕНЬ_1, УРОВЕНЬ_2, УРОВЕНЬ_3, УРОВЕНЬ_4
- Веркер:
токен: ""
run-id: ""
идентификатор конвейера: ""
ответвляться: ""
сообщение: ""
сценарий: ""
положение дел: ""
показать имя: ""
после:
- артефакты:
include: "" # требуется
исключать: ""
maven-артефакты: ложь
include-pom: false # игнорируется, если только maven-artifacts: true
- git-push:
push-on-success: ложь
результаты слияния: ложь
tag-to-push: ""
создать-новый-тег: ложь
tag-remote-name: "происхождение"
ответвление на нажатие: ""
удаленное-имя-ветки: "происхождение"
- javadoc:
каталог-javadoc: "цель / сайт / apidocs"
сохранить для каждой сборки: ложь
- юнит:
include-junit-xml: "** / surefire-reports / *.xml "
exclude-junit-xml: ""
keep-long-stdio: ложь
организация-по-родителю: ложь
сбой-сборка-на-тест-сбой: ложь
архив-носитель: правда
настройки:
- отказаться от старого:
дней до постройки: 0
сохраняемых построек: 100
дней для хранения артефактов: 0
Артефактов: 20
- версии:
карта версий:
java: "8"
- git-poll:
cron-pattern: "0/30 * * * * # Каждые 30 минут"
- периодическая сборка:
cron-pattern: "0/30 * * * * # Каждые 30 минут"
- прерывание после:
часов: 0
минут: 0
сбой-сборка: ложь
- повторная попытка сборки:
количество повторов сборки: 5
git-retry-count: 5
- размер журнала:
макс: 50 # мегабайт
- отметка времени регистратора:
отметка времени: истина
- период затишья:
секунд: 0
Создать файл YAML
Создать файл YAML
Создайте файл YAML с настройками, которые будет использовать ваш конвейер сборки.Это будет соответствовать вашим требованиям.
В данном примере показан файл YAML , настроенный для репозитория Bot Framework Solutions. Его можно использовать в любом месте репозитория, не влияя на функциональность файла.
# сборка конкретной ветки
спусковой крючок:
ветви:
включают:
- владелец
- особенность/* пути:
включают:
- 'шаблоны / csharp / VA / *' # По умолчанию отключит PR-сборки
пр: нет бассейн:
имя: Хостинг VS2017
требования:
- msbuild
- visualstudio переменные:
buildPlatform: 'Любой процессор'
buildConfiguration: 'Выпуск' шаги:
- задача: DotNetCoreInstaller @ 0
displayName: 'Использовать.NET Core sdk 2.2.100 '
входы:
версия: 2.2.100
continueOnError: правда - задача: NuGetToolInstaller @ 0
displayName: 'Использовать NuGet 4.9.1'
входы:
versionSpec: 4.9.1 - задача: NuGetCommand @ 2
displayName: 'Восстановление NuGet'
входы:
restoreSolution: 'templates \ csharp \ Templates.sln' - задача: VSBuild @ 1
displayName: 'Создать решение VirtualAssistantTemplate.sln'
входы:
решение: templates \ csharp \ Templates.sln
vs Версия: '16 .0 '
платформа: '$ (buildPlatform)'
конфигурация: '$ (buildConfiguration)' - задача: DotNetCoreCLI @ 2
displayName: 'результаты теста'
входы:
команда: test
проекты: '$ (System.DefaultWorkingDirectory) \ templates \ csharp \ VA \ VA.Tests \ VA.Tests.csproj '
аргументы: '-v n --configuration $ (buildConfiguration) --no-build --no-restore --filter TestCategory! = IgnoreInAutomatedBuild / p: CollectCoverage = true / p: CoverletOutputFormat = cobertura'
рабочий каталог: 'templates \ csharp \ VA \ VA.Tests' - задача: PublishCodeCoverageResults @ 1
displayName: 'Публикация покрытия кода'
входы:
codeCoverageИнструмент: Cobertura
summaryFileLocation: '$ (Build.SourcesDirectory) \ templates \ csharp \ VA \ VA.Тесты \ охват.cobertura.xml '
reportDirectory: '$ (Build.SourcesDirectory) \ templates \ csharp \ VA \ VA.