Поиск на сайте с помощью XML

Тема в разделе "Как сделать...", создана пользователем djvavik, 1 июн 2014.

  1. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    164
    Симпатии:
    18
    1.Есть интернет магазин на оpencart c ЛК.

    2. Есть XML Поиск от ruspo.

    3. Как создать готовый модуль поиска туров с помощью XML?

    4. После создания модуля, как сделать так, что бы клиент после выбора тура увидел его в корзине? Т.е. при выборе тура попадало в корзину для оформления заказа?

    5. Пример реализации: http://www.hott.ru/podbor-tura.html
    _________________________________________________________________________________________________

    В XML особо не понимаю, но пишут, что для того кто понимает расплюнуть.
    _________________________________________________________________________________________________

    Документация по XML поиску

    В каждом запросе к XML-шлюзу необходимо передавать три обязательных параметра:
    http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=CITIES
    Справочник стран по переданному городу вылета http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=COUNTRIES&CITY=1206
    Справочник курортов по выбранной стране http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=RESORTS&COUNTRY=39
    Справочник звездности отелей http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=STARS
    Справочник типов питания http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=FOODS
    Справочник отелей по стране http://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=HOTELS&COUNTRY=39
    Дополнительные возможности

    Получение списка отелей по курортуhttp://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=HOTELS&COUNTRY=39&RESORT=520
    Получение списка отелей по курорту и по части имени отеляhttp://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=HOTELS&COUNTRY=39&RESORT=520&NAME=Baron
    Получение списка отелей по звездности отеля и странеhttp://ruspo.ru/XML/SEARCH/GetDictionary.aspx?TYPE=HOTELS&COUNTRY=39&STARS=1,5
    STARS - это ID звездностей из справочника через запятую
    Поиск туров

    Пример ссылки: http://ruspo.ru/XML/SEARCH/SEARCH.aspx?COUNTRY=39&CITY=1206

    Обязательные параметры:
    COUNTRYИдентификатор страны тура
    CITYИдентификатор город вылета
    Необязательные параметры:
    NIGHTSFROMКоличество ночей от (по умолчанию 3)
    NIGHTSTOКоличество ночей до (по умолчанию 14)
    DATEFROMДата вылета от (по умолчанию сегодня +1 день) в формате dd.MM.yyyy
    DATETOДата вылета до (по умолчанию сегодня +6 дней) в формате dd.MM.yyyy
    ADULTКоличество взрослых туристов (по умолчанию 2)
    CHILDRENКоличество детей (по умолчанию 0)
    CHILD1,CHILD2,CHILD3возраст детей (по умолчанию 0)
    STARSСписок идентификаторов звездности отелей из справочников через запятую
    FOODSСписок идентификаторов типов питания из справочников через запятую
    RESORTSСписок идентификаторов курортов из справочников через запятую
    HOTELSСписок идентификаторов отелей из справочников через запятую
    MINPRICEМинимальная цена тура
    MAXPRICEМаксимальная цена тура
    NOHOTEL=1Не показывать отели в стопе
    NOTICKET=1Не показывать СПО без авиабилетов
    UE=1Показывать цены в валюте тура
    NOREQUEST=1Не показывать авиабилеты "под запрос"
    FAST=1Быстрый поиск
    При быстром поиске уменьшается тайм-аут запросов, результаты от "тормозящих" ТО не попадают в выдачу
    light=0Версия поиска
    "light=0" - Full версия, "light=1" - Light версия. По умолчанию light=1
    Full (полная ) версия - отображает 'полную картину' ценовых предложений, выполняется в среднем 40 секунд ( 100-200 шт. от каждого оператора )
    Light ( облегченная ) версия - выполняется быстро, имеет ограничение на кол-во туров (40-100 шт. от каждого оператора)
    Пример XML-результатов поиска

    [​IMG]
    Асинхронный поиск

    При первом запросе добавляем параметр async=1
    Практически мгновенно получаем ответ вида <tours session="T__26670bee90934e9eaa3c57e20da5efa9"/>
    Добавляем к запросу вместо async=1 параметры Session=T__26670bee90934e9eaa3c57e20da5efa9&paging=on&page=1 и получаем первую страницу найденных НА МОМЕНТ ЗАПРОСА туров. Меняя номер страницы получаем остальные данные.
     
  2. DevOrc

    DevOrc Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    31
    Симпатии:
    10
    Если объем данных не фантастически велик, то почему бы не сделать поиск на клиенте используя jquery, есть парсер http://api.jquery.com/jquery.parsexml/ а дальше ловкость рук.
     
  3. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    164
    Симпатии:
    18
    Зачем парсер, если есть готовые шлюзы (описано выше). Я бы хотел узнать как построить код исходя из моих клиентских данных, засунуть в таблицу и прикрутить кнопку купить с попаданием в корзину?
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.546
    Симпатии:
    1.418
    $dom = simplexml_load_string или simplexml_load_file
    а дальше проход по циклу и работа со свойствами объекта
    PHP:
    foreach ($dom->tour as $tour) {
      
    $country = (string)$tour->country;
      
    $room = (string)$tour->room;
      
    и т.д.
    }
     
  5. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    164
    Симпатии:
    18
    Простите за тупость, а куда данный код вставлять?
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.546
    Симпатии:
    1.418
    Это подсказка по решению задачи, а не готовый код парсинга.

    Вставлять после кода авторизации :)
     
  7. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    164
    Симпатии:
    18


    Сколько примерно будет стоит работа по написанию готового кода?
     
  8. DevOrc

    DevOrc Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    31
    Симпатии:
    10
    Я еще раз пересмотрел Ваш пост. Итак, есть готовые данные в XML и их вам надо положить в opencart, верно?
    Если это так, то:
    1. Подготовить магаз:
    -добавить специфичные поля для товаров (туров)
    -закастомить карточку товара (добавить карту, даты и т.д.), с учетом срока годности поездки
    -закастомить список поездок, добавить даты и т.д.
    -админка, тоже куча изменений, авто выключение просроченных поездок и т.д.
    -мега поиск и фильтр
    ...
    2. Нарисовать модуль импорта из XML по Вашим конкретным данным.

    Это очень приличная работа, опенкарт не ориентирован на товары с истечением срока актуальности.
     
  9. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    164
    Симпатии:
    18
    не совсем так я это представляю. Нужно построить модуль который будет черпать данные xml. Обычный модуль поиска туров. К примеру при результате выдает туры, далее к товарам никакого значения не имеет, сам модуль может быть на Java. но нужно прикрутить кнопку купить. После нажатия кнопки параметры тура переходят в корзину для оформления заказа. Т.е. в системе товары числиться не будут.

    Я имею ввиду, что не надо нагружать систему сайта с добавлением постоянно новых товаров. Вот почему XML, точнее думаю в его сторону.

    Так же предоставляют готовый модуль поиска туров на Java script, но при выборе тура есть только оставить заявку на тур, можно и с он лайн покупкой, но покупка будет происходить на стороне как бы хозяина модуля. Т.е. в ЛК клиент заказ не увидит. В принципе в этом проблема.

    Если реально мега проект, то прошу отговорить, буду думать в другую сторону.
    ------------------------------------------------------------------------------------------------------------------

    Вот думаю еще в другую сторону:

    1. необходим фильтр товаров по календарю ( не разу не встречал)

    2. Я нашел готовый модуль создания заказа и прикрепления заказа к аккаунту клиента.

    (Т.е. клиент нашел продукт из готового модуля поиска туров, который предоставляет sletat.ru или ruspo связываемся с ним , оформляем заказ, прикрепляем, клиент оплачивает)

    3. Я нашел готовый модуль для прикрепления документов к конкретному аккаунту. Т.е. могу приложить документы на вылет.

    4. Самая большая загвоздка!: необходимо при оформление заказа добавить или изменить поля, точнее шаги ( создать форму заполнения загран паспортов турисов, если туристов двое, то при оформление клиент нажимает добавить еще туриста и раскрывается вторая форма, но для другого туриста, либо что бы была зависимость от кол-ва товара, кол-во форм)

    Про зависимость:

    1.Создаем товар (напр. Чехия, отель такой то, 7 ночей, доп полей не нужно - это один товар)

    2. Меняем наз.поля кол-во товара на кол-во туристов.

    3. Допустим клиент выбирает кол-во равное двум.
    4. При оформление в шаге ввода данных загран паспорта должно появиться две форму на туриста один и на туриста два.

    5. Если три туриста, то должно появиться 3 формы ввода загран паспорта.

    Суть в том, что я уперся в фильтр по календарю и в оформлении заказа клиентов (ввод загран паспортов) и проект готов.

    Пример onlinetours.ru ( я так понял сайт на opencart)
    ------------------------------------------------------------------------------------

    Нашел модуль фильтр по датам.

    Осталось разобраться с самым сложным с офрмлением заказа, мб. кто подскажет?
     
    Последнее редактирование: 11 июн 2014
  10. DevOrc

    DevOrc Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    31
    Симпатии:
    10
    Вообще не имеет отношение к opencart и написан на ruby, на вскидку, сайт такой сложности от 100к