Сравнение Json и YAML. Парсер контента: Внедрение парсинга XML(YML) файлов Что такое YML

Плагин позволяет импортировать товары из других магазинов через Yandex XML feed, который используется магазинами для торговли на Яндекс.Маркете.
Товары импортируются в структуру плагина магазина WP Shop. Работает автоматическая синхронизация товаров с источником, которую можно запускать как вручную, так и через крон.
Незаменимый инструмент для:
1. Переноса магазина с любых других движков на WordPress WP-Shop
2. Построения партнерских магазинов, для зарабатывания на партнерской комиссии по модели CPS

Для работы приложения требуется IonCube Loader!

Arbitrary section 1

Часто задаваемые вопросы

Installation Instructions
  1. Upload plugin «WP Shop YML Parser» to the /wp-content/plugins/ directory
  2. Activate the plugin «WP Shop YML Parser» through the ‘Plugins’ menu in WordPress
  3. See full userguide how to set up your «WP Shop YML Parser»
A question that someone might have

Visit the site wp-shop.ru for help.

Отзывы

Ни в коем случае не связывайтесь с этими разработчиками и ничего у них не покупайте. Тот функционал, который они обещают в про версии - обман. Они просто возьмут с вас деньги, а потом от всего откажутся, в том числе от поддержки. Просто посмотрите их кривой сайт и полуживую документацию и сами всё поймёте!

Журнал изменений

Version: 0.9
-project_as_field
-id_as_field

Version: 0.8
-template_price (custom price tag)

Version: 0.7
-fields_update — new setting to update custom fields in projects

Version: 0.6
-Sample xml parser replaced by SAX parser that better for memory management

Version: 0.5
-improovments

Version: 0.4
-bulk analizing
-clone project by category

Version: 0.3
-link to docs

Version: 0.2
-local feeds enable
— source as file enable
— addition yml options

Version: 0.1
-initial relese

Пришел день, и конфигурационные файлы для нашего приложения стали настолько большими, что менеджеры намекнули что в JSON-конфигах получается подозрительно много фигурных и не фигурных скобочек, и им хотелось бы от них избавиться. Был дан тонкий намек, что неплохо бы приглядеться к YAML, ведь ходят слухи что он очень человекочитаемый. И скобочек никаких там нет. И списки красивые. Не внять старшим мы естественно не могли, вынуждены были изучать вопрос, искать разницу, плюсы и минусы обоих форматов. Очевидно, что такие сравнения затеваются лишь для того, чтобы подтвердить мнение руководителей или даже если не подтвердить, то они найдут почему они правы и почему стоит делать изменения:)

Уверен, что многие с данными форматами знакомы, но все же приведу краткое описание с википедии:

JSON (англ. JavaScript Object Notation) - текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми. Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.

YAML - человекочитаемый формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования. Название YAML представляет собой рекурсивный акроним YAML Ain"t Markup Language («YAML - не язык разметки»). В названии отражена история развития: на ранних этапах язык назывался Yet Another Markup Language («Ещё один язык разметки») и даже рассматривался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов.

И так, что нам нужно:

  • сделать одинаковый сложный JSON и YAML
  • определить параметры по каким будем сравнивать
  • десериализовать в Java объекты около 30 раз
  • сравнить результат по скорости
  • сравнить читаемость файлов
  • сравнить удобство работы с форматом

Очевидно, что писать собственные парсеры мы не будем, поэтому для начала выберем для каждого формата по уже существующему парсеру.
Для json будем использовать gson (от google), а для yaml - snakeyaml (от не-знаю-кого).

Как видим все просто, нужно только создать достаточно сложную модель, которая будет имитировать сложность конфиг-файлов, и написать модуль который будет тестировать yaml и json парсеры. Приступим.
Нужна модель примерно такой сложности: 20 атрибутов разных типов + 5 коллекций по 5-10 элементов + 5 вложенных объектов по 5-10 элементов и 5 коллекций.
Этот этап всего сравнения смело можно назвать самым нудным и неинтересным. Были созданы классы, с незвучными именами типа Model, Emdedded1, и т.д. Но мы не гонимся за читаемостью кода (как минимум в этой части), поэтому так и оставим.

file.json

