Pascha

[Решено] Закрытый доступ к товарам отдельной категории

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

Pascha    645

Вопрос в заголовке.
Подробнее: 
Имеем 4 категории с товарами:


Категории 1, 2, 3 и товары в них доступны для всех гостей и покупателей.(группа покупателей "default")


Категория 4 - для всех доступно только страница с описанием категории, товар этой категории отображается только тем, кто авторизирован на сайте и он определен Админом сайта в определенную группу покупателей (например:  группа покупателей- "premium")

есть мысли? реализация? модуль?

Поделиться сообщением


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

решить можно так...созданием еще одной скрытой категории для группы покупателей
http://stackoverflow.com/questions/15678918/opencart-hide-custom-menu-when-specified-group-cusomer-logged?rq=1


спасибо Tom

 

ниасилил ))))) кто в теме...разжуйте...)))

Изменено пользователем Pascha

Поделиться сообщением


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

Паш, попробуй заменить условие

<?php if ($products) { ?>
на
<?php if (($products) && ($category_info['category_id'] == xx) && ($this->customer->isLogged()) && ($this->customer->getCustomerGroupId() == yy)) { ?>

где, хх - id 4-й категории, yy - id группы 'premium'.

И в контроллер добавь:

$this->data['category_info'] = $category_info;

Поделиться сообщением


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

сделано, не скрывает: 
итак поэтапно, что делал (можете пиннать ногами)))):
в category.tpl : 
 

Паш, попробуй заменить условие

<?php if ($products) { ?>
на
<?php if (($products) && ($category_info['category_id'] == xx) && ($this->customer->isLogged()) && ($this->customer->getCustomerGroupId() == yy)) { ?>
где, хх - id 4-й категории, yy - id группы 'premium'.

хх -  у меня 20   yy - у меня 2 (ID взяты естественно из строки браузера после создания категории и группы)
получилось так: 

<?php if (($products) && ($category_info['category_id'] == 20) && ($this->customer->isLogged()) && ($this->customer->getCustomerGroupId() == 2)) { ?>
 

далее:

 

в контроллер category.php  после:
$this->data['heading_title'] = $category_info['name'];
 

добавил:

$this->data['category_info'] = $category_info;
 

выхожу из аккунта и все вижу ((( 

вот эта категория должна быть скрыта от глаз незарегистрированного ( и зарегистрированного то же, если не в группе premium


http://ecigru.com/the-cellar/

Поделиться сообщением


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

Изменения вносишь в catalog/view/theme/default/theme/product/category.tpl, верно?

Вижу VQMOD стоит. Попробуй кеш VQMOD почистить.

Изменено пользователем 12strun

Поделиться сообщением


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

Изменения вносишь в catalog/view/theme/default/theme/product/category.tpl, верно?

конечно...темы нет...все на дефолте))) версия 1541

 

почистил кэш...и вкюмод и систем...пока реакции ни какой

Поделиться сообщением


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

Хорошо, а если вставить (в category.tpl) перед условием следующее:

<?php 
///////DEBUG////////
$debug = $category_info['category_id'] . "\n\n" . $this->customer->isLogged() . "\n\n" . $this->customer->getCustomerGroupId();

      ob_start();
      var_dump($debug);
      $String = ob_get_contents();
      ob_end_clean();
      file_put_contents(DIR_APPLICATION . 'view/theme/default/template/product/var_debug.txt', $String);
///////DEBUG////////
 ?>

в catalog/view/theme/default/template/product/ появится файл var_debug.txt. Что в нем будет написано?

Поделиться сообщением


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

документ не появился)))

 

string(6) "20






"
 

сейчас после установки отладчика все товары для неавторизированных пользователей скрыты)))

Поделиться сообщением


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

Появился. :-)  Надо было перезапустить FTP-соединение.

 

Поздно вечером доберусь до нормального компьютера - покопаю на тестовом сайте. Подозрение, что $this->customer->getCustomerGroupId() в шаблоне не отдает как надо.

