Перейти к содержимому


CMS - выбор города и определение устройства

CMS Выбор города Определение устройства

Сообщений в теме: 6

#1 Ф_Сергей_В

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
Репутация: 0

Отправлено 06 Сентябрь 2019 - 01:57

Всем доброго дня.
у меня группа вовпросво со своими подгруппами. Пишу CMS. Много полезной информации подчеркнул у Вас на канале и форуме. Но, как всегда бывает не на все свои вопросы нашёл ответы.

1. Хочу реализовать выбор города в моём интернет магазине и образовались утыкания.

На какой стадии лучше иницилизировать определения города и дать возможность выбрать свой?

Как эффективнее сделать БД - выбранный город должен прописывать свое меню и товары. Сделать таблицу с меню и товарами для каждого города и чтобыппроисходило подключение по выбранному городу или лучше использовать единые таблицы но выборка чтобы происходила по индексу города?

2. На каком этапе в CMS определять устройство и осуществлять пере адрисацию в шаблон под то или иное устройство?

#2 matroskin8

    Администратор

  • Администраторы
  • 12 504 сообщений
Репутация: 2 125

Отправлено 06 Сентябрь 2019 - 07:01

Здравствуйте.

Просмотр сообщенияФ_Сергей_В (06 Сентябрь 2019 - 01:57) писал:

На какой стадии лучше иницилизировать определения города и дать возможность выбрать свой?
Но на самом деле здесь все просто. При запросе страницы запрос принимает Ваш маршрутизатор и направляет его в нужный контроллер. В контроллере Вы получаете IP пользователя и по IP из соответствующей таблицы в БД получаете город пользователя. Полученный город передаете в вид, где он и выводится. Список городов для выбора часто нужен на всех страницах без исключения, поэтому здесь можно написать функцию получения всех городов из БД в виджете и подключать его в шаблоне (собственно, и определение города можно также перенести в подключаемый виджет, здесь уже дело вкуса).

Просмотр сообщенияФ_Сергей_В (06 Сентябрь 2019 - 01:57) писал:

Как эффективнее сделать БД - выбранный город должен прописывать свое меню и товары. Сделать таблицу с меню и товарами для каждого города и чтобыппроисходило подключение по выбранному городу или лучше использовать единые таблицы но выборка чтобы происходила по индексу города?
Я бы в таблицу товаров добавил ID города и затем по ID города выбирал товары. Но можно, конечно же, и отдельную связующую таблицу сделать.

Просмотр сообщенияФ_Сергей_В (06 Сентябрь 2019 - 01:57) писал:

2. На каком этапе в CMS определять устройство и осуществлять пере адрисацию в шаблон под то или иное устройство?
Этот вопрос не совсем понятен, но подозреваю, что он дублирует Ваш первый вопрос с определением города, поэтому ответ аналогичен.

#3 Ф_Сергей_В

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
Репутация: 0

Отправлено 07 Сентябрь 2019 - 15:56

Ну вроде ход событии я понял, спасибо огромное. Но сегодня постиг меня крах в реализации. Попробую еще раз проанализировать ошибки - если не выйдет можно обратиться за советом или консультацией ?

#4 Ф_Сергей_В

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
Репутация: 0

Отправлено 07 Сентябрь 2019 - 15:57

Да он аналогичен пожалуй :) спасибо

Просмотр сообщенияmatroskin8 (06 Сентябрь 2019 - 07:01) писал:

Здравствуйте.

Но на самом деле здесь все просто. При запросе страницы запрос принимает Ваш маршрутизатор и направляет его в нужный контроллер. В контроллере Вы получаете IP пользователя и по IP из соответствующей таблицы в БД получаете город пользователя. Полученный город передаете в вид, где он и выводится. Список городов для выбора часто нужен на всех страницах без исключения, поэтому здесь можно написать функцию получения всех городов из БД в виджете и подключать его в шаблоне (собственно, и определение города можно также перенести в подключаемый виджет, здесь уже дело вкуса).


