Приветствую,
Есть сайт на котором нужно сделать кастомный поиск.
1. Необходимо разработать кастомный поиск на сайте сделанном на битриксе в отдельном разделе, например /f/. Фильтрация элементов происходит по дополнительным полям. Дополнительные поля вида: Список, Строка, Привязка к элементам. После каждого выбранного пункта в фильтре необходимо:
- обновить страницу
- сформировать h1 и title по правилу описанному ниже.
- сформировать урл следующим образом: /#название свойства#=#значение свойства#/. Например, фильтр по "Ярославское" шоссе, в этом случае урл будет вида: /f/highway=yaroslavskoe/ где highway - это название дополнительного поля, а yaroslavskoe - это ELEMENT_CODE элемента. Если выбрано несколько шоссе, то через запятую /f/highway-kievskoe,yaroslavskoe/ Сортировка выбранных значений фильтра по алфавиту, т.е. сначала Киевское, затем Ярославское. Если фильтр по двум и более свойствам, то последовательность свойств при формировании урла - по сортировке свойства. Пример фильтра по двум свойствам: /f/district=odincovo/highway=kievskoe/
- расчет кол-ва элементов для каждого пункта фильтра, чтобы пользователь видел сколько элементов в каждом пункте находится. В случае, если в пункте 0 элементов - то не давать кликать по нему.
Формирование h1 и title при выборе фильтра:
- у свойств вида "привязка к элементам" есть свойство содержащее просклоненное значение, например, для урла /f/highway-kievskoe/ у элемента с ELEMENT_CODE=kievskoe есть свойство, которое содержит значение "Киевскому", в результате получим H1+title = "Отели по Киевскому шоссе", где "Отели" - это константа которая будет подставляться при формировании любого h1/title, а "шоссе" - это приписка только для нескольких свойств.
Все фильтры представлены в виде чекбоксов.
При расчете кол-ва элементов для каждого пункта фильтра - не должен учитываться текущий фильтр. Например, есть 10 пансионатов: 5 по Киевскому шоссе и 5 по Ярославскому. Даже если выбран фильтр по Ярославскому шоссе, то у пункта Киевское должно быть подписано 5, чтобы была возможность выбрать оба шоссе одновременно и получить 10 отелей.
При выборе нескольких пунктов в рамках одного фильтра - должно работать условие "ИЛИ". Смотри предыдущий пример, когда выбраны оба шоссе (Ярославское и Киевское) то должно найтись 10 отелей.
Пример фильтра по Цене от 0 до 500 рублей: /f/price=0-500/
2. Необходимо разработать скрипт, генерирующий файл sitemap.xml. На вход подается массив Свойств, на выходе - сгенерированный файл sitemap.xml, который должен быть наполнен следующими урлами:
- каждый пункт каждого свойства (пример /f/district=odincovo/ и /f/highway=kievskoe/)
- перебор всех комбинаций по одному пункту из двух разных свойств (пример /f/district=odincovo/highway=kievskoe/)
Есть сайт на котором нужно сделать кастомный поиск.
1. Необходимо разработать кастомный поиск на сайте сделанном на битриксе в отдельном разделе, например /f/. Фильтрация элементов происходит по дополнительным полям. Дополнительные поля вида: Список, Строка, Привязка к элементам. После каждого выбранного пункта в фильтре необходимо:
- обновить страницу
- сформировать h1 и title по правилу описанному ниже.
- сформировать урл следующим образом: /#название свойства#=#значение свойства#/. Например, фильтр по "Ярославское" шоссе, в этом случае урл будет вида: /f/highway=yaroslavskoe/ где highway - это название дополнительного поля, а yaroslavskoe - это ELEMENT_CODE элемента. Если выбрано несколько шоссе, то через запятую /f/highway-kievskoe,yaroslavskoe/ Сортировка выбранных значений фильтра по алфавиту, т.е. сначала Киевское, затем Ярославское. Если фильтр по двум и более свойствам, то последовательность свойств при формировании урла - по сортировке свойства. Пример фильтра по двум свойствам: /f/district=odincovo/highway=kievskoe/
- расчет кол-ва элементов для каждого пункта фильтра, чтобы пользователь видел сколько элементов в каждом пункте находится. В случае, если в пункте 0 элементов - то не давать кликать по нему.
Формирование h1 и title при выборе фильтра:
- у свойств вида "привязка к элементам" есть свойство содержащее просклоненное значение, например, для урла /f/highway-kievskoe/ у элемента с ELEMENT_CODE=kievskoe есть свойство, которое содержит значение "Киевскому", в результате получим H1+title = "Отели по Киевскому шоссе", где "Отели" - это константа которая будет подставляться при формировании любого h1/title, а "шоссе" - это приписка только для нескольких свойств.
Все фильтры представлены в виде чекбоксов.
При расчете кол-ва элементов для каждого пункта фильтра - не должен учитываться текущий фильтр. Например, есть 10 пансионатов: 5 по Киевскому шоссе и 5 по Ярославскому. Даже если выбран фильтр по Ярославскому шоссе, то у пункта Киевское должно быть подписано 5, чтобы была возможность выбрать оба шоссе одновременно и получить 10 отелей.
При выборе нескольких пунктов в рамках одного фильтра - должно работать условие "ИЛИ". Смотри предыдущий пример, когда выбраны оба шоссе (Ярославское и Киевское) то должно найтись 10 отелей.
Пример фильтра по Цене от 0 до 500 рублей: /f/price=0-500/
2. Необходимо разработать скрипт, генерирующий файл sitemap.xml. На вход подается массив Свойств, на выходе - сгенерированный файл sitemap.xml, который должен быть наполнен следующими урлами:
- каждый пункт каждого свойства (пример /f/district=odincovo/ и /f/highway=kievskoe/)
- перебор всех комбинаций по одному пункту из двух разных свойств (пример /f/district=odincovo/highway=kievskoe/)