"embedded2": { "strel1": "el1", "strel2": "el2", "strel4": "el4", "strel5": "el5", "strel6": "el6", "strel7": "el7", "intel1": 1, "intel2": 2, "intel3": 3, "list1": [ 1, 2, 3, 4, 5 ], "list2": [ 1, 2, 3, 4, 5, 6, 7 ], "list3": [ "1", "2", "3", "4" ], "list4": [ "1", "2", "3", "4", "5", "6" ], "map1": { "3": 3, "2": 2, "1": 1 }, "map2": { "1": "1", "2": "2", "3": "3" } }


file.yml

embedded2: intel1: 1 intel2: 2 intel3: 3 list1: - 1 - 2 - 3 - 4 - 5 list2: - 1 - 2 - 3 - 4 - 5 - 6 - 7 list3: - "1" - "2" - "3" - "4" list4: - "1" - "2" - "3" - "4" - "5" - "6" map1: "3": 3 "2": 2 "1": 1 map2: 1: "1" 2: "2" 3: "3" strel1: el1 strel2: el2 strel4: el4 strel5: el5 strel6: el6 strel7: el7


Соглашусь, что человекочитаемость параметр достаточно субъективный. Но все таки, на мой взгяд, yaml немного более приятен взгляду и более интуитивно понятен.

yaml parser

public class BookYAMLParser implements Parser { String filename; public BookYAMLParser(String filename) { this.filename = filename; } @Override public void serialize(Book book) { try { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); Yaml yaml = new Yaml(options); FileWriter writer = new FileWriter(filename); yaml.dump(book, writer); writer.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public Book deserialize() { try { InputStream input = new FileInputStream(new File(filename)); Yaml yaml = new Yaml(); Book data = (Book) yaml.load(input); input.close(); return data; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (YamlException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { String message = "Exception in file " + filename + ", "; throw new Exception(message + e.getMessage()); } return null; } }

json parser

public class BookJSONParser implements Parser { String filename; public BookJSONParser(String filename) { this.filename = filename; } @Override public void serialize(Book book) { Gson gson = new GsonBuilder().setPrettyPrinting().create();; try { FileWriter writer = new FileWriter(filename); String json = gson.toJson(book); writer.write(json); writer.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public Book deserialize() { Gson gson = new Gson(); try { BufferedReader br = new BufferedReader(new FileReader(filename)); JsonReader jsonReader = new JsonReader(br); Book book = gson.fromJson(jsonReader, Book.class); return book; } catch (IOException e) { e.printStackTrace(); } return null; } }

Как мы видим, оба формата имеют поддержку в java. Но для json выбор намного шире, это бесспорно.
Парсеры гоотовы, теперь рассмотрим реализацию сравнения. Тут тоже все предельно просто и очевидно. Есть простой метод, который 30 раз десериализует объекты из файла. Если кому интересно - код под спойлером.

testing code

public static void main(String args) { String jsonFilename = "file.json"; String yamlFilename = "file.yml"; BookJSONParser jsonParser = new BookJSONParser(jsonFilename); jsonParser.serialize(new Book(new Author("name", "123-123-123"), 123, "dfsas")); BookYAMLParser yamlParser = new BookYAMLParser(yamlFilename); yamlParser.serialize(new Book(new Author("name", "123-123-123"), 123, "dfsas")); //json deserialization StopWatch stopWatch = new StopWatch(); stopWatch.start(); for (int i = 0; i < LOOPS; i++) { Book e = jsonParser.deserialize(); } stopWatch.stop(); System.out.println("json worked: " + stopWatch.getTime()); stopWatch.reset(); //yaml deserialization stopWatch.start(); for (int i = 0; i < LOOPS; i++) { Book e; e = yamlParser.deserialize(); } stopWatch.stop(); System.out.println("yaml worked: " + stopWatch.getTime()); }

В реультате получаем следующий результат:
json worked: 278 yaml worked: 669

Как видно, json файлы парсятся примерно в три раза быстрее. Но абсолютная разница не является критичной, в наших масштабах. Поэтому это не сильный плюс в пользу json.
Это происходит потому что json парсится «на лету», то есть считывается посимвольно и сразу сохраняется в объект. Получается объект формируется за один проход по файлу. На самом деле я не знаю как работает именно этот парсер, но в общем схема такая.
А yaml, в свою очередь, более размеренный. Этап обработки данных делится на 3 этапа. Сначала строится дерево объектов. Потом оно еще каким-то образом преобразовывается. И только после этого этапа конвертируется в нужные структуры данных.

Небольшая сравнительная таблица ("+" - преимущество, "-" - отставание, "+-" - нет явного преимущества):

Как это можно подытожить?
Тут все очевидно, если вам важна скорость - тогда json, если человекочитаемость - yaml. Нужно просто решить, что важнее. Для нас оказалось - второе.
На самом деле, тут можно привести еще множество различных доводов в пользу каждого из форматов, но я считаю, что самые важные все таки эти два пункта.

Далее, при работе с yaml мне пришлось столкнусть с не очень красивой обработкой исключений, особенно при синтаксических ошибках. Также, пришлось протестировать различные yaml библиотеки. Еще, в завершение нужно было написать какую-нибудь валидацию. Были опробованы валидацию при помощи схем (там приходилось вызывать руби гемы), и bean-валидация на основе jsr-303. Если вас интересует какая-либо из этих тем - буду рад ответить на вопросы.
Спасибо за внимание:)

P.S.
Уже под конец написания статьи наткнулся на следующее сравнение yaml и json.

Общая оценка: Всего отзывов: 76

Очень полезный модуль

С первого раза тяжеловат в самостоятельной настройке, так что лучше сразу обратиться за помощью в поддержку.
Аналогов в маркетплейсе нет. Из наиболее важных преимуществ – очень большой функционал и скорость парсинга.
Отдельно хочется отметить работу сотрудника техподдержки Ирины Дерюжиной, ее оперативность и компетентность в решении возникавших вопросов.

Про модуль и техподдержку

Модуль "Парсер контента" экономит кучу времени, + подробный видео и текстовый мануал чтобы разобраться. Появились вопросы обратился в техподдержку, ответили быстро, помогли и исправили мои ошибки.

Кроме этого модуля, я ещё покупал у них два других, по ним тоже задавал вопросы в техподдержку, могу сказать что их помощь одна из лучших. Можно сказать что люди заинтересованы в решении твоей проблемы и хотят её решать. Рекомендую!

Отличная техподдержка!

Могу с уверенностью сказать, что техподдержка очень хорошая! Сайты-доноры все разные и действительно мало шансов настроить парсера самим, но нужно учится. Благодаря техподдержке уже много чего понял, сразу вообще был на сайте, как в темном лесу) Сам парсер мне нравится, пробовал работать с datacol - много волокиты с файлами. Сотбит помогли настроить и спарсить уже два сайта-донора. Двигаемся дальше. Спасибо нашему менеджеру - Сотруднику поддержки: Алине Ващилиной!

Отличный парсер, а тех.поддержка еще лучше)

Первый парсер настроили мне очень быстро, практически мгновенно. Именно то, что мне было нужно. После этого многое стало понятно даже без обучающих роликов. Терпеливо ответили на все мои многочисленные вопросы. А главное, благодаря парсеру за 20 минут удалось сделать то, на что я потратила бы по меньшей мере 2 недели кропотливой работы с ручным заполнением. Я очень довольна. Спасибо.

Спасибо за помощь!

Попались не стандартные сайты для парсинга - без каталога и страниц навигации вообще. ТП помогла настроить, очень благодарна!
Было бы хорошо, если бы были примеры настройки таких сайтов в видеоинструкциях)

Отличный модуль!

Отличный модуль! Пользуюсь уже не первый год, так же всегда рекомендую данный модуль своим клиентам, все довольны. Отдельная благодарность техподдержке, всегда помогают и не затягивают с ответами.

Отличный модуль для парсинга

Пользуюсь модулем второй год все задачи по парсингу выполняет на отлично!!! Все проблемы по настройке тех поддержка всегда подсказывает без проволочек, хочу отдельно поблагодарить Ирину Дерюжину из тех поддержки.

Действительно, всё мрачно)

К Сотбиту в целом, и к данному решению в частности, раньше относился сугубо положительно - покупали это и другие решения, ставили, все было нормально. Однако, сейчас лояльность компании к клиентам заметно снизилась, последовательные попытки решить проблему сначала через поддержку, потом через вкладку "Обсуждения" результат не принесли, поэтому буду понижать рейтинг.

Плюсы. Если парсить товары с сайтов-доноров, вопросов нет.

Минусы. Парсинг из файлов (csv) с проблемами. А к сожалению, основная масса поставщиков дает свои базы именно в файлах. Конкретика:

1) Парсер не позволяет сопоставить разделы из файла выгрузки с уже созданными разделами в каталоге. Сначала мы думали, что это ошибка, но в поддержке нам ответили, что так и задумано: "Парсер ищет совпадающие разделы либо по названию, либо по ID и если не будет полного 100%-го соответствия по одному из критериев парсер создаст новый раздел."