Я бы в таблицу товаров добавил ID города и затем по ID города выбирал товары. Но можно, конечно же, и отдельную связующую таблицу сделать.


Этот вопрос не совсем понятен, но подозреваю, что он дублирует Ваш первый вопрос с определением города, поэтому ответ аналогичен.


#5 matroskin8

    Администратор

  • Администраторы
  • 12 504 сообщений
Репутация: 2 125

Отправлено 07 Сентябрь 2019 - 16:11

Просмотр сообщенияФ_Сергей_В (07 Сентябрь 2019 - 15:56) писал:

Ну вроде ход событии я понял, спасибо огромное. Но сегодня постиг меня крах в реализации. Попробую еще раз проанализировать ошибки - если не выйдет можно обратиться за советом или консультацией ?
Да, можно, советом постараюсь помочь :)

#6 Ф_Сергей_В

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
Репутация: 0

Отправлено 23 Сентябрь 2019 - 03:14

Добрый день. И так я начал решение этой задачи но по другому. Причины объективные. Но не знаю на сколько это правильно, прошу проанализировать и оказать помощи.

1. В config d init.php создал:
// КУКИ для города
// если куки city нет то константе cityItem присваиваем id 1 города
if (!isset($_COOKIE ["city"])) {
define("cityItem" , '1'); // константа для городов
}else{ // если куки city есть то константе cityItem присваиваем id из куки
define("cityItem" , $_COOKIE ["city"]);
};
2. В app controllers в MainController.php

$cityId = cityItem; // вытаскиваем из init.php данные cityItem которые она получила из куки

$cities = \R::findOne('city', 'id=?',[$cityId]); // из таблицы city создаем масив ('city',"id='{$cityId}'");
$_SESSION['cityArr'] = $cities; // масcив в сессии - надо сделать его проще! и красивее.


3. в верстке :
<!--модальное выбор города окно arcticModal -->
<div style="display: none; ">
<div class="box-modal" id="cityModal">
<div class="modal-header">
<button type="button" class="close box-modal_close arcticmodal-close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
<div>Выбирите город:</div>
<li>
<a href="<?=PATH;?>" id="chose__city__1" onclick='clearCart(); $.removeCookie("recentlyViewed", { path: "/" }); $.cookie("city","1",{expires:7, path:"/"});' >Тюмень</a> <!-- функция clearCart() очистки корзины перестала работать в ФаирФоксе -->

<a href="<?=PATH;?>" id="chose__city__2" onclick='clearCart(); $.removeCookie("recentlyViewed", { path: "/" }); $.cookie("city","2",{expires:7, path:"/"});' >Нижневартовск</a>
<a href="<?=PATH;?>" id="chose__city__3" onclick='clearCart(); $.removeCookie("recentlyViewed", { path: "/" }); $.cookie("city","3",{expires:7, path:"/"});' >Севастополь</a>
</li>
</div>
<div class="modal-footer">
</div>
</div>
</div>

<script> // модальное окно Выбор города
$(function(){ // Запуск автоматический при загрузке страницы
if ($.cookie("city")!=null) { // если не пуст cookie city то ничего не делаем
}else { // иначе запускаем модальное окно
$('#cityModal').arcticmodal({ // блокируем Клик вне окна клавишу Esc
closeOnOverlayClick: false,
closeOnEsc: false
});
}
});
</script>
Ну вот - но пока меню не могу сформировать - в AppController не могу сформировать из кэша по выбронному городу меню - не могу получить эту переменную вовремя.

Что скажете о правильности решения и разрешения проблем ?

#7 matroskin8

    Администратор

  • Администраторы
  • 12 504 сообщений
Репутация: 2 125

Отправлено 23 Сентябрь 2019 - 08:35

Здравствуйте.

Просмотр сообщенияФ_Сергей_В (23 Сентябрь 2019 - 03:14) писал:

Что скажете о правильности решения и разрешения проблем ?
Ничего не скажу, сложно читать неотформатированный радужный код :) Для оформления кода, на будущее, есть специальная иконка. Но в принципе, если решение работает, значит, - его можно использовать.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных