Продолжим доработки того же сайта marine-trading.com. Задание для фрилансера Михаила Пачулли, прошу оценить + сроки.
Однако заведомо называя имя одного из вероятных исполнителей, я всё-таки не персонализирую проект. Чтобы у других фрилансеров, кто может быть просматривает фриланс-раздел нашего форума в поиске работы, не сложилось предвзятое мнение о любимчиках и якобы невозможности кому-то со стороны попасть в исполнители. Пока любая из озвученных здесь доработок находится в пуле ожидаемых, делайте свою ставку - заказчик сам выберет подходящего из вас. Основные критерии: понимание движка, понимание как решить задачу простейшим образом, адекватная цена, минимальный срок исполнения.
Итак, вот от заказчика поступило новое задание. Я напишу его ниже с моим пояснением, потому что в оригинале говорится очень коротко: "Хотел еще одну доработку. Иногда необходимо скидывать результаты поиска на сайте. Сейчас это сделать не возможно т.к. скидывает просто страницу /search без поискового запроса".
Кто возьмётся?
Вернуть ссылку с GET-параметрами в поиске
Наверняка, вы слышали, что уже несколько лет принято канонизировать URL страницы сайта на основной, то есть такой же только без GET-параметров. Это простейшая защита от попадания в поисковый индекс дублей страницы с нежелательными адресами, которые иначе могли бы появиться даже от примитивных действий конкурента, наставившего в интернете ссылки вида ваш.сайт/товар?не-покупайте-тут&[случайное-число]
С подобной же целью принято закрывать от индексации страницу результатов поиска. Иначе конкурент смог бы запросто протолкнуть в поисковый индекс множество ваших страниц с самыми неудачными результатами "Товар не найден". Всего лишь наследив в интернете ссылками вида ваш.сайт/search/товар?цена-от=1000000[случайное-число]
Поэтому форму поиска верстают обычно для отправки методом POST. В теории, можно всего лишь переделать метод у формы - и задача вроде решена. Однако учитывая наличие на сайте какого-то хитрого аяксового фильтра, который общается с особым URL-ом поиска на своём "api" (как минимум, отдельно умеет только подсчитать товары, отдельно показать список результатов) и наверняка передаёт через соединение какие-то личные параметры фильтра, мы рискуем что-то не учесть или получить всю помесь параметров в GET, если заменим лишь метод формы поиска.
Так вот когда результаты поиска получены для вывода списка товаров на отдельной странице, то в этот момент мы можем получить список родных поисковых параметров, собрать их в ссылку и вывести для администратора перед списком. И пусть себе передаёт эту ссылку кому хочет.
Куда смотреть в шаблоне
- макет design/UImaxShop/html/search.htm
Переменные поиска
-
keyword - искомая фраза
- ОТСУТСТВУЕТ - ограничения нет
- ТЕКСТ - какой текст искать
-
tag - искомый тег
- ОТСУТСТВУЕТ - ограничения нет
- ТЕКСТ - по какому тегу искать
-
search_category - искать в такой категории
- ОТСУТСТВУЕТ - ограничения нет
- ПУСТО - ограничения нет
- 0 - ограничения нет
- ЧИСЛО - ID категории
-
search_brand - искать в бренде
- ОТСУТСТВУЕТ - ограничения нет
- ПУСТО - ограничения нет
- 0 - ограничения нет
- ЧИСЛО - ID бренда
Переменные управления
-
search_type - алгоритм поиска
- ОТСУТСТВУЕТ - эквивалентно std
- ПУСТО - эквивалентно std
- a1 - искать по полям [название товара, код производителя, имя категории, имя бренда]
- a2 - искать по полям [название товара, имя варианта, артикул варианта, код производителя, имя категории, имя бренда]
- std - искать по полям [название товара, имя варианта, артикул варианта ТОЧНО, код производителя ТОЧНО, имя категории ТОЧНО, имя бренда ТОЧНО]
-
reset_old - память параметров поиска
- ОТСУТСТВУЕТ - эквивалентно 0
- ПУСТО - эквивалентно 0
- 0 - использовать параметры из прежнего поиска для отсутствующих в этом запросе
- 1 - забыть все прежние параметры перед началом этого поиска
-
cost_forget - память границ цены
- ОТСУТСТВУЕТ - эквивалентно 0
- ПУСТО - эквивалентно 0
- 0 - вспомнить из прежнего поиска, если отсутствуют в этом запросе
- 1 - вспомнить отсутствующие из прежнего, и не запоминать заданные границы этого запроса
Переменные фильтра
-
filter_brand[x] - искать среди таких брендов
- ОТСУТСТВУЕТ - ограничения нет
- x - название бренда
-
filter_variant[x] - искать среди среди таких вариантов товара
- ОТСУТСТВУЕТ - ограничения нет
- x - название варианта
-
filter_property[x][y] - искать с такими свойствами
- ОТСУТСТВУЕТ - ограничения нет
- x - название свойства
- y - значение свойства
-
cost_from - искать с ценой от
- ОТСУТСТВУЕТ - взять границу ОТ из предыдущего поиска
- ПУСТО - границы ОТ нет
- ЧИСЛО - границу ОТ установить, например 5.43
-
cost_to - искать с ценой до
- ОТСУТСТВУЕТ - взять границу ДО из предыдущего поиска
- ПУСТО - границы ДО нет
- ЧИСЛО - границу ДО установить, например 200.65
Переменные вывода
- page_size - число товаров на одном листе результатов
-
sort_method - способ сортировки
- 0 - как расставил менеджер
- 1 - по цене первого варианта товара
- 2 - по количеству первого варианта
- 5 - по числу вариантов
- 6 - по названию товара
- 7 - по имени категории
- 8 - по имени бренда
- 9 - по дате опубликования
- 13 - по числу комментариев
- 14 - по количеству просмотров
- 16 - по рейтингу
- 20 - по коду производителя
- 27 - по дате начала акции
- 28 - по дате конца акции
-
sort_descending - порядок сортировки
-
sort_laconical - лаконичность сортировки
- 0 - любые результаты
- 1 - убрать нецелевые, например количество=0 при сортировке по количеству