Приложение "Yandex.Realty Parser": различия между версиями

Материал из CMS Sitebill Wiki
Перейти к навигации Перейти к поиску
 
(не показаны 23 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
Приложение для реализации импорта объявлений на сайт из фидов составленных по формату Яндекс.Недвижимость<br />
 
Приложение для реализации импорта объявлений на сайт из фидов составленных по формату Яндекс.Недвижимость<br />
  
== Требования ==  
+
== Установка ==  
  
Приложение требует дополнения модели полем url (тип safe_string) для хранения признака идентичности, если не используется настройка '''apps.yandexrealty_parser.use_internalids''', предписывающая сличать объекты по внешнему ID
+
Распакуйте архив и загрузите в корень сайта, так чтобы /cron.php лежал в корне, а /apps/yandexrealty_parser/yandexrealty_parser.xml лежал именно по этому пути.</br>
 +
После этого обязательно зайдите в обновления и обновите приложение yandexrealty_parser.<br>
 +
Теперь зайдите в редактор форм и в таблице user_by_domain нажмите создать "Обработчик по-умолчанию" это иконка со звездочкой справа от названия таблицы.<br>
 +
Введите название обработчика "Источники парсинга XML".<br>
 +
После сохранения у вас в админке справа сверху должен появиться в меню Пользовательские пункт Источники парсинга XML.<br>
 +
Зайдите в этот пункт меню и можете добавить новую запись. Выберите пользователя и адрес URL для xml данных, например http://другойсайт.ru/yandex.xml<br>
 +
Также необходимо зайти в настройки во вкладку Yandex.Realty Parser установите (apps.yandexrealty_parser.use_image_cache) = 1 и (apps.yandexrealty_parser.create_yandex_category_structure) = 1<br>
 +
Теперь можно запустить парсинг объектов запустив в браузере http://вашсайт/cron.php - первый запуск загурзит только текстовые данные, после загрузки необходимо зайти в Приложения - Seo- оптимизация и нажмите там Обновить структуру.<br>
 +
Для загрузки картинок необходимо запустить: http://вашсайт/cron.php?parse_images=1 - при каждом запуске по-умолчанию идет парсинг 10 объявлений.<br>
 +
ВНИМАНИЕ!!! Рекомендуется запускать парсинг сначала на тестовом сайте, так как эта операция загуржает в базе большое количество данных, в некоторых xml их может быть больше 10 тыс.<br>
 +
<br>
 +
Можно добавить задачи в планировщик, чтобы они автоматически запускались <br>
 +
Например, строчка запуска парсинга XML раз в 30 минут<br>
 +
  */30 * * * * /usr/bin/wget -O /dev/null -q http://вашсайт/cron.php
 +
Пример запуска парсинга картинок раз в 5 минут<br>
 +
  */5 * * * * /usr/bin/wget -O /dev/null -q http://вашсайт/cron.php?parse_images=1
  
== Парсинг географии ==
 
  
При парсинге разбираются следующие параметры расположения - страна, регион, район области, город, район города, улица, номер дома.<br />
+
== Требования ==
  
Географические значения размещаются в базе двумя способами - несвязанным, когда каждый параметр географии не содержит ссылки на своего родителя и это же отсуствие связи соблюдается в данных объявления, и связанном - когда для размещения каждого следующего значения географии необходимо найти соотвествующий или разместить параметр с предыдущего уровня.<br />
+
Приложение требует дополнения модели полем url (тип safe_string) для хранения признака идентичности, если не используется настройка '''apps.yandexrealty_parser.use_internalids''', предписывающая сличать объекты по внешнему ID<br />
  
В связанном режиме загрузки могут учитываться стандартные связи в модели объявления или, при включенной настройке apps.realty_off_system_ajax, пользовательские связи. Основными выступают связи указанные в модели объявления. Если в модели объявления у Вас указана зависимость улицы от города, а в модели улицы будет указана ее зависимость от района, то при парсинге будет учитываться именно первый вариант, но не второй.<br />
+
== Сличение объектов ==
  
При связанном режиме '''НЕ БУДУТ ДОБАВЛЯТЬСЯ''' те географические уровни, для которых не удалось определить родительский объект, если он требуется. Например, если в выгрузке пропущено указание региона, а указаны только страна и город, но в модели объявления указаны связи вида Страна - Регион - Город, то для загружаемого объявления будет указана только страна, так как определить и добавить город не будет возможности из-за отсуствия промежуточного звена Регион.<br />
+
Объекты в фиде и объекты на сайте проходят сличение для того, что бы определить какие объекты являются аналогичными в фиде и в сайте и подлежат обновлению, а какие являются новыми и требуют вставки. Сличение может проводиться либо по полю модели объекта data с именем url, в котором хранится урл объявления из xml-фида, либо по идентификатору объекта в БД, который может соответствовать аналогичному в xml-фиде.<br />
  
По умолчанию используется режим несвязанного добавления географии.<br />
+
Переключение между этими двумя режимами выполняется настройкой '''Использовать internal-id в качестве ID (apps.yandexrealty_parser.use_internalids)'''. При ее включении объекты будут добавляться в сайт с идентификаторами равными идентификаторам объектов в xml-фиде.<br />
  
=== Несвязанный режим ===
+
== Перелинковка категорий ==  
 +
Для активации этого режима включите две опции в Настройках
 +
  Использовать переключатель активности для категорий (use_topic_publish_status)
 +
и
 +
  Включить переадресацию категорий (use_topic_linker)
  
География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта без учета связок с другими уровнями. Поиск подходящего существующего объекта географии производится по текстовому названию. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня.
 
  
== Логгирование ==
+
При парсинге будет создаваться структура яндексовая в структуре.<br />
 +
Сейчас создался раздел Аренда.<br />
 +
Их можно выключить если в редактировании раздела убрать галочку Раздел активен и тогда раздел будет отмечен оранжевым, т.е. он будет виден в админке но не будет виден на сайте и при добавлении объектов его не будет видно.<br />
 +
Чтобы перекидывать объекты из этого нового раздела в существующий в структуре есть кнопка Переадресация категорий.<br />
 +
Там можно в средней колонке выбирать куда перенаправлять объявления (выпадающий список и сохранить потом).<br />
 +
Часто бывает так, что в одном разделе собирается куча объектов по разным количествам комнат.<br />
 +
Например, раздел Аренда – Жилая – Квартира и в него будут приходить все квартиры не зависимо от количества комнат.<br />
 +
Если вам нужно разделить на своем сайте количество комнат в каждый отдельный раздел, тогда нужно заполнять поле system.PARAMS<br />
 +
Туда нужно вписывать идентификатор категории и признак указывающий на количество комнат.<br />
 +
Например, <br />
 +
    {"23":[{"number":1}],"24":[{"number":2}],"25":[{"number":3}],"26":[{"number":4}]}<br />
 +
В этом правиле следующая логика<br />
 +
''Объекты с количеством комнат 1 будут перекидываться в раздел с идентификатором 23<br />
 +
Объекты с количеством комнат 2 будут перекидываться в раздел с идентификатором 24<br />
 +
Объекты с количеством комнат 3 будут перекидываться в раздел с идентификатором 25<br />
 +
Объекты с количеством комнат 4 и более будут перекидываться в раздел с идентификатором 26<br />
 +
''<br />
 +
Для того чтобы учитывался параметр new_flat (новостройка), можно расширить условия так<br />
 +
    {"23":[{"number":1},{"new_flat":0}],"24":[{"number":2},{"new_flat":0}],"25":[{"number":3},{"new_flat":0}],"26":[{"number":4},{"new_flat":0}],"33":[{"number":1},{"new_flat":1}],"34":[{"number":2},{"new_flat":1}],"35":[{"number":3},{"new_flat":1}],"36":[{"number":4},{"new_flat":1}]}<br />
  
Приложение ведет запись логов эскпорта в файлы<br/>
+
Подробнее про перелинковку можно узнать на форуме https://www.sitebill.ru/s/topic/2723-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D0%BE%D0%B1%D1%8A%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B8%D0%B7-%D0%B0%D0%B2%D0%B8%D1%82%D0%BE/?page=2<br /><br />
/cache/cianexporter_flatssell.last.log.xml - по продаже квартир<br/>
 
/cache/cianexporter_flatsrent.last.log.xml - по аренде квартир<br/>
 
/cache/cianexporter_lots.last.log.xml - по земельным участкам<br/>
 
/cache/cianexporter_nonresidential.last.log.xml - по зарубежной<br/>
 
  
 +
== Парсинг географии ==
  
Настройка экспорт
+
При парсинге разбираются следующие параметры расположения - страна, регион, район области, город, район города, улица, номер дома.<br />
  
Перед экспортом каждому разделу структуры каталога необходимо проассоциировать верный тип недвижимости. Делается это через административную часть приложение в разделе "Установка ассоциаций"
+
Географические значения размещаются в базе двумя способами - несвязанным, когда каждый параметр географии не содержит ссылки на своего родителя и это же отсуствие связи соблюдается в данных объявления, и связанном - когда для размещения каждого следующего значения географии необходимо найти соотвествующий или разместить параметр с предыдущего уровня.<br />
  
== Отправка данных в CIAN.ru ==
+
В связанном режиме загрузки могут учитываться стандартные связи в модели объявления или, при включенной настройке apps.realty_off_system_ajax, пользовательские связи. Основными выступают связи указанные в модели объявления. Если в модели объявления у Вас указана зависимость улицы от города, а в модели улицы будет указана ее зависимость от района, то при парсинге будет учитываться именно первый вариант, но не второй.<br />
  
Перед отправкой данных вам нужно проверить источник ваших данных с помощью специального валидатора http://www.cian.ru/nd/validator/<br/>
+
При связанном режиме '''НЕ БУДУТ ДОБАВЛЯТЬСЯ''' те географические уровни, для которых не удалось определить родительский объект, если он требуется. Например, если в выгрузке пропущено указание региона, а указаны только страна и город, но в модели объявления указаны связи вида Страна - Регион - Город, то для загружаемого объявления будет указана только страна, так как определить и добавить город не будет возможности из-за отсуствия промежуточного звена Регион.<br />
  
Нужно проверить каждый тип выгрузки<br/>
+
По умолчанию используется режим несвязанного добавления географии.<br />
  
Аренда квартир и комнат http://ваш_сайт/cianexport/rent/<br/>
+
=== Несвязанный режим ===
Продажа квартир и комнат http://ваш_сайт/cianexport/sell/<br/>
 
Аренда и продажа нежилых помещений http://ваш_сайт/cianexport/commerce/<br/>
 
Аренда и продажа домов и земельных участков http://ваш_сайт/cianexport/lots/<br/>
 
  
Если будут ошибки при валидации, то вам нужно поправить соответствующие данные в объявлениях и заново проверить источник.<br/>
+
Используется при выключенной настройке apps.yandexrealty_parser.connected_geo<br />
После этого вы можете написать в службу тех.поддержки '''import@cian.ru''', указать свой ID в личном кабинете cian.ru и адреса источников данных. <br><br><br>
 
  
Пример письма:
+
География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта без учета связок с другими уровнями. Поиск подходящего существующего объекта географии производится по текстовому названию. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня.<br />
Прошу добавить выгрузку объявлений в формате XML<br>
 
ID аккаунта 1111111 <br>
 
Аренда квартир и комнат http://ваш_сайт/cianexport/rent/<br/>
 
Продажа квартир и комнат http://ваш_сайт/cianexport/sell/<br/>
 
Аренда и продажа нежилых помещений http://ваш_сайт/cianexport/commerce/<br/>
 
Аренда и продажа домов и земельных участков http://ваш_сайт/cianexport/lots/<br/>
 
Отчеты отправлять сюда, пожалуйста<br>
 
my@site.ru и manager@site.ru<br>
 
  
=== ВАЖНОЕ ЗАМЕЧАНИЕ!  ===
+
Определяются названия страны, региона, города, района города, улицы и номер дома. Определенные значения размещаются в поля модели объекта: country_id, region_id, city_id, district_id, street_id, number. Изменить поля-приемщики данных нельзя.
У вас должен быть активировать тариф "Профессионал" в cian.ru, для того чтобы вашу выгрузку начали принимать.
 
  
== Настройки ==
+
=== Стандартный связанный режим ===
  
'''apps.cianexporter.text''' ''(Заменитель текста объявления)'' - укажите текст, который будет выводиться в выгрузке в поле описания<br />
+
Используется при включенной настройке apps.yandexrealty_parser.connected_geo и выключенной apps.realty.off_system_ajax<br />
  
'''apps.cianexporter.paid_ads''' ''(Платная выгрузка объявлений)'' - использовать приложение Биллинг для снятия сумм за выгрузку объявления со счета пользователя<br />
+
География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта с учетом связок с другими уровнями обусловленными настройками:
  
'''apps.cianexporter.sell''' ''(Поле:Значение отвечающие за признак продажи)'' - укажите системное имя поля и значение соответствующие продаже. Напр. optype:2<br />
+
<pre>
 +
Ajax - обновление региона (apps.realty.ajax_region_refresh)
 +
Ajax - обновление города (apps.realty.ajax_city_refresh)
 +
Ajax - обновление района (apps.realty.ajax_district_refresh)
 +
Ajax - обновление метро (apps.realty.ajax_metro_refresh)
 +
Ajax - обновление улицы (apps.realty.ajax_street_refresh)
 +
link_metro_to_district
 +
link_street_to_city
 +
</pre>
  
'''apps.cianexporter.rent''' ''(Поле:Значение отвечающие за признак аренды)'' - укажите системное имя поля и значение соответствующие аренде. Напр. optype:1<br />
+
Поиск подходящего существующего объекта географии производится по текстовому названию с учетом привязки к родительскому уровню. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня с соотвествующей привязкой к родительскому уровню.<br />
  
'''apps.cianexporter.region_id''' ''(ID административного региона, если известен)'' - укажите cian-идентификатор региона, если регион выгружаемых объявлений единый<br />
+
Например, если на парсинг пришел объект с названием региона "Тверская область" и названием города "Тверь", то в списке существующих городов будет выполнен поиск региона с именем "Тверская область", а потом поиск города с именем "Тверь", который имеет привязку к найденому ранее региону. Если город не будет найден, но вставка его не запрещена, то такой город будет добавлен в список городов и присвоен данным объекта. Если же не будет найден такой регион, и возможности вставки его не будет, то ни регион, ни город не будут добавлены, а в объекте поля, отвечающие за регион и город не будут проинициализированы.
  
'''apps.cianexporter.default_currency''' ''(Код валюты цен (EUR/USD/RUB) для моновалютных сайтов)'' - укажите кода валюты цен объявлений на сайте<br />
+
Определяются названия страны, региона, города, района города, улицы и номер дома. Определенные значения размещаются в поля модели объекта: country_id, region_id, city_id, district_id, street_id, number. Изменить поля-приемщики данных нельзя.<br />
  
'''apps.cianexporter.default_saletype''' ''(Тип продажи по умолчанию (F – свободная продажа, A – альтернатива))'' - укажите тип продажи для всех объявлений по продаже<br />
+
Так как формат ЯН допускает "пропадание" частей географической цепочки для городов Москва и СПБ, то разобрать географию таких объектов для сайте, где указана зависимость города от региона не удастся. Для исправления этой ситуации служат две настройки данного приложения:
  
'''apps.cianexporter.max_days''' ''(Возраст в днях выгружаемых объявлений (0 - игнорировать))'' - укажите возраст объявлений, которые будут допущены к выгрузке, в днях.<br />
+
<pre>
 +
ID региона для города Москва (apps.yandexrealty_parser.moscow_region_id)
 +
ID региона для города СПБ (apps.yandexrealty_parser.spb_region_id)
 +
</pre>
  
'''apps.cianexporter.use_days_limitation''' ''(Использовать ограничение доступности выгрузки по дням)'' - включает режим блокировки отдачи выгрузки по определенным дням недели<br />
+
Данные две настройки позволяют указать в числовом виде '''идентификатор региона''' в котором следует искать названия городов для г. Москва и для г. СПБ, так как определить регион из данных XML невозможно. Установка этих значений создает ситуацию, имитирующую случай, что регион удалось определить и цепочка не разорвана. Сам регион, идентификатор которого будет указан в этих настройках, должен быть создан администратором и надлежащим способом связан с соответствующим объектов верхнего уровня.
  
'''apps.cianexporter.lots_days''' ''(Дни доступности выгрузки участков)'' - укажите дни недели доступности выгрузки объявлений "Аренда и продажа
+
=== Пользовательский связанный режим ===
домов и земельных участков" в виде списка чисел от 1 до 7 через запятую (1-понедельник, 7-воскресенье)<br />
 
  
'''apps.cianexporter.commerce_days''' ''(Дни доступности выгрузки коммерческой)'' - укажите дни недели доступности выгрузки объявлений "Аренда и продажа
+
Используется при включенных настройках apps.yandexrealty_parser.connected_geo и apps.realty.off_system_ajax<br />
нежилых помещений" в виде списка чисел от 1 до 7 через запятую (1-понедельник, 7-воскресенье)<br />
 
  
'''apps.cianexporter.sale_days''' ''(Дни доступности выгрузки продажи квартир)'' - укажите дни недели доступности выгрузки объявлений "Продажа
+
География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта с учетом связок с другими уровнями обусловленными параметрами элементов модели объекта linked и depended. Парсер, на основании указанных Вами параметров элементов модели linked и depended, выстроит цепочки зависимостей элементов друг от друга и будет соблюдать их иерархию при вставке.<br />
квартир и комнат" в виде списка чисел от 1 до 7 через запятую (1-понедельник, 7-воскресенье)<br />
 
  
'''apps.cianexporter.rent_days''' ''(Дни доступности выгрузки аренды квартир) - укажите дни недели доступности выгрузки объявлений "Аренда
+
Для этого режима Вам необходимо указать или изменить настройки описывающие имена полей-приемщиков в модели объекта
квартир и комнат" в виде списка чисел от 1 до 7 через запятую (1-понедельник, 7-воскресенье)<br />
 
  
'''apps.cianexporter.use_billing_vipstatus_for_premium''' ''(Использовать VIP статус при включенном биллинге для выгрузки премиум-позиций)'' - включенная настройка предписывает устанавливать для объявления статус premium если используется биллинг и значение VIP-статуса на сайте является активным (эта настройка переопределяется настройкой apps.cianexporter.prom_by_billing)<br />
+
<pre>
 +
Системное имя поля модели для хранения названия страны (apps.yandexrealty_parser.country_field)
 +
Указывает поле-приемщик для имени страны из тега <country> XML-фида
  
'''apps.cianexporter.total_square_flat''' ''(Системное имя общей площади для квартир и комнат)'' - укажите системное имя поля содержащего значение общей площади для квартир и комнат<br />
+
Системное имя поля модели для хранения названия региона (apps.yandexrealty_parser.region_field)
 +
Указывает поле-приемщик для имени региона из тега <region> XML-фида
  
'''apps.cianexporter.total_square_commercial''' ''(Системное имя общей площади для нежилой\коммерческой)'' - укажите системное имя поля содержащего значение общей площади для квартир и комнат<br />
+
Системное имя поля модели для хранения названия района области (apps.yandexrealty_parser.district_field)
 +
Указывает поле-приемщик для имени района области из тега <district> XML-фида
  
'''apps.cianexporter.total_square_houses''' ''(Системное имя общей площади для домов)'' - укажите системное имя поля содержащего значение общей площади для домов<br />
+
Системное имя поля модели для хранения названия города (apps.yandexrealty_parser.locality_field)
 +
Указывает поле-приемщик для имени города из тега <locality-name> XML-фида
  
'''apps.cianexporter.total_square_lots''' ''(Системное имя общей площади для участков)'' - укажите системное имя поля содержащего значение общей площади для участков<br />
+
Системное имя поля модели для хранения названия района города (apps.yandexrealty_parser.sublocality_field)
 +
Указывает поле-приемщик для имени района района города из тега <sub-locality-name> XML-фида
  
'''apps.cianexporter.total_square_lots_m''' ''(Единица измерения общей площади для участков (1-м2, 2-сот))'' - укажите единицу измерения значения общей площади для участков<br />
+
Системное имя поля модели для хранения названия метро (apps.yandexrealty_parser.metro_field)
 +
Указывает поле-приемщик для имени метро из тега <metro> XML-фида
  
'''apps.cianexporter.total_square_lh_lots''' ''(Системное имя общей площади участков для участков с домами)'' - укажите системное имя поля содержащего значение общей площади для участков при экспорте участков с домами<br />
+
Системное имя поля модели для хранения названия улицы (apps.yandexrealty_parser.street_field)
 +
Указывает поле-приемщик для имени улицы из тега <address> XML-фида
 +
</pre>
  
'''apps.cianexporter.total_square_lh_lots_m''' ''(Единица измерения общей площади участков для участков с домами (1-м2, 2-сот))'' - укажите единицу измерения значения общей площади для участков при экспорте участков с домами<br />
+
Поиск подходящего существующего объекта географии производится по текстовому названию с учетом привязки к родительскому уровню. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня с соответствующей привязкой к родительскому уровню.<br />
  
'''apps.cianexporter.total_square_lh_house''' ''(Системное имя общей площади дома для участков с домами)'' - укажите системное имя поля содержащего значение общей площади для дома при экспорте участков с домами<br />
+
Невозможность определить или вставить очередной уровень с зависимостью от его задекларированных родителей приведет к обрыву вставки всех нижеследующих уровней.<br />
  
'''apps.cianexporter.newbuilds_ch''' ''(Системное имя поля-чекбокса для обозначения новостройки)'' - укажите системное имя поля типа checkbox содержащее признак расположения в новостройке<br />
+
Определяются названия страны, региона, района области, города, района города, улицы и номер дома.<br />
  
'''apps.cianexporter.unlim''' ''(Выгружать в ЦИАН все объявления)'' - указывает отправлять на выгрузку все активные объявления без фильтрации по признаку "выгружать в ЦИАН"<br />
+
Так как формат ЯН допускает "пропадание" частей географической цепочки для городов Москва и СПБ, то разобрать географию таких объектов для сайте, где указана зависимость города от региона не удастся. Для исправления этой ситуации служат две настройки данного приложения:
  
'''apps.cianexporter.ceiling_f''' ''(Системное имя поля со значением высоты потолков)'' - укажите системное имя поля содержащего значение высоты потолков<br />
+
<pre>
 +
Привязка начала цепочки для города СПБ (apps.yandexrealty_parser.spb_link)
 +
Привязка начала цепочки для города Москва (apps.yandexrealty_parser.moscow_link)
 +
</pre>
  
'''apps.cianexporter.year_f''' ''(Системное имя поля со значением года постройки здания)'' - укажите системное имя поля содержащего значение года постройки здания<br />
+
Данные две настройки позволяют указать в виде "системное_имя_поля=числовой_идентификатор" точку отсчета для вставки географии.
 +
Например мы имеем город с именем "СПБ" и его ID=12 в нашей базе городов. Этот город расположен в регионе "Северная Россия", который расположен в стране "Россия". А сами города указываются в нашей модели объекта в поле с именем city_id. Так как для Санкт-Петербурга в выгрузке регион не будет передан совсем, мы не сможем вставить эти данные на сайт из-за разрыва в цепочке. Для этого мы можем указать в настройке '''apps.yandexrealty_parser.spb_link''' значение "city_id=12". Это будет означать, что если парсер найдет в данных XML значение <locality-name>Санкт-Петербург</locality-name>, он извлечет из БД всю иерархию уровней выше city_id для объекта географии размещенного под ID=12 и начнет анализ географии из xml уже с этой точки - определит район города, улицу, метро и вставит, при возможности, все это уже относительно объекта географии с city_id=12.
  
'''apps.cianexporter.prom_by_billing''' ''(Устанавливать статусы продвижения в зависимости от статусов биллинга)'' - настройка предписывает определять статусы продвижения объявления на основании статусов биллинга на сайте. По-умолчанию для определения premium в ЦИАН используется значение статуса Премиум, для top - VIP, для highlight - Выделено. Эта настройка отменяет действие настройки apps.cianexporter.use_billing_vipstatus_for_premium. Соответствия значений биллинг-статусов на сайте значениям статусов продвижения в ЦИАН можно изменить, указав системные имена в настройках apps.cianexporter.prom_highlight_mark, apps.cianexporter.prom_premium_mark, apps.cianexporter.prom_top_mark соответствующих значений<br />
+
== Настройки ==
 
 
'''apps.cianexporter.prom_highlight_mark''' ''(Системное имя поля установки выделения цветом)'' - настройка служит для указания значения биллинг-статуса, при включенной настройке apps.cianexporter.prom_by_billing, соответствующего highlight-статусу продвижения ЦИАН. При выключенной настройке apps.cianexporter.prom_by_billing в этом поле можно указать системное имя поля типа checkbox отмеченное значение которого будет означать наличие highlight-статуса ЦИАН<br />
 
 
 
'''apps.cianexporter.prom_premium_mark''' ''(Системное имя поля установки премиум-объявлений)'' - настройка служит для указания значения биллинг-статуса, при включенной настройке apps.cianexporter.prom_by_billing, соответствующего premium-статусу продвижения ЦИАН. При выключенной настройке apps.cianexporter.prom_by_billing в этом поле можно указать системное имя поля типа checkbox отмеченное значение которого будет означать наличие premium-статуса ЦИАН<br />
 
 
 
'''apps.cianexporter.prom_top_mark''' ''(Системное имя поля установки Топ 3 объявлений)'' - настройка служит для указания значения биллинг-статуса, при включенной настройке apps.cianexporter.prom_by_billing, соответствующего top-статусу продвижения ЦИАН. При выключенной настройке apps.cianexporter.prom_by_billing в этом поле можно указать системное имя поля типа checkbox отмеченное значение которого будет означать наличие top-статуса ЦИАН<br />
 
 
 
'''apps.cianexporter.inc_districts_to_locality''' ''(Добавлять район к locality)'' - включение этой настройки позволяет добавить в тег locality содержимое поля district_id в виде имени района области. Данное включение не срабатывает при нахождении объекта в регионах Москва и Санкт-Петербург<br />
 
 
 
=== Логи ===
 
С версии 1.5.0 приложение хранит свои логи в папке cache/ в виде xml-файлов. Файлы логов являются ненакапливаемыми - после каждой выгрузки предыдущий лог заменяется новым.<br />
 
  
Логи выгрузки "Аренда квартир и комнат" хранятся в файле cianexporter_flatsrent.last.log.xml<br />
+
'''apps.yandexrealty_parser.default_activity_status - Статус активности для добавляемых записей'''
 +
:''Тип: чекбокс''
 +
Статус активности для добавляемых записей. В случае, если параметр выбран, записи, добавляемы парсером, будут активны. В противном случае, добавляемы записи будут вставляться в БД в неактивном состоянии.
 +
<br />
 +
''Наследуется MLS Parser''
  
Логи выгрузки "Продажа квартир и комнат" хранятся в файле cianexporter_flatssell.last.log.xml<br />
+
'''apps.yandexrealty_parser.default_user_id - Пользователь по умолчанию'''
 +
:''Тип: число''
 +
ID пользователя по умолчанию. Если 0 или не указано, то ID пользователя для вставляемых парсером записей будет браться из таблицы доменов. Если не 0 (а любое другое числовое значение), то в качестве user_id для позиции будет использоваться это значение и оно будет расцениваться как ID существующего в БД пользователя, но не будет проверяться парсером. Т.е. если в этот параметр будет установлено значение 5, то все записи будут привязаны к пользователю с ID=5, но икоим образом не будет проверен тот факт существует ли на самом деле в БД пользователь с таким ID.
 +
<br />
 +
''Переопределяется параметром '''apps.mlsparser.default_user_id''' MLS Parser''
  
Логи выгрузки "Аренда и продажа нежилых помещений" хранятся в файле cianexporter_nonresidential.last.log.xml<br />
+
'''apps.yandexrealty_parser.allow_create_new_category - Разрешение на создание цепочек категорий'''
 +
:''Тип: чекбокс''
 +
Если этот параметр выбран, то при парсинге буде проводиться анализ категории передаваемого объекта и, при отсутствии подходящей, будет создана соответствующая, куда и будет помещено объявление.
 +
ЯЕсли этот параметр не будет выбран, то, при отсутствии подходящей категории, новая категория создаваться не будет, а объявление будет помещено в категорию с ID из параметра '''apps.yandexrealty_parser.category_for_all'''.
 +
<br />
 +
''Наследуется MLS Parser''
  
Логи выгрузки "Аренда и продажа домов и земельных участков" хранятся в файле cianexporter_lots.last.log.xml
+
'''apps.yandexrealty_parser.category_for_all - Категория по умолчанию'''
 +
:''Тип: число''
 +
Если параметр '''apps.yandexrealty_parser.allow_create_new_category''' не установлен, все вставляемые парсером записи будут ассоциированы с категорией с ID указанным в этом параметре. Реальное существование категории с таким ID проверяться не будет.
 +
<br />
 +
''Наследуется MLS Parser''

Текущая версия на 12:53, 7 июня 2019

Приложение для реализации импорта объявлений на сайт из фидов составленных по формату Яндекс.Недвижимость

Установка

Распакуйте архив и загрузите в корень сайта, так чтобы /cron.php лежал в корне, а /apps/yandexrealty_parser/yandexrealty_parser.xml лежал именно по этому пути.
После этого обязательно зайдите в обновления и обновите приложение yandexrealty_parser.
Теперь зайдите в редактор форм и в таблице user_by_domain нажмите создать "Обработчик по-умолчанию" это иконка со звездочкой справа от названия таблицы.
Введите название обработчика "Источники парсинга XML".
После сохранения у вас в админке справа сверху должен появиться в меню Пользовательские пункт Источники парсинга XML.
Зайдите в этот пункт меню и можете добавить новую запись. Выберите пользователя и адрес URL для xml данных, например http://другойсайт.ru/yandex.xml
Также необходимо зайти в настройки во вкладку Yandex.Realty Parser установите (apps.yandexrealty_parser.use_image_cache) = 1 и (apps.yandexrealty_parser.create_yandex_category_structure) = 1
Теперь можно запустить парсинг объектов запустив в браузере http://вашсайт/cron.php - первый запуск загурзит только текстовые данные, после загрузки необходимо зайти в Приложения - Seo- оптимизация и нажмите там Обновить структуру.
Для загрузки картинок необходимо запустить: http://вашсайт/cron.php?parse_images=1 - при каждом запуске по-умолчанию идет парсинг 10 объявлений.
ВНИМАНИЕ!!! Рекомендуется запускать парсинг сначала на тестовом сайте, так как эта операция загуржает в базе большое количество данных, в некоторых xml их может быть больше 10 тыс.

Можно добавить задачи в планировщик, чтобы они автоматически запускались
Например, строчка запуска парсинга XML раз в 30 минут

  */30 * * * * /usr/bin/wget -O /dev/null -q http://вашсайт/cron.php

Пример запуска парсинга картинок раз в 5 минут

  */5 * * * * /usr/bin/wget -O /dev/null -q http://вашсайт/cron.php?parse_images=1


Требования

Приложение требует дополнения модели полем url (тип safe_string) для хранения признака идентичности, если не используется настройка apps.yandexrealty_parser.use_internalids, предписывающая сличать объекты по внешнему ID

Сличение объектов

Объекты в фиде и объекты на сайте проходят сличение для того, что бы определить какие объекты являются аналогичными в фиде и в сайте и подлежат обновлению, а какие являются новыми и требуют вставки. Сличение может проводиться либо по полю модели объекта data с именем url, в котором хранится урл объявления из xml-фида, либо по идентификатору объекта в БД, который может соответствовать аналогичному в xml-фиде.

Переключение между этими двумя режимами выполняется настройкой Использовать internal-id в качестве ID (apps.yandexrealty_parser.use_internalids). При ее включении объекты будут добавляться в сайт с идентификаторами равными идентификаторам объектов в xml-фиде.

Перелинковка категорий

Для активации этого режима включите две опции в Настройках

  Использовать переключатель активности для категорий (use_topic_publish_status) 

и

  Включить переадресацию категорий (use_topic_linker)


При парсинге будет создаваться структура яндексовая в структуре.
Сейчас создался раздел Аренда.
Их можно выключить если в редактировании раздела убрать галочку Раздел активен и тогда раздел будет отмечен оранжевым, т.е. он будет виден в админке но не будет виден на сайте и при добавлении объектов его не будет видно.
Чтобы перекидывать объекты из этого нового раздела в существующий в структуре есть кнопка Переадресация категорий.
Там можно в средней колонке выбирать куда перенаправлять объявления (выпадающий список и сохранить потом).
Часто бывает так, что в одном разделе собирается куча объектов по разным количествам комнат.
Например, раздел Аренда – Жилая – Квартира и в него будут приходить все квартиры не зависимо от количества комнат.
Если вам нужно разделить на своем сайте количество комнат в каждый отдельный раздел, тогда нужно заполнять поле system.PARAMS
Туда нужно вписывать идентификатор категории и признак указывающий на количество комнат.
Например,

   {"23":[{"number":1}],"24":[{"number":2}],"25":[{"number":3}],"26":[{"number":4}]}

В этом правиле следующая логика
Объекты с количеством комнат 1 будут перекидываться в раздел с идентификатором 23
Объекты с количеством комнат 2 будут перекидываться в раздел с идентификатором 24
Объекты с количеством комнат 3 будут перекидываться в раздел с идентификатором 25
Объекты с количеством комнат 4 и более будут перекидываться в раздел с идентификатором 26

Для того чтобы учитывался параметр new_flat (новостройка), можно расширить условия так

   {"23":[{"number":1},{"new_flat":0}],"24":[{"number":2},{"new_flat":0}],"25":[{"number":3},{"new_flat":0}],"26":[{"number":4},{"new_flat":0}],"33":[{"number":1},{"new_flat":1}],"34":[{"number":2},{"new_flat":1}],"35":[{"number":3},{"new_flat":1}],"36":[{"number":4},{"new_flat":1}]}

Подробнее про перелинковку можно узнать на форуме https://www.sitebill.ru/s/topic/2723-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D0%BE%D0%B1%D1%8A%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B8%D0%B7-%D0%B0%D0%B2%D0%B8%D1%82%D0%BE/?page=2

Парсинг географии

При парсинге разбираются следующие параметры расположения - страна, регион, район области, город, район города, улица, номер дома.

Географические значения размещаются в базе двумя способами - несвязанным, когда каждый параметр географии не содержит ссылки на своего родителя и это же отсуствие связи соблюдается в данных объявления, и связанном - когда для размещения каждого следующего значения географии необходимо найти соотвествующий или разместить параметр с предыдущего уровня.

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

При связанном режиме НЕ БУДУТ ДОБАВЛЯТЬСЯ те географические уровни, для которых не удалось определить родительский объект, если он требуется. Например, если в выгрузке пропущено указание региона, а указаны только страна и город, но в модели объявления указаны связи вида Страна - Регион - Город, то для загружаемого объявления будет указана только страна, так как определить и добавить город не будет возможности из-за отсуствия промежуточного звена Регион.

По умолчанию используется режим несвязанного добавления географии.

Несвязанный режим

Используется при выключенной настройке apps.yandexrealty_parser.connected_geo

География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта без учета связок с другими уровнями. Поиск подходящего существующего объекта географии производится по текстовому названию. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня.

Определяются названия страны, региона, города, района города, улицы и номер дома. Определенные значения размещаются в поля модели объекта: country_id, region_id, city_id, district_id, street_id, number. Изменить поля-приемщики данных нельзя.

Стандартный связанный режим

Используется при включенной настройке apps.yandexrealty_parser.connected_geo и выключенной apps.realty.off_system_ajax

География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта с учетом связок с другими уровнями обусловленными настройками:

Ajax - обновление региона (apps.realty.ajax_region_refresh)
Ajax - обновление города (apps.realty.ajax_city_refresh)
Ajax - обновление района (apps.realty.ajax_district_refresh)
Ajax - обновление метро (apps.realty.ajax_metro_refresh)
Ajax - обновление улицы (apps.realty.ajax_street_refresh)
link_metro_to_district
link_street_to_city

Поиск подходящего существующего объекта географии производится по текстовому названию с учетом привязки к родительскому уровню. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня с соотвествующей привязкой к родительскому уровню.

Например, если на парсинг пришел объект с названием региона "Тверская область" и названием города "Тверь", то в списке существующих городов будет выполнен поиск региона с именем "Тверская область", а потом поиск города с именем "Тверь", который имеет привязку к найденому ранее региону. Если город не будет найден, но вставка его не запрещена, то такой город будет добавлен в список городов и присвоен данным объекта. Если же не будет найден такой регион, и возможности вставки его не будет, то ни регион, ни город не будут добавлены, а в объекте поля, отвечающие за регион и город не будут проинициализированы.

Определяются названия страны, региона, города, района города, улицы и номер дома. Определенные значения размещаются в поля модели объекта: country_id, region_id, city_id, district_id, street_id, number. Изменить поля-приемщики данных нельзя.

Так как формат ЯН допускает "пропадание" частей географической цепочки для городов Москва и СПБ, то разобрать географию таких объектов для сайте, где указана зависимость города от региона не удастся. Для исправления этой ситуации служат две настройки данного приложения:

ID региона для города Москва (apps.yandexrealty_parser.moscow_region_id)
ID региона для города СПБ (apps.yandexrealty_parser.spb_region_id)

Данные две настройки позволяют указать в числовом виде идентификатор региона в котором следует искать названия городов для г. Москва и для г. СПБ, так как определить регион из данных XML невозможно. Установка этих значений создает ситуацию, имитирующую случай, что регион удалось определить и цепочка не разорвана. Сам регион, идентификатор которого будет указан в этих настройках, должен быть создан администратором и надлежащим способом связан с соответствующим объектов верхнего уровня.

Пользовательский связанный режим

Используется при включенных настройках apps.yandexrealty_parser.connected_geo и apps.realty.off_system_ajax

География парсится по уровням. Каждый уровень раскладывается в соотв. таблицу географический сущностей и в соотв. поле в модели объекта с учетом связок с другими уровнями обусловленными параметрами элементов модели объекта linked и depended. Парсер, на основании указанных Вами параметров элементов модели linked и depended, выстроит цепочки зависимостей элементов друг от друга и будет соблюдать их иерархию при вставке.

Для этого режима Вам необходимо указать или изменить настройки описывающие имена полей-приемщиков в модели объекта

Системное имя поля модели для хранения названия страны (apps.yandexrealty_parser.country_field)
Указывает поле-приемщик для имени страны из тега <country> XML-фида

Системное имя поля модели для хранения названия региона (apps.yandexrealty_parser.region_field)
Указывает поле-приемщик для имени региона из тега <region> XML-фида

Системное имя поля модели для хранения названия района области (apps.yandexrealty_parser.district_field)
Указывает поле-приемщик для имени района области из тега <district> XML-фида

Системное имя поля модели для хранения названия города (apps.yandexrealty_parser.locality_field)
Указывает поле-приемщик для имени города из тега <locality-name> XML-фида

Системное имя поля модели для хранения названия района города (apps.yandexrealty_parser.sublocality_field)
Указывает поле-приемщик для имени района района города из тега <sub-locality-name> XML-фида

Системное имя поля модели для хранения названия метро (apps.yandexrealty_parser.metro_field)
Указывает поле-приемщик для имени метро из тега <metro> XML-фида

Системное имя поля модели для хранения названия улицы (apps.yandexrealty_parser.street_field)
Указывает поле-приемщик для имени улицы из тега <address> XML-фида

Поиск подходящего существующего объекта географии производится по текстовому названию с учетом привязки к родительскому уровню. Если поиск не даст результата и вставка данного уровня не запрещена, то будет добавлено новая единица в таблице данного уровня с соответствующей привязкой к родительскому уровню.

Невозможность определить или вставить очередной уровень с зависимостью от его задекларированных родителей приведет к обрыву вставки всех нижеследующих уровней.

Определяются названия страны, региона, района области, города, района города, улицы и номер дома.

Так как формат ЯН допускает "пропадание" частей географической цепочки для городов Москва и СПБ, то разобрать географию таких объектов для сайте, где указана зависимость города от региона не удастся. Для исправления этой ситуации служат две настройки данного приложения:

Привязка начала цепочки для города СПБ (apps.yandexrealty_parser.spb_link)
Привязка начала цепочки для города Москва (apps.yandexrealty_parser.moscow_link)

Данные две настройки позволяют указать в виде "системное_имя_поля=числовой_идентификатор" точку отсчета для вставки географии. Например мы имеем город с именем "СПБ" и его ID=12 в нашей базе городов. Этот город расположен в регионе "Северная Россия", который расположен в стране "Россия". А сами города указываются в нашей модели объекта в поле с именем city_id. Так как для Санкт-Петербурга в выгрузке регион не будет передан совсем, мы не сможем вставить эти данные на сайт из-за разрыва в цепочке. Для этого мы можем указать в настройке apps.yandexrealty_parser.spb_link значение "city_id=12". Это будет означать, что если парсер найдет в данных XML значение <locality-name>Санкт-Петербург</locality-name>, он извлечет из БД всю иерархию уровней выше city_id для объекта географии размещенного под ID=12 и начнет анализ географии из xml уже с этой точки - определит район города, улицу, метро и вставит, при возможности, все это уже относительно объекта географии с city_id=12.

Настройки

apps.yandexrealty_parser.default_activity_status - Статус активности для добавляемых записей

Тип: чекбокс

Статус активности для добавляемых записей. В случае, если параметр выбран, записи, добавляемы парсером, будут активны. В противном случае, добавляемы записи будут вставляться в БД в неактивном состоянии.
Наследуется MLS Parser

apps.yandexrealty_parser.default_user_id - Пользователь по умолчанию

Тип: число

ID пользователя по умолчанию. Если 0 или не указано, то ID пользователя для вставляемых парсером записей будет браться из таблицы доменов. Если не 0 (а любое другое числовое значение), то в качестве user_id для позиции будет использоваться это значение и оно будет расцениваться как ID существующего в БД пользователя, но не будет проверяться парсером. Т.е. если в этот параметр будет установлено значение 5, то все записи будут привязаны к пользователю с ID=5, но икоим образом не будет проверен тот факт существует ли на самом деле в БД пользователь с таким ID.
Переопределяется параметром apps.mlsparser.default_user_id MLS Parser

apps.yandexrealty_parser.allow_create_new_category - Разрешение на создание цепочек категорий

Тип: чекбокс

Если этот параметр выбран, то при парсинге буде проводиться анализ категории передаваемого объекта и, при отсутствии подходящей, будет создана соответствующая, куда и будет помещено объявление. ЯЕсли этот параметр не будет выбран, то, при отсутствии подходящей категории, новая категория создаваться не будет, а объявление будет помещено в категорию с ID из параметра apps.yandexrealty_parser.category_for_all.
Наследуется MLS Parser

apps.yandexrealty_parser.category_for_all - Категория по умолчанию

Тип: число

Если параметр apps.yandexrealty_parser.allow_create_new_category не установлен, все вставляемые парсером записи будут ассоциированы с категорией с ID указанным в этом параметре. Реальное существование категории с таким ID проверяться не будет.
Наследуется MLS Parser