Это очень неудобно, т.к. названия разделов практически никогда не совпадают и модуль становится практически бесполезен.

2) В настройках csv-парсера в подсказке к параметру "Индекс поля, содержащего названия товара" указано, что "Если необходимо составить наименование из нескольких частей, то укажите индексы полей через ",". Например: 0, 1, 5". На деле, если так сделать, то для каждого обработанного парсером товара показываются 2 ошибки:
1. Индекс наименования торгового предложения неверен или пуст.
2. - Не введено название. Обязательное поле "Символьный код" не заполнено.

3) В доп. картинках нельзя выгрузить изображения, если ссылки на них прописаны в разных полях файла. Парсер предполагает только тот вариант, когда картинки указаны через запятую/другой разделитель в одном поле, что является довольно редким явлением.

Действительно незаменимый модуль

При запуске нового интернет-магазина добавить десятки тысяч товаров с характеристиками и картинками непосильная задача. Именно здесь и нужно это решение от Сотбит, которое сэкономит вам нервы и время. Контент-менеджеры конкурентов не зря ведь старались, правда?)
С настройкой парсера мучались долго, не скрою. Без техподдержки, не имея знаний в программировании и ничего не понимая в теме, будут сложности с настройкой (справедливости ради отмечу, что сложности возникают чаще с мудреными сайтами). Сейчас мы уже вплотную приблизились к запуску нашего нового проекта, поэтому хотели бы поблагодарить Сотбит за отличное решение.
Резюмируя, расскажу о плюсах и минусах.
Минусы:
- Относительно сложно настроить парсер без помощи людям, не имеющими представления о том, как это работает.
- Провозиться с настройкой можно дольше, чем вы планировали.
Плюсы:
- Решение реально работает
- Невысокая цена за экономию сил и средств
- Отличная техподдержка - быстро отвечают, реально заинтересованы помочь. Спасибо специалисту техподдержки Игорю Ковальчуку: крайне редко сегодня можно встретить людей, настолько фанатично отдающихся работе. Был бы его начальником, выписал бы премию.

Три месяца возни, проблема не решена до сих пор

После покупки модуля сайт начал стремительный рост в размерах (пришлось в несколько раз увеличить характеристики сервера) в результате чего, через некоторое время отвалилась система резервного копирования и рухнула база данных, это доставило немало проблем, три дня наш программист восстанавливал сайт. На данный момент около 30 гб размер директории сайта - это очень много. бекапить такой размер нереально в автоматическом режиме каждую ночь. и 30 гб - это без учета локальных бекапов, которые лежат в директории сайта, а вместе с ними 56 гб. Причина такого роста оказалась в том, что парсер ежедневно добавлял дубли изображений в папку upload и она разрослась до невероятных размеров (хотя все парсеры, которые у нас работали в автоматическом режиме, настроены на обновление цен и наличия от поставщика, картинки они не должны были трогать вообще). Соответственно встал вопрос очистки папки от дублей изображений, до сих пор проблема не решена, После высказанных мной намерений написать отзыв, сотрудник тех. поддержки обещал связаться по телефону в 10:30 (в какой день не уточнил, прошло уже 4 дня) ни ответа ни привета.
Моё обращение № 9169 создано 29.11.2018 г., напомню что сегодня 21.02.2019 г.

Здравствуйте, Александр! Спасибо за отзыв.

Как Вы знаете, Ваша проблема решена еще несколько месяцев назад на тестовом сайте. Осталось только перенести все изменения на Ваш рабочий сервер. Но, к сожалению, Вы до сих пор не предоставили нам доступ к нему. Именно с этим связано то, что мы только сейчас, спустя несколько месяцев, отвечаем на Ваш отзыв.

Очень надеемся, что Вы все же предоставите нам доступы к серверу, чтобы мы Ваш вопрос окончательно закрыли. И тогда Вы сможете с удовольствием исправить свой отрицательный отзыв на положительный.

Александр, ждем от Вас обратной связи!

(PECL yaml >= 0.4.0)

yaml_parse — Разбирает поток YAML

Описание

yaml_parse (string $input [, int $pos = 0 [, int &$ndocs [, array $callbacks = NULL ]]]) : mixed

Конвертирует весь поток YAML или его часть и записывает в переменную.

Список параметров

Строка для парсинга как поток YAML.

Документ для разбора (-1 для всех документов, 0 для первого документа, ...).

Если ndocs найден, тогда он будет заменен на количество документов в потоке YAML.

Возвращаемые значения

Возвращает значение, закодированое в input , в соответствующем типе PHP или FALSE в случае возникновения ошибки. Если параметр pos равен -1 , будет возвращен массив, содержащий по одной записи для каждого документа, найденого в потоке.

Примеры

Пример #1 Пример использования yaml_parse()

$yaml = <<---
invoice: 34843
date: "2001-01-23"
bill-to: &id001
given: Chris
family: Dumars
address:
lines: |-
458 Walkman Dr.
Suite #292
city: Royal Oak
state: MI
postal: 48046
site: zxibit.esy.es
ship-to: *id001
product:
- sku: BL394D
quantity: 4
description: Basketball
price: 450
- sku: BL4438H
quantity: 1
description: Super Hoop
price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
EOD;

$parsed = yaml_parse ($yaml );
var_dump ($parsed );
?>

Результатом выполнения данного примера будет что-то подобное:

array(8) { ["invoice"]=> int(34843) ["date"]=> string(10) "2001-01-23" ["bill-to"]=> &array(3) { ["given"]=> string(5) "Chris" ["family"]=> string(6) "Dumars" ["address"]=> array(4) { ["lines"]=> string(34) "458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) "MI" ["postal"]=> int(48046) } } ["ship-to"]=> &array(3) { ["given"]=> string(5) "Chris" ["family"]=> string(6) "Dumars" ["address"]=> array(4) { ["lines"]=> string(34) "458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) "MI" ["postal"]=> int(48046) } } ["product"]=> array(2) { => array(4) { ["sku"]=> string(6) "BL394D" ["quantity"]=> int(4) ["description"]=> string(10) "Basketball" ["price"]=> int(450) } => array(4) { ["sku"]=> string(7) "BL4438H" ["quantity"]=> int(1) ["description"]=> string(10) "Super Hoop" ["price"]=> int(2392) } } ["tax"]=> float(251.42) ["total"]=> float(4443.52) ["comments"]=> string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338." }

  1. Введение. Краткое описание технологии парсинга Яндекс XML. Варианты применения: импорт из других движков магазнов + создание магазинов (или товарных разделов) для заработка на партнерках.
  1. Решение ПЕРВОЙ задачи: автоматизированная переливка товаров со старого магазина на новый
  2. Установка тестового магазина, своими силами
  3. Открытие хостинга (бесплатный период) для установки магазина
  • Установка магазина инсталлятором
  • Вход в админку установленного магазина и первые действия по активации магазина
    1. Очистка тестового магазина от демо-контента: удаление записей, рубрик, тегов, страниц, слайдов, баннеров, меню
    1. Установка плагина парсера через админку плагинов
    2. Создание проекта для парсинга
    3. Краткий обзор, что такое Яндекс XML формат
    4. Заполнение данных проекта, запуск анализа YML-источника
    5. Запуск импорта
    6. Пояснение отличия бесплатной версии парсера (с лимитом на 100 товаров) от платной (безлимитной)
    7. Обзор результатов парсинга, внимание на совершенную ошибку
    8. Откат импорта: удаление импортированного контента, проверка что все удалено.
    9. Повторный импорт, обзор результатов: рубрики, записи.
    10. Обзор импортированной записи в админке: название, описание, цена товара, миниатюра
    11. Обзор перенесенных товаров на фронтенде сайта: архив рубрики товаров, страничка 1 товара
    1. Создание главной страницы тестового магазина, с витриной. Тестовый магазин готов! Прототип магазина, на основе Вашего товара со старого магазина, можно тестировать.
    1. Услуга переноса контента со старого магазина на новый, с помощью студии WP Shop
    2. Краткое описание услуги
    3. Очистка тестового магазина для импорта образца файла, который клиент получает после оказания услуги
    4. Импорт образца файла, встроенным импортером ВордПресс
    5. Обзор результатов импорта
    6. Дополнительные сведения об услуге. Решим любые сложности.
    1. Решение ВТОРОЙ задачи: создание псевдо-магазина (или раздела с товарами) для продажи товаров других интернет-магазинов
    2. Общий обзор ситуаций, когда есть желание или необходимость поставить партнерский товар на свой сайт или магазин.
    3. Основная сложность — автоматизация процесса переноса товаров и периодического обновления ассортимента. Плагин решает все эти проблемы
    1. Практический кейс: ставим партнерский товар на свой магазин
    2. Одно из преимуществ тем от студии WP Shop: замена действия по клику на кнопку «купить» в случае указания партнерской ссылки
    3. ОБЯЗАТЕЛЬНЫЙ БЕКАП перед импортом сторонних товаров парсером
    4. Установка парсера, пояснения отличия бесплатного парсера от платного. Демонстрация возможностей парсера на платной версии
    1. Редактирование шаблона парсинга для добавления партнерских ссылок
    2. Обзор редактора шаблонов парсинга: зона для контента записи, зона для дополнительных полей
    3. Составление партнерской ссылки в редакторе шаблона парсинга
    4. Запуск парсинга, обзор результатов: новые рубрики, новые товары. Обзор нового товара.
    5. Демонстрация логики события по клику на кнопку «купить» — посетитель переходит на сайт магазина-поставщика.
    1. Обновление данных и синхронизация ассортимента с магазином-источником
    2. Обновления при изменении цен, ассортимента на магазине-источнике. Автоматизация экономит огромное количество времени и сил!
    3. Реакция на изменение цен, пример обновления, обзор результата
    1. Реакция на удаление товаров из источника: пример обновления, просмотр результатов. Товар не удаляется а становится в режим «нет в продаже»
    1. Реакция на добавление товаров в источнике: пример обновления, просмотр результатов
    1. Обновление товаров автоматически по расписанию: через крон сервера.
    2. Обзор урла для обновления …/wp-admin/tools.php?iy-ajax&iy-project-id=1 &iy-project-action=update
    3. Настройка крона на хостинге ХостЛенд: синтаксис команды на запуск и настройка периодичности запуска
    1. Результаты срабатывания задания из крона: просмотр результатов
    1. Импорт товаров из трех разных источников
    2. Копирование шаблона из предыдущего проекта
    3. Изменяем структуру партнерской ссылки
    4. Запуск мпорта товаров из второго магазина. Обзор источника XML второго магазина. Просмотр результатов импорта
    1. Пояснения по импорту из полей «param» — они автоматически пишутся в произвольные поля
    1. Обзор результатов импорта из второго магазина
    2. Обзор логики вывода «связанных товаров» в товарной записи
    1. Импорт из третьего магазина
    2. Обзор особенностей XML-фида из партнерского агрегатора Mixmarket.biz для настройки его парсинга
    3. Редактирование шаблона импорта под третий магазин
    4. Запуск импорта
    5. Обзор результатов
    1. Исправление ошибок, выявленных после парсинга
    2. Удаление импортированного контета
    3. Изменение партнерской ссылки, удаление лишнего параметра
    4. ВАЖНАЯ информация по теме риска писсимизации поисковиками в связи с прямым переносом контента с других сайтов: нужно закрывать перенесенный контент NOINDEX и NOFOLLOW!
    5. Пояснения, зачем нужно закрывать импортированные товары от индексации на своем сайте
    6. Пояснение, как сделать страницу из чужих товаров, повысив уровень оригинальности, за счет «замешивания» между собой товаров из разных партнерок, а так же статей и прочего
    7. Пояснение, как технически исключить запись импортированного товара из индексации, через мета-тег «robots» и плагине Platinum SEO
    8. Исправляем шаблон импорта для того чтобы прописать всем импортированным товарам запрет на индексацию поисковиками
    9. Запуск импорта, просмотр результата. Убеждаемся что все импортированные записи защищены от индексации. Риск писсимизации за плагиат уменьшен (снят).
    1. Заключение. Парсер от WP Shop — удобный инструмент для «манимейкеров». Команда WP Shop поддержит всех, но в приоритете те пользователи, которые пользуются платными продуктами или услугами, либо .
    2. Пример парсинга массива на 14000 товаров, на «мощном» севрере. Тем кто хочет заниматься парсингом в «промышленных масштабах» — дополнтельные услуги: установка и конфигурация серверов и персональные доработки парсера.