Инструмент для автоматического заполнения элементов. Предназначен для разработчиков.
Это второй опыт написания парсеров, первый был не совсем чтобы удачный (http://dev.1c-bitrix.ru/community/web...log/10003/). Пересмотрел немного логику, и отрефакторил модуль... По поводу профиля для яндекса, полностью отказался от ajax и автоматического поиска товаров (на практике подобная функция оказалась крайне неэффективной и опасной)
Стандартно включает в себя 2 профиля: - universal (универсальный парсер новостей); - yandex (автозаполнение характеристик с Яндекс Маркета)
[spoiler]
1. Устанновка и первоначальная настройка
1.1. Скачиваем модуль из маркетплейса и устанавливаем, ссылка - http://marketplace.1c-bitrix.ru/solut...ife.parser 1.2. После установки производим первоначальные настройки модуля. (Настройки - настройки модулей - Mlife парсер)
2.1. Клацаем на кнопку добавить профиль 2.2. Выбираем инфоблок и категорию (если необходимо) - жмем кнопку применить
2.3. После нажатия автоматически создаются свойства в инфоблоке: - Не обновлять новость [UNIVERSAL_UP] [L] - флаг, при установке которого парсер никогда не станет проверять данный элемент - Ссылка на новость [PARSER_LINK] [S] - поле в которое записывается ссылка на новость, может быть получена втоматически или установлена вручную
2.4. Настройка параметров профиля. Например,
Источник - это данные которые приходят от парсера. По умолчанию содержит 2 ключа - IMAGE - ссылка на изображение (первое изображение найденное в селекторе из настроек) - TEXT - html селектора из анстроек
Вкладка функция позволяет выбрать функцию для обработки данных, добавить свои функции при необходимости можно в класс расположенный /bitrix/modules/mlife.parser/lib/custom/universalfunc.php примеры функций можно посмотреть /bitrix/modules/mlife.parser/lib/functions.php Функция на вход получает ид свойства, ид элемента, текст который возвращает в нее парсер из поля источник, параметры которые указываются на вкладке параметров, и возвращает значение для записи.
CIBlockElement::SetPropertyValuesEx($elementId, $arParams["IBLOCK"], array("33"=><то что вернула функция для данного свойства>));
Параметры парсера, тут все понятно и описано что к чему
2.5. После установки параметров, нажимаем кнопку сохранить и попадаем в список профилей.
2.6. Тут при желании можно запустить парсер, либо добавляем элемент в наш инфоблок и устанавливаем ссылку на новость
после нажатия на кнопку, если настройки корректны и все ок новость заполнится. Останется только ее проверить и сохранить. Если произошли какие либо ошибки - то можно посмотреть лог и узнать что пошло не так или что именно за ошибки возникли! (сервисы - Mlife парсер - лог обработки).
3.2. После нажатия автоматически создаются свойства в инфоблоке: - Не записывать изображения [YA_ACTIVE_IMG] [L] и Не записывать характеристики [YA_ACTIVE_HAR] [L] - флаг, при установке которого парсер никогда не станет проверять данный элемент - Ид товара на Яндекс Маркете [YANDEX_ID] [S] - ид товара или ссылка, автоматическое получение ссылок профиль не поддерживает
3.3. Настройка параметров профиля. Например,
пользовательские функции для кастомизации можно разместить - /bitrix/modules/mlife.parser/lib/custom/yandexfunc.php Поле источник содержит название свойства в таблице параметров товара в яндекс маркете. + дополнительные системные источники: значение TABLE - содержит html представление таблицы, значение Производитель - содержит производителя товара (берется из хлебных крошек, есть группы товаров которые не класифицируются в маркете по производителям)
Пример, более страшной и универсальной настройки
внутри выглядит так,
в маркете
в табличке обратите внимание на параметры с картами памяти, 3g, wifi, объемами памяти (кажется совсем невозможные штуки, теперь можно делая даже не модифицировав модуль).
3.4. Запуск парсера, лдогирование и т.п. происходит аналогично с универсальным парсером (см. пункт 2)
3.5. Ну и в случае блокировки ип адреса или подозрение на то что вы не человек яндексом, - вас ждет сюрприз!
Возможно ответ на ваш вопрос уже есть тут: - Зачем изобретать велосипеды, ведь в маркете уже есть модули с таким функционалом? Модули есть, но они не содержат необходимого функционала (по части гибкого управления обработкой контента, также они создают пачку свойст, что например, сразу отметает использование инфоблоков 2.0. (так как это крайне не эфеективно с 100+ свойствами, а иногда и вовсе невозможно ограничениями в бд)). - Почему бесплатный? Все просто нету денег на тестеров и собственное образование, поэтому необходимый фидбек и опыт будет собираться таким вот наглым образом. ну если взять финансовую состовляющую, от продаж мне достанется ровно столько же сколько и от бесплатного модуля = 0р. А модуль написан в свое личное время. - Возможно ли использовать модуль в своих платных/бесплатных типовых решениях, и возможна ли автоматически загрузить профили при установке решения? Использование модуля в типовых решениях только приветствуется, автоматическая запись через апи также возможна (пишите в лс, объясню что к чему). - Возможен ли запуск на агентах? Подобный сценарий рассматривался при проектировании модуля, но пока не поддерживается, необходимая логика заложена пока частично. - Возможно ли создание своих парсеров без модификации модуля? Да подобная штука возможна и заложена на этапе проектирования, но разобраться в говнокоде будет довольно сложно. Но если ктото рискнет попробовать, пишите в лс или комментами в пост помогу. Также не исключена возможность доработки на платной основе.
P.S. Все кто попробовал модуль, не забываем оставить свой негативный отзыв в карточке решения в маркетплейсе.
Здравствуйте, Андрей! Это первый компонент, который я устанавливаю на битриксе. Тем не менее у меня все полетело без особых проблем. Не получилось парсить фотографии с маркета - выдает ошибку. Буду смотреть в чем может быть дело, попробую разобраться. В общем, спасибо за компонент! Видно, что работа проделана серьезная. Обязательно сообщу о всех найденных ошибках, и оставлю свой негативный отзыв.
Рамазанов Нариман, ошибка по поводу урлов картинок есть в профиле маркета... там убрали http перед адресом - и возникает ошибка... Постараюсь профиксировать в ближайшее время
Спасибо, с фотографиями помогло if (substr($image_src, 0, 2) === '//') {$image_src = 'http:'.$image_src;} вначале loadProductImage. Столкнулся с другой проблемой - ограничение на длину конфига парсера в базе в 12000 символов. При большом количестве свойств этого недостаточно, конфиг ломается.
Рамазанов Нариман, даже както не думал что это ограничение будет срабатывать... Ну можно в базе поменять - проверки не должно быть в модуле на эту длинну...
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».