Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


AVegas

Recommended Posts

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

Надіслати
Поділитися на інших сайтах


Как вариант..В контроллер 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 вызвал ошибку, но там я возможно не подходящее место в контроллере выбрал.

Надіслати
Поділитися на інших сайтах


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

 <?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 } ?>

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

Надіслати
Поділитися на інших сайтах

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
Надіслати
Поділитися на інших сайтах


  • 1 year later...
В 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
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

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

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

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

$data['logged'] = $this->customer->isLogged(); 
Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах

  • 1 year later...
В 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 } ?>

Спасибо вам! вот искал как ето сделать много неправильного и больше слов , а у вас коротко и четко сработало!!!

Окстор 2.3 проверено

вписал перед $data['return'] = $this->url->link('account/return', '', true);

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.