Recommended Posts

Прошу помочь с выгрузкой. Имеем 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";
                }

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Обновляемся до свежей версии.

2. Берем файл /apps/yandexrealty/site/site.php и копируем его в /template/frontend/шаблон/apps/yandexrealty/site/local_site.php

3. Строку

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

 

 

Попробуйте и расскажите, что получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

получилось такое:

Ошибка синтаксического анализа 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
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^

в новом файле так:

 

<?php
defined('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;
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/apps/yandexrealty/site/site.php

 

public function run_export()

 

Смой последней ее строкой должно идет

//print_r($log);

Проверьте, что бы там стояли эти два обратных слеша в начале строки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас