Kami Опубликовано 8 июля, 2020 Жалоба Поделиться Опубликовано 8 июля, 2020 Возможно ли сделать так, чтоб любой посетитель без регистрации, автоматически был в группе "Гости" созданной в разделе группы? Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 8 июля, 2020 Автор Жалоба Поделиться Опубликовано 8 июля, 2020 Ну или вариант такой , сейчас стоит модуль "видимость товаров в зависимости от группы"Соответственно если у товара visible_to_all = 1 , то он виден всем , как обычным пользователям так и группам, а нужно собственно чтоб когда visible_to_all=1 , то виден был только тем пользователем которые не относятся ни к какой группе,visible_to_all=1 ставится через админ панель чек боксом. Не могу победить запрос чтоб исключить показ группам и оставить только юзерам которые вошли без регистрации или не относятся ни к одной группе if (!$_SESSION['admin'] && $_SESSION['user_group_id'] && !empty($_SESSION['group_visible_ids']) && empty($groups_ids_visible)) { $groups_ids_visible = explode(',',$_SESSION['group_visible_ids']); } $select_groups = ''; foreach($groups_ids_visible as $gid) { $select_groups .= "p.group_visible_".intval($gid).", "; } $group_visible_filter = ''; if (!$_SESSION['admin']) { $group_visible_filter = 'AND (p.visible_to_all=1'; if ($_SESSION['user_group_id'] && in_array((int)$_SESSION['user_group_id'], $groups_ids_visible)) { $group_visible_filter .= $this->db->placehold(' OR p.group_visible_?=1', intval($_SESSION['user_group_id'])); } $group_visible_filter .= ') '; } Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 8 июля, 2020 Жалоба Поделиться Опубликовано 8 июля, 2020 во view есть штатная проверка еще чуточку надо модифицировать // Пользователь, если залогинен Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 8 июля, 2020 Автор Жалоба Поделиться Опубликовано 8 июля, 2020 (изменено) во view есть штатная проверка еще чуточку надо модифицировать // Пользователь, если залогинен Ну если брать данный модуль видимость определенной группе то тут в View.php $groups_discount = $this->users->get_groups(array('for_visible' => 1)); $groups_ids = array(); foreach($groups_discount as $group) { $groups_ids[] = $group->id; } $_SESSION['group_visible_ids'] = implode(',', $groups_ids); if ($this->user) { $_SESSION['user_group_id'] = $this->user->group_id; } else { unset($_SESSION['user_group_id']); } Получается проверку лучше сделать ниже? если пользователь залогинен то проверять группу и по группе проверять стоит ли галочка у товара? я все таки думал это нужно на стадии запроса sql делать? или я не прав? // Пользователь, если залогинен if(isset($_SESSION['user_id'])) { $u = $this->users->get_user(intval($_SESSION['user_id'])); if($u && $u->enabled) { $this->user = $u; $this->group = $this->users->get_group($this->user->group_id); } } Изменено 8 июля, 2020 пользователем Kami Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 8 июля, 2020 Жалоба Поделиться Опубликовано 8 июля, 2020 Как вам удобнее так и делайте перепроверяйте принадлежность к группе или проверяйте если пользователь незалогинен добавлять ему сессию no_groups и по ней отслеживайте. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 8 июля, 2020 Автор Жалоба Поделиться Опубликовано 8 июля, 2020 Как вам удобнее так и делайте перепроверяйте принадлежность к группе или проверяйте если пользователь незалогинен добавлять ему сессию no_groups и по ней отслеживайте. так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе. Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?Как правильней с вашей точки зрения сделать? Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 8 июля, 2020 Жалоба Поделиться Опубликовано 8 июля, 2020 (изменено) так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе. Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?Как правильней с вашей точки зрения сделать?чет тут не стыковочка у вас если пользователь зарегестрирован то так if($u && $u->visible_to_all) но в заголовок темы другой... если если пользователь не зарегистрирован то просто убеждаетесь что это гость и присваевате ему фильтр visible_to_all создав этот фильтр предварительно Изменено 8 июля, 2020 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 8 июля, 2020 Автор Жалоба Поделиться Опубликовано 8 июля, 2020 чет тут не стыковочка у вас если пользователь зарегестрирован то так if($u && $u->visible_to_all) Может я не правильно выразился Сейчас так,у s_products есть поле visible_to_all - видимость товара для всех пользователей, гостей так и обычных зарегистрированных (включая все группы) и и динамически создаются поля group_visible_2 , где 2 это id группы которая участвует в видимости. Сколько групп, столько и полей group_visible_(id_group) Соответственно сейчас хочу сделать следующее, чтоб установка галочки visible_to_all , показывала товар только "гостям" сайта и пользователям без группы. К примеру зашел оптовик - залогинился и видит только те товары которые можно купить оптом, вот цель этой задачи. Пробовал if($u && $u->visible_to_all), но тут только отсекаем юзеров которые залогинились, а тут нужно "гостей" и пользователей без группы. То есть я выбираю у каждого товара, если стоит галочка visible_to_all - показываем гостям и пользователям которые не состоят ни в какой группе , если стоит галочка group_visible_2 то показываю только оптовикам ( созданная группа с id 2), а если стоят обе галочки, соответственно и тем и тем. Поэтому тут получается что из visible_to_all , нужно исключить показ в любых созданных группах, а вот где это сделать додуматься не могу. Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 8 июля, 2020 Жалоба Поделиться Опубликовано 8 июля, 2020 подсказка когда вы ставите условие if вы еще можете использовать else .... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.