Перейти к содержанию
Официальный форум поддержки Simpla

Всех пользователей приравнивать к группе "Гости"


Рекомендуемые сообщения

Возможно ли сделать так, чтоб любой посетитель без регистрации, автоматически был в группе "Гости" созданной в разделе группы? 

Ссылка на сообщение
Поделиться на другие сайты

Ну или вариант такой , сейчас стоит модуль "видимость товаров в зависимости от группы"

Соответственно если у товара  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 .= ') ';
        }
Ссылка на сообщение
Поделиться на другие сайты

во 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);
				
				}
			}
Изменено пользователем Kami
Ссылка на сообщение
Поделиться на другие сайты

Как вам удобнее так и делайте перепроверяйте принадлежность к группе или проверяйте если пользователь незалогинен добавлять ему сессию no_groups и по ней отслеживайте.

Ссылка на сообщение
Поделиться на другие сайты

Как вам удобнее так и делайте перепроверяйте принадлежность к группе или проверяйте если пользователь незалогинен добавлять ему сессию no_groups и по ней отслеживайте.

 

так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе. 

Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?

Как правильней с вашей точки зрения сделать?

Ссылка на сообщение
Поделиться на другие сайты

так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе

Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?

Как правильней с вашей точки зрения сделать?

чет тут не стыковочка у вас

 

если пользователь зарегестрирован то так

 

if($u && $u->visible_to_all)

 

но в заголовок темы другой... если если пользователь не зарегистрирован то просто убеждаетесь что это гость и присваевате ему фильтр visible_to_all создав этот фильтр предварительно

Изменено пользователем shooroop
Ссылка на сообщение
Поделиться на другие сайты

чет тут не стыковочка у вас

 

если пользователь зарегестрирован то так

 

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 , нужно исключить показ в любых созданных группах, а вот где это сделать додуматься не могу.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...