Скриптовый поиск
Руководство пользователя
Оглавление
Оглавление. 2
О программе. 3
1 Настройка. 3
1.1 Правила HTML-разметки для загрузки поискового фильтра. 3
1.1.1 Подключение к html-странице скриптов и каскадных таблиц стилей. 3
1.1.2 Задание области поискового фильтра на html-странице. 4
1.1.2.1 Адрес экрана подбора туров при использовании фреймов. 4
2 Подготовка данных. 4
2.1 Разметка элементов поискового фильтра. 4
2.1.1 Общие положения. 4
2.1.2 Использование выпадающего списка. 5
2.1.3 Использование списка чек-боксов. 5
2.1.4 Использование календаря. 5
2.2 Разметка элементов результата поиска. 6
3 Работа в системе. 7
О программе
Данный модуль предназначен для предоставления возможности самостоятельного формирования поискового фильтра для подбора тура и либо вывода результата поиска на той же странице, либо для последующей передачи полученных критериев в поисковую.
Скриптовый поиск позволяет индивидуально настроить поисковый фильтр и отображение результатов. Т. е. визуально поиск можно будет настроить как угодно, используя практически любой набор фильтров.
Также скриптовый поиск может понадобиться, в случае, если сайт находится на хостинге, отличном от хостинга приложения iis.
Он не требует наличия iis на сервере. Его можно встроить в php-сайт или статичную страницу html.
Полученные критерии могут передаваться в любую поисковую систему по любой ссылке, но параметры в url будут такие, какие принимает Мастер-Веб.
2 Настройка
Настройки приложения
Программный продукт представляет собой набор скриптовых файлов, написанных на языке JavaScript, а, следовательно, не предъявляет требований к платформе web-сервера, на котором будет опубликован. Получение данных для формирования фильтра производится через Web-сервис «Сервис по загрузке поискового фильтра» (FilterBinding).
2.1 Правила HTML-разметки для загрузки поискового фильтра
2.1.1 Подключение к html-странице скриптов и каскадных таблиц стилей
Для функционирования программного продукта необходимо в заголовке html-страницы (обозначаемом тегами <head></head>) подключить скрипты и каскадные таблицы стилей, входящих в поставку продукта. Для этого необходимо добавить следующие строки:
<script type="text/javascript" src="js/jquery. js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/ui. core. js"></script>
<script type="text/javascript" src="js/ui. datepicker. js"></script>
<script type="text/javascript" src="js/ui. datepicker-ru. js"></script>
<link type="text/css" href="css/ui. all. css" rel="stylesheet" />
<script type='text/javascript' src='js/jquery. loadmask. min. js'></script>
<link type="text/css" href="css/jquery. loadmask. css" rel="stylesheet" />
<script type='text/javascript' src='js/filter. binding. js'></script>
<script type="text/javascript" src="js/search. engine. js"></script>
При этом необходимо учитывать относительность путей, в случае если файлы продукта находятся не на том же уровне иерархии файлов, что и размечаемая web-страница.
Если какие-либо из файлов данного программного продукта уже были подключены на странице ранее, добавлять ссылки на них повторно не следует, но необходимо убедиться, что версии этих файлов не ниже поставляемых с продуктом.
2.1.2 Задание области поискового фильтра на html-странице
Область, в которой будут расположены элементы поискового фильтра, должна быть выделена элементом div с идентификатором searchfilter, а также атрибутами navigateUrl и filterBindingServiceUrl.
Атрибут navigateUrl задает адрес экрана подбора туров, в который будут переданы результаты формирования поискового фильтра.
Атрибут filterBindingServiceUrl задает адрес web-сервиса загрузки поискового фильтра, через который будет происходить загрузка данных.
Пример разметки области поискового фильтра:
<div id="searchfilter"
navigateUrl="http://book. *****/Extra/QuotedDynamic. aspx"
filterBindingServiceUrl="http://online. *****/WSJsSearch/FilterBindingScriptService. asmx" style="width:380px;">
<!--Разметка поискового фильтра-->
</div>
2.1.2.1 Адрес экрана подбора туров при использовании фреймов
При использовании экрана «Скриптовый поиск» во фреймах, атрибут navigateUrl будет принимать другое значение.
Пример разметки области поискового фильтра:
<div id="searchfilter"
navigateUrl="http://ip-адрес сервера/JSSearch/Results. htm"
filterBindingServiceUrl=" http://online. *****/WSJsSearch /FilterBindingScriptService. asmx" style="width:380px;">
<!--Разметка поискового фильтра-->
</div>
Адрес экрана подбора туров, в который будут переданы результаты формирования поискового фильтра, в этом случае будет задаваться на странице Results. htm:
source = ‘http://book. *****/extra/quoteddynamic. aspx'
3 Подготовка данных
3.1 Разметка элементов поискового фильтра
3.1.1 Общие положения
Элемент поискового фильтра может быть представлен выпадающим списком (элемент <select></select>), списком чек-боксов (элемент <div></div>), полем текстового ввода с зависимым от него календарем (элемент <input></input>).
Элемент поискового фильтра должен содержать идентификатор, определенный в схеме сервиса загрузки фильтра, и следующие атрибуты:
Название атрибута | Описание | Примеры использования |
autoPostBack | Необходимость отправлять запрос на загрузку поискового фильтра к web-сервису, если значение данного элемента было изменено. | autoPostBack="true" autoPostBack="false" |
bindingtype | Определение типа критерия поискового фильтра, подгружаемого в элемент. | bindingtype="TourType" |
Возможные значения атрибута bindingtype:
· DepartFrom – город отправления;
· Country – страна тура;
· TourType – тип тура;
· Resort – курорт;
· City – город;
· Tour – тур;
· Hotel – отель;
· Room – тип номера;
· Nights – продолжительность тура;
· HotelStars – категория отеля;
· Pansion – питание;
· CalendarTourDates – даты тура для использования в выпадающем списке;
· CalendarTourDatesJs – даты тура для использования в календаре.
| При использовании скриптового поиска в работе с ПК Мастер-Web обязательными фильтрами являются: · Город отправления; · Страна; · Даты тура. |
3.1.2 Использование выпадающего списка
Пример использования:
<select id="lstDepartFrom" bindingtype="DepartFrom" sort="sd_ctfromname"
autoPostBack="true" style="width:230px;" >
<option value="-10"></option>
</select>
3.1.3 Использование списка чек-боксов
При использовании списка чек-боксов, помимо атрибутов, описанных выше, можно использовать атрибут repeatDirection="horizontal", что приводит к выводу списка по горизонтали, а не по вертикали, как это происходит при отсутствии атрибута.
Пример использования:
<div repeatDirection="horizontal" id="lstDuration" bindingtype="Nights" firstItem="Все" sort="sd_nights" autoPostBack="false" parentNodes="[lstDepartFrom][lstCountry][lstTourType][lstResort][lstCity][lstTour]" />
3.1.4 Использование календаря
При использовании календаря атрибут bindingtype у элемента должен быть равен CalendarTourDatesJs (а не CalendarTourDates, используемый для загрузки дат в выпадающий список). Также для поля с «Датой тура с» должен использоваться идентификатор dpTourDateFrom, а для поля с «Датой тура по» должен использоваться идентификатор dpTourDateTo.
Пример использования:
<table>
<tr>
<td>Дата тура c:</td>
<td>
<input type="text" id="dpTourDateFrom"
bindingtype="CalendarTourDatesJs" sort="td_date" autoPostBack="false" parentNodes="[lstDepartFrom][lstCountry][lstTourType][lstResort][lstCity][lstTour]" />
</td>
</tr>
<tr>
<td>Дата тура по:</td>
<td>
<input type="text" id="dpTourDateTo" style="width:65px;"/>
</td>
</tr>
</table>
3.2 Разметка элементов результата поиска
Результат поиска отображается в таблице <table id="searchResultTable" style="display:none;" searchServiceUrl="http://online. *****/WSJsSearch/SearchScriptService. asmx" TotalCount="0" ParsedCount="0">.
Первая строка <tr class="searchResultTableHeader"> описывает заголовок таблицы. Если при нажатии на заголовок столбца необходимо провести сортировку по его значениям, то в ячейку заголовка добавляется ссылка следующего вида:
<a href="javascript:SetSort('TurDateSort');"> , где в функцию SetSort передается тип сортировки.
Возможны следующие типы сортировки:
· По дате заезда, по цене, по категории гостиниц в обратном порядке: TurDateSort = "pt_tourdate {0}, pt_price, pt_hdstars desc ";
· По названию отеля, по цене, по дате заезда: HotelSort = "pt_hdname {0}, pt_price, pt_tourdate ";
· По категории отеля, по цене, по дате заезда: StarsSort = "pt_hdstars {0}, pt_price, pt_tourdate ";
· По названию города, по цене, по категории отеля в обратном порядке, по дате заезда: RegionSort = "pt_ctname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По названию типа номера, по цене, по категории отеля в обратном порядке, по дате заезда: RoomNameSort = "pt_rmname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По коду типа номера, по цене, по категории отеля в обратном порядке, по дате заезда: RoomCodeSort = "pt_rmcode {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По названию категории номера, по цене, по категории отеля в обратном порядке, по дате заезда: RoomCategoryNameSort = "pt_rcname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По коду категории номера, по цене, по категории отеля в обратном порядке, по дате заезда: RoomCategoryCodeSort = "pt_rccode {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По названию размещения, по цене, по категории отеля в обратном порядке, по дате заезда: AccomodationNameSort = "pt_acname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По коду размещения, по цене, по категории отеля в обратном порядке, по дате заезда: AccomodationCodeSort = "pt_accode {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По названию питания, по цене, по категории отеля в обратном порядке, по дате заезда: PansionNameSort = "pt_pnname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По коду питания, по цене, по категории отеля в обратном порядке, по дате заезда: PansionCodeSort = "pt_pncode {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По продолжительности тура в ночах, по цене, по категории отеля в обратном порядке, по дате заезда: NightsSort = "pt_nights {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По цене, по категории отеля в обратном порядке, по дате заезда: PriceSort = "pt_price {0}, pt_hdstars desc, pt_tourdate ";
· По валюте, по цене, по категории отеля в обратном порядке, по дате заезда: CurrencySort = "pt_rate {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По названию тура, по цене, по категории отеля в обратном порядке, по дате заезда: SpoSort = "pt_tourname {0}, pt_price, pt_hdstars desc, pt_tourdate ";
· По типу цены (за человека или за номер), по дате заезда, по цене, по категории отеля в обратном порядке: PriceForSort = "pt_topricefor {0}, pt_tourdate, pt_price, pt_hdstars desc ";
· По количеству основных мест, по количеству дополнительных мест, по цене, по категории отеля в обратном порядке: PlacesCountSort = "pt_mainplaces {0}, pt_addplaces {0}, pt_price, pt_hdstars desc ";
Далее в строке задается формат отображения вариантов тура. Формат задается через расставление «закладок», которые будут заменены соответствующими значениями. Возможные варианты закладок:
· Даты заезда - "%TourDate%"
· Название отеля - "%HotelName%"
· Ссылка на описание отеля - "%HotelURL%"
· Категория отеля - "%HotelCategory%"
· Название города - "%CityName%"
· Название типа номера - "%RoomName%"
· Название категории номера - "%RoomCategoryName%"
· Название размещения - "%AccomodationName%"
· Название типа питания - "%PansionName%"
· Продолжительность в ночах - "%Nights%"
· Стоимость - "%Price%"
· Валюта - "%Currency%"
· Название тура - "%TourName%"
· Ссылка на описание тура - "%TourURL%"
· Квота на отель - "%HotelQuota%"
· Квота на прямой рейс - "%CharterThereQuota%"
· Квота на обратный рейс - "%CharterBackQuota%"
Закладки по квотам на перелет задаются с индексом на конце, например: "%CharterThereQuota0%","%CharterThereQuota1%","%CharterThereQuota2%","%CharterBackQuota0%","%CharterBackQuota1%","%CharterBackQuota2%", где индекс – порядковый номер класса перелета заданного в конфигурационном файле сервиса <dynamicCharterClasses mode="complex">, начиная с нуля.
4 Работа в системе
Программный продукт предоставляет возможность формирования следующих критериев подбора тура:
· Город отправления
· Страна тура
· Тип тура
· Курорт
· Город
· Тур
· Отель
· Тип номера
· Продолжительность тура
· Категория отеля
· Питание
· Даты тура
Результатом работы программного продукта является сформированный поисковый фильтр, готовый к передаче в экран подбора туров.
В поставку программного продукта входит файл FilterBindingClient. htm, задав в котором адрес расположения web-сервиса загрузки фильтра и экрана поиска, можно посмотреть пример работы программного продукта, а также изучить формат правильно размеченного документа.

В поставку программного продукта входит файл FilterBindingClientQD. htm, на котором по нажатию кнопки «Поиск» отображаются результаты отбора. Если задать адрес расположения web-сервиса загрузки фильтра и экрана поиска в этом файле, то можно посмотреть пример работы программного продукта, а также изучить формат правильно размеченного документа.




