Игорь Буг 0 Жалоба Опубликовано: March 27, 2015 Прошу помочь с выгрузкой. Имеем 2 региона: Санкт-Петербург (здесь всего 1 нас. пункт - Санкт-Петербург) и Ленинградская область (соответственно здесь все остальные). При выгрузке Санкт-Петербург в регионе указывать не обязательно, в остальных случаях должна быть область.Сейчас при выгрузке вместо региона могу получить только сточку <region/> или если явно указать на Лен. область, то только ее.Как бы навести в этом логичный порядок? Желательно, чтобы он при обновлениях не исчезал.Спасибо!$rs.='<country>'.($data_item['country']=='' ? 'Россия' : self::symbolsClear($data_item['country'])).'</country>'."\n"; $rs.='<region>'.($data_item['region']=='' ? 'Ленинградская область' : self::symbolsClear($data_item['region'])).'</region>'."\n"; if($data_item['district_lo']!=''){ $rs.='<district>'.self::symbolsClear($data_item['district_lo']).'</district>'."\n"; } /* if($ref_city[$db->row['city_id']]!='Санкт-Петербург'){ $rs.='<region>'.self::symbolsClear($data_item['region']).'</region>'."\n"; } */ if($data_item['city']!=''){ $rs.='<locality-name>'.self::symbolsClear($data_item['city']).'</locality-name>'."\n"; } if($data_item['district']!=''){ $rs.='<sub-locality-name>'.self::symbolsClear($data_item['district']).'</sub-locality-name>'."\n"; } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: March 27, 2015 1. Обновляемся до свежей версии.2. Берем файл /apps/yandexrealty/site/site.php и копируем его в /template/frontend/шаблон/apps/yandexrealty/site/local_site.php3. Строкуclass yandexrealty_site extends yandexrealty_admin {меняем наclass local_yandexrealty_site extends yandexrealty_site {4. Удаляем все функции кроме protected function exLocation($data_item) Теперь мы локализировались и обновления не затрут наши изменения. 5. В кусочке, где у нас обрабатывается регионif(isset($data_item['region']) && $data_item['region']!=''){$rs.='<region>'.$data_item['region'].'</region>'."\n";}делаем заменуif($data_item['region_id']=='ид_региона_СПБ'){}else{$rs.='<region>Ленинградская область</region>'."\n";}т.е. если поймали идешку региона куда входит только СПБ - игнорим тег region, не поймали - рисуем Ленобл. 6. В настройках приложения Выгрузка ЯНедвижимость прописываем алиас под выгрузку, например yrealty. Это нужно для того, что бы отстыковать стандартный выгрузчик и дать возможность запуститься нашему с правками.7. Сообщаем в соотв. инстанцию новую ссылку на нашу выгрузку - http://сайт/yrealty Попробуйте и расскажите, что получится. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Игорь Буг 0 Жалоба Опубликовано: March 27, 2015 получилось такое:Ошибка синтаксического анализа XML: лишние данные после элемента документаАдрес: http://#####.ru/yarealty/Строка 1, символ 190:<?xml version="1.0" encoding="utf-8" ?><realty-feed xmlns="http://webmaster.yandex.ru/schemas/feed/realty/2010-06"><generation-date>2015-03-27T20:26:34+03:00</generation-date></realty-feed>Array---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^в новом файле так: <?phpdefined('SITEBILL_DOCUMENT_ROOT') or die('Restricted access');/** * yandexrealty export generator frontend * @author Abushyk Kostyantyn <abushyk@gmail.com> http://www.sitebill.ru */class local_yandexrealty_site extends yandexrealty_site { protected function exLocation($data_item){ $rs='<location>'."\n"; $cntr=self::symbolsClear($data_item['country']); if($cntr==''){ $this->errors[]=$data_item['id'].' DECLINED: Country unknown'; } $rs.='<country>'.$cntr.'</country>'."\n"; if($data_item['region_id']=='Санкт-Петербург'){ }else{ $rs.='<region>Ленинградская область</region>'."\n"; } if($data_item['city']!=''){ $rs.='<locality-name>'.self::symbolsClear($data_item['city']).'</locality-name>'."\n"; } if($data_item['district']!=''){ $rs.='<sub-locality-name>'.self::symbolsClear($data_item['district']).'</sub-locality-name>'."\n"; } $rs.='<address>'; $street = str_replace('шос.', 'шоссе', $data_item['street']); $street = str_replace('ул.', 'улица', $street); $street = str_replace('пр.', 'проспект', $street); $street = str_replace('наб.', 'набережная', $street); $street = str_replace('бул.', 'бульвар', $street); $street = str_replace('пер.', 'переулок', $street); $street = str_replace('свх.', 'совхоз', $street); $street = str_replace('прд.', 'проезд', $street); $street = str_replace('дер.', 'деревня', $street); $street = str_replace('пос.', 'поселок', $street); $street = str_replace('ст.', 'станция', $street); $street = str_replace('сад-во', 'садоводство', $street); $street = str_replace('пгт.', 'поселок', $street); $street = str_replace('алл.', 'аллея', $street); $street = str_replace('пл.', 'площадь', $street); $street = str_replace('мкр.', 'микрорайон', $street); $rs.= $street; if($data_item['number']!=''){ $rs.=', '.self::symbolsClear($data_item['number']); } $rs.='</address>'."\n"; if($data_item['metro']!=''){ $rs.='<metro>'."\n"; $rs.='<name>'.self::symbolsClear($data_item['metro']).'</name>'."\n"; if(isset($data_item['time_on_transport']) && (int)$data_item['time_on_transport']!=0){ $rs.='<time-on-transport>'.(int)$data_item['time_on_transport'].'</time-on-transport>'."\n"; } if(isset($data_item['time_on_foot']) && (int)$data_item['time_on_foot']!=0){ $rs.='<time-on-foot>'.(int)$data_item['time_on_foot'].'</time-on-foot>'."\n"; } $rs.='</metro>'."\n"; } if(isset($this->form_data_shared['railway_station']) && isset($data_item['railway_station']) && $data_item['railway_station']!=''){ $rs.='<railway-station>'.self::symbolsClear($data_item['railway_station']).'</railway-station>'."\n"; } if(isset($this->form_data_shared['direction']) && isset($data_item['direction']) && $data_item['direction']!=''){ $rs.='<direction>'.self::symbolsClear($data_item['direction']).'</direction>'."\n"; } if(isset($this->form_data_shared['distance']) && isset($data_item['distance']) && (int)$data_item['distance']!=''){ $rs.='<distance>'.$data_item['distance'].'</distance>'."\n"; } if(isset($this->form_data_shared['geo']) && isset($data_item['geo_lat']) && $data_item['geo_lat']!='' && isset($data_item['geo_lng']) && $data_item['geo_lng']!=''){ $rs.='<latitude>'.$data_item['geo_lat'].'</latitude>'."\n"; $rs.='<longitude>'.$data_item['geo_lng'].'</longitude>'."\n"; } $rs.='</location>'; return $rs; }} Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: March 28, 2015 /apps/yandexrealty/site/site.php public function run_export() Смой последней ее строкой должно идет//print_r($log);Проверьте, что бы там стояли эти два обратных слеша в начале строки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Игорь Буг 0 Жалоба Опубликовано: March 28, 2015 исправил, теперь так:<realty-feed><generation-date>2015-03-28T21:04:47+03:00</generation-date></realty-feed> Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: March 29, 2015 Спишитесь со мной в скайп или аську после обеда. Контакты в профиле. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Игорь Буг 0 Жалоба Опубликовано: March 29, 2015 спасибо! вопрос закрыт Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах