Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Экспериментирую с созданием сайта-магазина на laravel 5.7. Пытаюсь реализовать функционал точек сбыта - отдельных магазинов, регионов, стран и т.п., которым присущи свои отдельные товары и цены.
Переключатель в хедере. При посещении сайта автоматически устанавливается значение по-умолчанию (потом быть может будет определяться по положению).
Проблема в том, что я не могу решить, как это сделать. Пользователь заходит на сайт и... и что? Где должна описываться логика? Вид (хедер) - общий для всех страниц. Там нужно отобрать выбранный рынок сбыта. А значит, нужно это где-то хранить. И код должен отработать сразу же при открытии сайта. Т.е. это что-то глобальное с доступом к кешу. С помощью чего это лучше всего сделать и как?
Laravel 5.7.17
php 7.3.2
Изменено n_osennij (22.02.2019 11:25:06)
Не в сети
Есть такое простое правило: разные ресурсы должны быть доступны по разным URL. Следствие: есть разные маршруты или параметры маршрутов, от которых ты можешь отталкиваться.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
artoodetoo, совсем не понял, как это применить. Быть может я запутано объяснил, что я пытаюсь понять?
Не в сети
Видимо тебе стоит начать делать, чтобы хотелка стала менее абстрактной.
Не думаю что я должен объяснять что такое URL (Universal Resource Locator) или маршрут (route).
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
artoodetoo, но как маршруты связаны вообще с тем, что я хочу сделать? Я попробую ещё раз объяснить.
У меня есть хедер (отдельный вид в отдельном файле header.blade.php). Хедер подключается абсолютно ко всем страницам сайта вне зависимости от роута. В хедере я хочу выводить переключатель страны, например. При посещении сайта страна устанавливается автоматически. Дальше пользователь может её изменить. Т.е. по факту при первом посещении где-то (где?) нужно присвоить значение по-умолчанию или считать из кеша уже установленное, если посещение не первое, и вывести в хедере.
Не в сети
Я уже сказал что считал важным по теме. Маршруты (параметры маршрута) напрямую связаны с тем, что ты выводишь.
Адрес → добыча данных по заданным параметрам → вывод данных
"Присвоить где-то" в данном случае означает перейти по URL с параметром-регионом. Всё.
Ну окей, при этом ещё в куке или сессии можно сохранить, но всё равно, если ты выводишь список магазинов в Челябинске, то он не должен иметь тот же URL что список магазинов в Краснодаре. Иначе он будет индексироваться поисковиками неправильно и будут проблемы с адресами в почтовых рассылках. Я опасаюсь, что твоё представление об "автоматически" означает что один и тот же URL может соответствовать разному контенту, в зависимости от некой магии. Это было бы неудачным решением.
Расчет вероятного региона из IP для выделения в списке регионов, это отдельная задача. Не стоит смешивать в кучу людей и коней. Про то гугли "GeoIP".
Изменено artoodetoo (22.02.2019 13:38:57)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Попробуем поиграть в реверс инжиниринг. Эльдорадо: пытается определить по IP какой у тебя регион. Но если ты выбрал сам, то он это запомнит, вероятно в сессии, (в куках я не нашел чего-то такого), а также в теле страницы вот такое упоминает чтобы скрипты могли прочитать:
<body data-region="che"
data-regionsectionid="11298"
data-regionID="6449940"
data-semEnabledByRegion="1"
class="innerPage sem">
В итоге, когда кликаешь "Адреса магазинов", то происходит переход на
https://www.eldorado.ru/info/shops/11298/ для Челябинска
https://www.eldorado.ru/info/shops/11297/ для Екатеринбурга
Уверен, что 11297 и 11298 являются значениями ключа в таблице филиалов.
Я ответил на твой вопрос?
Изменено artoodetoo (22.02.2019 13:37:50)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
artoodetoo, я, кажется, начал понимать. Но мне нужно время, чтобы всё это переварить и изучить спокойно. Обязательно отвечу немного позже! Спасибо!
Изменено n_osennij (22.02.2019 13:50:11)
Не в сети
artoodetoo, немного подумал, почитал, разобрался. Да, нужно считаться с индексированием. Думаю делать url адрес с указанием точки сбыта в виде дополнительно параметра `r`
test.com?r=14
test.com/catalog?r=14
test.com/ru/catalog/category?r=14
Но куда выносить логику первоначального перевода на какой-то конкретный рынок сбыта, смену его и другое? В middleware можно определять рынок сбыта при первом посещении. А логику управления переносить в отдельный контроллер? Или как?
Не в сети
Страницы 1