Поделиться сообщением


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

буду премного благодарен, о, добрая самаритянка!!!  :oops:

Поделиться сообщением


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

Почеиу самаритянка? Москали мы... :-D

Поделиться сообщением


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

Я женских слов люблю родник

и женских мыслей хороводы,

поскольку мы умны от книг,

а бабы - прямо от природы.

:-)

 

Почему самаритянка?

http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D1%82%D1%87%D0%B0_%D0%BE_%D0%B4%D0%BE%D0%B1%D1%80%D0%BE%D0%BC_%D1%81%D0%B0%D0%BC%D0%B0%D1%80%D1%8F%D0%BD%D0%B8%D0%BD%D0%B5

Поделиться сообщением


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

Вот модуль пароль при входе на категорию http://www.opencart.com/index.php?route=extension/extension/info&extension_id=7595&filter_search=password%20product

Поделиться сообщением


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

насколько я понял, этот модуль для пароля на отдельный продукт (хорошо когда их мало, а не сотни), видимо вы немного не поняли задачу которая решается тут. Но спасибо, в закладках...вдруг возникнет нужда.

Поделиться сообщением


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

Поделиться сообщением


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

 

Елы-палы, точно... :oops:

А у меня ассоциация была с городом Самара...

М-да, моск к концу дня ушел куда-то погулять... :ugeek:

 

По теме: я балда, условие не правильно было составлено (соображалка-то как у блондинки под вечер... :-D )

Надо так:

<?php if ((($products) && ($category_info['category_id'] == '20') && ($this->customer->getCustomerGroupId() == '2')) || (($products) && ($category_info['category_id'] != '20'))) { ?>

Все id, при необходимости, поменять на свои.

 

DEBUG ранее вставленный можно сносить.

 

P.S. Да, там айдишники в кавычки добавлены, потому как переменные имеют тип string.

Изменено пользователем 12strun

Поделиться сообщением


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

12strun

тебе говорили, что ты просто чудо? )))
спасибо огромное...с меня причитается)))) 

Поделиться сообщением


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

Да не за что. ))

Я вот с версткой не очень дружу, часто в css в элементарных вещах плаваю, если что - обращусь... ))

Поделиться сообщением


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

не вопрос....с этим у меня вроде порядок))) в любое время дня и ночи, в сети часто...остальное в личке)))


p.s. ну вот и я, видимо, на что то годный :-) , как оказалось :shock:

Поделиться сообщением


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

Паш, попробуй заменить условие

<?php if ($products) { ?>
на
<?php if (($products) && ($category_info['category_id'] == xx) && ($this->customer->isLogged()) && ($this->customer->getCustomerGroupId() == yy)) { ?>
где, хх - id 4-й категории, yy - id группы 'premium'.

И в контроллер добавь:

$this->data['category_info'] = $category_info;

 Всё работает. Только товар закрытой  категории можно найти через поиск. Как исключить отображение товара на странице поиска???

Буду благодарен за решение....

Поделиться сообщением


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

Добрый!
Сразу прошу извинить за возможно идиотский вопрос: 1. как определить id категории и id группы пользователя.

Елы-палы, точно... :oops:

А у меня ассоциация была с городом Самара...

М-да, моск к концу дня ушел куда-то погулять... :ugeek:

 

По теме: я балда, условие не правильно было составлено (соображалка-то как у блондинки под вечер... :-D )

Надо так:

<?php if ((($products) && ($category_info['category_id'] == '20') && ($this->customer->getCustomerGroupId() == '2')) || (($products) && ($category_info['category_id'] != '20'))) { ?>

Все id, при необходимости, поменять на свои.

 

DEBUG ранее вставленный можно сносить.

 

P.S. Да, там айдишники в кавычки добавлены, потому как переменные имеют тип string.

Поделиться сообщением


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

http://joxi.ru/nAy9Np6HRZD0AZ

http://joxi.ru/Y2LkPlDiYRXgm6

Изменено пользователем Pascha

Поделиться сообщением


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

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу