Перейти к содержанию
AVegas

Скрытие контента от определенных групп покупателей

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

ocStore 2.3.0.2.3, тема Arirdius Modern. Нужно скрыть кнопку "Добавить в корзину" и саму корзину от гостей и покупателей группы Default (которая по-умолчанию), при этом оставить для другой группы. Или же если упростить задачу, то скрыть от всех незарегистрированных. Нашел на форуме такой способ:

<?php if (!$this->customer->isLogged()) { ?>
тут КОД для незарегестрированных
<?php } else { ?>
тут КОД для зарегестрированных
<?php } ?>

Но с ним ошибка (пытался убрать кнопку "В корзину" со страницы товара): Notice: Undefined property: Template\PHP::$customer in /путь к файлу/product.tpl Fatal error: Call to a member function isLogged() on null in /путь к файлу/product.tpl

Ну и дабы не плодить темы второй вопрос, есть ли способ или модуль, чтобы количество опций (не количество самих опций, а именно количество доступных для заказа единиц опции) задавалось не для каждого товара в отдельности, а для категории или группы товаров? Пример: есть товары А, Б, В с опцией М. Всего на склад поступило 10 ед опции М. При покупке товара А + 1 М в остатке имеем 9 М, после покупки товара Б + 6 М - остаётся 3 М.

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


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

по первому правильно ошибка, данную функцию надо писать в контролере а не в шаблоне, т.е. в контроллере пишем что то вроде:

$data['hide_cart'] = true;
if ($this->customer->isLogged()) {

$data['hide_cart'] = false;

}

А уже в шаблоне:

<?php if ($hide_cart) { ?>
тут КОД для незарегестрированных
<?php } else { ?>
тут КОД для зарегестрированных
<?php } ?>

 

По второму надо морочиться и делать модуль

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


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

Можно решить с помощью модуля SEO CMS TOP, заменив кнопку к примеру на текст или просто убрать её для определенных групп покупателей, категорий либо для каждого товара отдельно.

Причем в модуле еще много полезного

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


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

MaDMaxX111, спасибо. Сколько может стоить подобный модуль под заказ?

prochet, благодарю, модуль действительно полезный, но там очень много функционала который не потребуется вовсе ).

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


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

я думаю 5 тр но надо по подробней пообщаться по поводу ТЗ

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


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

Как вариант..В контроллер product.php

(где то рядом с $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');)

$data['logged'] = $this->customer->isLogged(); 

в шаблон обернуть в условие 

<?php if ($logged) { ?>
......
<?php } ?>

 

  • +1 2

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


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

Добавил в контроллер catalog/controller/product/product.php:

$data['logged'] = $this->customer->isLogged(); 

Выше строки:

$data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');

Потов в product.tpl обернул кнопку корзины:

<?php if ($logged) { ?>
<div class="cart pull-left">
    <?php if ($quantity <= 0 && $aridiusinstock_status ) { ?>
    <button type="button" class="btn-instock" onclick="instock.add('<?php echo $product_id; ?>');" data-product-id="<?php echo $product_id; ?>"><?php echo $button_instock; ?></button>
    <?php } else { ?>
    <button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn-cart"><i class="fa fa-shopping-cart"></i> <?php echo $button_cart; ?></button>
    <?php if ($aridiusfastorder_status) { ?>
    <button type="button" id="fast-order" class="btn-cart"><i class="fa fa-clock-o"></i> <?php echo $button_title; ?></button>
    <?php } ?>
    <?php } ?>
</div>
<?php } ?>

Кнопка корзины пропала как для зарегистрированный, так и для гостей.

 

Способ, который предложил MaDMaxX111 вызвал ошибку, но там я возможно не подходящее место в контроллере выбрал.

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


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

Авторизованный

Скрытый текст

6512096678.jpg

 

Не авторизованный

Скрытый текст

8356687788.jpg

 

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


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

А какая ошибка?

 

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


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

У вас в шаблоне уже гора условий.

 <?php if ($quantity <= 0 && $aridiusinstock_status ) { ?>
    <button type="button" class="btn-instock" onclick="instock.add('<?php echo $product_id; ?>');" data-product-id="<?php echo $product_id; ?>"><?php echo $button_instock; ?></button>
    <?php } else { ?>
    <button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn-cart"><i class="fa fa-shopping-cart"></i> <?php echo $button_cart; ?></button>
    <?php if ($aridiusfastorder_status) { ?>
    <button type="button" id="fast-order" class="btn-cart"><i class="fa fa-clock-o"></i> <?php echo $button_title; ?></button>
    <?php } ?>
    <?php } ?>

Убирайте раз нужно только скрыть и вешайте то, что я написал.

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


Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, MaDMaxX111 сказал:

А какая ошибка?

 

Undefined variable: hide_cart in 

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


Ссылка на сообщение
Поделиться на другие сайты
54 минуты назад, Tom сказал:

У вас в шаблоне уже гора условий.


 <?php if ($quantity <= 0 && $aridiusinstock_status ) { ?>
    <button type="button" class="btn-instock" onclick="instock.add('<?php echo $product_id; ?>');" data-product-id="<?php echo $product_id; ?>"><?php echo $button_instock; ?></button>
    <?php } else { ?>
    <button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn-cart"><i class="fa fa-shopping-cart"></i> <?php echo $button_cart; ?></button>
    <?php if ($aridiusfastorder_status) { ?>
    <button type="button" id="fast-order" class="btn-cart"><i class="fa fa-clock-o"></i> <?php echo $button_title; ?></button>
    <?php } ?>
    <?php } ?>

Убирайте раз нужно только скрыть и вешайте то, что я написал.

В шаблоне условия насколько я понял это если товар в наличии и выводить вторую кнопку если включен быстрый заказ. Неужели конфликт с ними... А к условию которое вы предложили можно добавить GroupID ?

 

Попробовал поставить вне кода кнопки, сразу после подключения header, все равно скрыто для авторизованных и нет.

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

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


Ссылка на сообщение
Поделиться на другие сайты
45 минут назад, AVegas сказал:

Undefined variable: hide_cart in 

так как самую первую строчку не скопировали, да не соль.... то что не работает разбирайтесь, просто вначале вместо кнопки вставляйте какое-нибудь echo и смотрите что не так...

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


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

MaDMaxX111, ну не знаю даже. Просто в php я не разбираюсь совсем, где я мог ошибиться пойму. Вот поставил все как на скринах, в итоге слово TEST выводится как для зарегистрированных/авторизованных, так и для гостей, хотя для зарегистрированных должно быть TEST REG.
Скриншоты product.php и product.tpl, на них видно что и куда я вставляю:

Скрытый текст

 

1.thumb.PNG.2306010e7731c98e900e1ef5cd56a21c.PNG

2.thumb.PNG.0b9c173c9259f4f05dff89bb9a5c8dbd.PNG

 

 

 

Приношу извинения, мой косяк был. Я считал что если пользователь залогинился в админке, то это значит он залогинен и на сайте. Отсюда и проблема. В самом коде все правильно и работает как надо, любыми указанными здесь способами. Всем спасибо!

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

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


Ссылка на сообщение
Поделиться на другие сайты
В 20.07.2017 в 21:18, Tom сказал:

Как вариант..В контроллер product.php

(где то рядом с $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');)


$data['logged'] = $this->customer->isLogged(); 

в шаблон обернуть в условие 


<?php if ($logged) { ?>
......
<?php } ?>

 

 

 

Подскажите как поступить со списков товаров в производителях... по аналогу не выходит сделать

 

в контроллер -  \catalog\controller\product\manufacturer.php

в шаблон - \catalog\view\theme\шаблон\template\product\manufacturer_info.tpl

 

и в итоге Notice: Undefined variable: logged in не определенная переменная...

 

Подскажите где искать куда бежать где объявлять

 

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, dess сказал:

и в итоге Notice: Undefined variable: logged in не определенная переменная...

не там объявили
нужно внутри метода info

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


Ссылка на сообщение
Поделиться на другие сайты
49 минут назад, thentru сказал:

не там объявили
нужно внутри метода info

 

Я уже методом научного тыка пошел... получилось в это блоке

 

public function index() {

 

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

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


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

Обновить модификаторы, сбросить кэш

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


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

а можно ли таким способом скрыть конкретную подкатегорию для всех групп пользователей, кроме конкретной группы (сотрудники компании)?

я так понимаю, что это будет category.tpl, но что туда прописать?

И тут будет не совсем так

$data['logged'] = $this->customer->isLogged(); 

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


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

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

Но таки - да
Получить имя пользователя и его группы

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.