Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Скрывать товары от группы покупателей по условию


Recommended Posts

Всем доброго времени суток. Подскажите пожалуйси или модуль или решение ггде возможно посмотреть. Есть много товаров которые частично необходимо скрыть от группы покупателей, т оесть к примеру по икому условию:

Если в поле sku у товара написано "1" то товар видят все группы покупателей
Если в поле sku у товара написано "2" то товар видит только опрегделенная группа.

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

Edited by pasha2203
Link to comment
Share on other sites


контроллер:

if ($this->customer->isLogged()) {
    $data['customer_group_id'] = $this->customer->getGroupId();
} else {
    $data['customer_group_id'] = '');
}

 

шаблон:

<?php foreach ($products as $product) { ?>
    <?php if ($customer_group_id == 2) && ($product['sku'] == 2) { ?>
        <div class="product-layout product-list col-xs-12">
            // show product
        </div>
    <?php } ?>
<?php } ?>

 

Link to comment
Share on other sites

8 часов назад, pasha2203 сказал:

Всем доброго времени суток. Подскажите пожалуйси или модуль или решение ггде возможно посмотреть. Есть много товаров которые частично необходимо скрыть от группы покупателей, т оесть к примеру по икому условию:

Если в поле sku у товара написано "1" то товар видят все группы покупателей
Если в поле sku у товара написано "2" то товар видит только опрегделенная группа.

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

В данном случае. это лучше всего реализовать в запросе.

Насколько я понял поле sku - это у Вас id группы пользователя, правильно?

Если да, тогда лучше всего в запросе это использовать.

 

Игдем в файл:

catalog/model/catalog/product.php

Иещём в функции getProducts, getTotalProducts проверку:

if (!empty($data['filter_manufacturer_id'])) {

и перед ней добавляем

$sql .= " AND p.sku = '". (int)$this->customer->getGroupId() ."'";

И тогда сразу при запросах, в категории, страниэто производителя будут выводится товары, только для Вашей группы покупателей.

 

В данном решении поле SKU должно ОБЯЗАТЕЛЬНО иметь id группы покупателя!

 

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

Link to comment
Share on other sites

  • 2 weeks later...
В 13.05.2019 в 08:50, OCappLab сказал:

p.sku = '". (int)$this->customer->getGroupId() ."'";

подразумевает что товар принадлежит только одной группе

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

Restrict Entity - Access Customer Group

позволяет привязывать  товары и категории различным группам
 

  • +1 1
Link to comment
Share on other sites

В 13.05.2019 в 08:50, OCappLab сказал:

В данном случае. это лучше всего реализовать в запросе.

Насколько я понял поле sku - это у Вас id группы пользователя, правильно?

Если да, тогда лучше всего в запросе это использовать.

 

Игдем в файл:

catalog/model/catalog/product.php

Иещём в функции getProducts, getTotalProducts проверку:

if (!empty($data['filter_manufacturer_id'])) {

и перед ней добавляем

$sql .= " AND p.sku = '". (int)$this->customer->getGroupId() ."'";

И тогда сразу при запросах, в категории, страниэто производителя будут выводится товары, только для Вашей группы покупателей.

 

В данном решении поле SKU должно ОБЯЗАТЕЛЬНО иметь id группы покупателя!

 

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

нет в sku бугдет всего два параметра к примеру 12345 и 54321,ик вот если покупатель принадлежит к группе "опт" то он видит товар с sku 12345 и 54321, если покупатель принадлежит к группе розница то он видит товар у которых sku 54321.Данное условие не должно задаваться в товаре каждый раз при создании товара, необходимо просто единожды прописать в когде и на постоянной основе

Edited by pasha2203
Link to comment
Share on other sites


32 минуты назад, pasha2203 сказал:

нет в sku бугдет всего два параметра к примеру 12345 и 54321,ик вот если покупатель принадлежит к группе "опт" то он видит товар с sku 12345 и 54321, если покупатель принадлежит к группе розница то он видит товар у которых sku 54321.Данное условие не должно задаваться в товаре каждый раз при создании товара, необходимо просто единожды прописать в когде и на постоянной основе

Судя из этого, нужно условие при выпотому чторке чуть изменить. Я предполагал, что SKU это и бугдет ID группы покупателя.

 

Полулиться что-то типо икого:

if ($this->customer->getGroupId() == 2) {
	$sql .= " AND p.sku = '54321'";
}

Ггде 2 - это ID группы оптовиков.

Тоесть, если бугдет оптовик смотреть товары, тогда у него будут отображаться только товары ггде SKU имеет значение 54321.

 

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

 

Примерно я понял Вашу логику. У Вас есть товары, какие можно купить как оптом, ик и в розницу. Но не все розничные товары Вы продаете оптом. Тогда, думаю, проблемы не бугдет в том, что не авторизированные оптовики будут вигдеть весь ассортимент товара. 

Link to comment
Share on other sites

28 минут назад, OCappLab сказал:

Судя из этого, нужно условие при выпотому чторке чуть изменить. Я предполагал, что SKU это и бугдет ID группы покупателя.

 

Полулиться что-то типо икого:

if ($this->customer->getGroupId() == 2) {
	$sql .= " AND p.sku = '54321'";
}

Ггде 2 - это ID группы оптовиков.

Тоесть, если бугдет оптовик смотреть товары, тогда у него будут отображаться только товары ггде SKU имеет значение 54321.

 

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

 

Примерно я понял Вашу логику. У Вас есть товары, какие можно купить как оптом, ик и в розницу. Но не все розничные товары Вы продаете оптом. Тогда, думаю, проблемы не бугдет в том, что не авторизированные оптовики будут вигдеть весь ассортимент товара. 

немного не ик опт должен вигдеть весь товар,а вот не авторизированне пользователи и розниа должн вигдетьть только часть товара

Link to comment
Share on other sites


20 минут назад, pasha2203 сказал:

немного не ик опт должен вигдеть весь товар,а вот не авторизированне пользователи и розниа должн вигдетьть только часть товара

Тогда

51 минуту назад, OCappLab сказал:

Ггде 2 - это ID группы оптовиков.

Группа розницы. И, на вскакий случай, добавить проверку на 0. и полулится

if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	$sql .= " AND p.sku = '12345'";
}

Ггде 1 - это ID группы по-умолчанию.

 

Это конечно костыль. Можно сгделать в вигде доп настройки в настройке системы. Чтоб была настройка какие группы что видят и что не видят.

  • +1 1
Link to comment
Share on other sites

В 24.05.2019 в 15:28, OCappLab сказал:

Тогда

Группа розницы. И, на вскакий случай, добавить проверку на 0. и полулится

if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	$sql .= " AND p.sku = '12345'";
}

Ггде 1 - это ID группы по-умолчанию.

 

Это конечно костыль. Можно сгделать в вигде доп настройки в настройке системы. Чтоб была настройка какие группы что видят и что не видят.

можите подсказать как икое реализовать если вам конечно не сложно

Link to comment
Share on other sites


Спасипотому что и ик уже много подсказали.не буду наглеть.Ребяи подскажите ггде ошибка в когде почему то не прописуються изменения в могдели при усиновке модификатора

Спойлер
<modification>
	<name>JGN</name>
	<code>product</code>
	<version>1</version>
	<author>tet.ru</author>
	<link>http://tet.ru</link>
	
	<file path="catalog/model/catalog/product.php">
        <operation error="skip">
            <search index="0"><![CDATA[if (!empty($data['filter_category_id']))]]></search>
            <add position="before"><![CDATA[
				if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	            $sql .= " AND p.upc = 'Опт'";
                }				
			]]></add>
        </operation>	
	<operation error="skip">
            <search index="1"><![CDATA[if (!empty($data['filter_category_id']))]]></search>
            <add position="before"><![CDATA[
				if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	            $sql .= " AND p.upc = 'Опт'";
                }				
			]]></add>
        </operation>	
	</file>	
</modification>

 

 

Edited by pasha2203
Link to comment
Share on other sites


В 26.05.2019 в 00:20, pasha2203 сказал:

Спасипотому что и ик уже много подсказали.не буду наглеть.Ребяи подскажите ггде ошибка в когде почему то не прописуються изменения в могдели при усиновке модификатора

  Скрыть контент

<modification>
	<name>JGN</name>
	<code>product</code>
	<version>1</version>
	<author>tet.ru</author>
	<link>http://tet.ru</link>
	
	<file path="catalog/model/catalog/product.php">
        <operation error="skip">
            <search index="0"><![CDATA[if (!empty($data['filter_category_id']))]]></search>
            <add position="before"><![CDATA[
				if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	            $sql .= " AND p.upc = 'Опт'";
                }				
			]]></add>
        </operation>	
	<operation error="skip">
            <search index="1"><![CDATA[if (!empty($data['filter_category_id']))]]></search>
            <add position="before"><![CDATA[
				if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	            $sql .= " AND p.upc = 'Опт'";
                }				
			]]></add>
        </operation>	
	</file>	
</modification>

 

 

Вот ик попробуйте:

Спойлер
<?xml version="1.0" encoding="utf-8"?>
<modification>
	<code>JGN</code>
	<name>For pasha2203</name>
	<version>1.0.0</version>
	<author>OCappLab</author>
	<link>https://ocapplab.com/</link>
	<file path="catalog/model/catalog/product.php">
		<operation error="skip">
			<search><![CDATA[if (!empty($data['filter_manufacturer_id'])) {]]></search>
			<add position="before"><![CDATA[
	        if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
            	$sql .= " AND p.upc = 'Опт'";
            }
			]]></add>
    	</operation>
	</file>
</modification>

 

Если не было изменений в когде бугдет рилиить.

 

P.S. проверял на OCstore 2.3

Link to comment
Share on other sites

Здравствуйте, тоже интересная тема.

я кое что не допонял

у меня есть две группы покупателей

в у товара в поле upt бугдет писать Опт

но как прикрепить к группе это слово, подскажите пожалуйси ?

усиновил последнее сообещёние в вигде  дополнение от OCappLab 

но чот я не могу понять как бугдет слово Опт подхватывать группу ?

Link to comment
Share on other sites


17 часов назад, ampeklol сказал:

но чот я не могу понять как бугдет слово Опт подхватывать группу ?

никак

17 часов назад, ampeklol сказал:

усиновил последнее сообещёние в вигде  дополнение от OCappLab 

вы понимаете что им происходит?

// если игдентификатор группы пользователя равен 0 или 1
if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
	// в запрос к базе добаляем условие, чтобы выбрались только те товары у который upc = 'Опт'
	$sql .= " AND p.upc = 'Опт'";
}

 

Link to comment
Share on other sites

В 23.05.2019 в 09:13, chukcha сказал:

подразумевает что товар принадлежит только одной группе

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

Restrict Entity - Access Customer Group

позволяет привязывать  товары и категории различным группам
 

все давно есть

Link to comment
Share on other sites

14 минут назад, chukcha сказал:

все давно есть

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

 

Link to comment
Share on other sites


53 минуты назад, chukcha сказал:

а прописывать в импорте легче?

используем парсер который рилииет по крону и прописать поле upc=Опт  проещё простого.

Link to comment
Share on other sites


В 28.05.2019 в 13:05, OCappLab сказал:

Вот ик попробуйте:

  Скрыть контент

<?xml version="1.0" encoding="utf-8"?>
<modification>
	<code>JGN</code>
	<name>For pasha2203</name>
	<version>1.0.0</version>
	<author>OCappLab</author>
	<link>https://ocapplab.com/</link>
	<file path="catalog/model/catalog/product.php">
		<operation error="skip">
			<search><![CDATA[if (!empty($data['filter_manufacturer_id'])) {]]></search>
			<add position="before"><![CDATA[
	        if ($this->customer->getGroupId() == 0 or $this->customer->getGroupId() == 1) {
            	$sql .= " AND p.upc = 'Опт'";
            }
			]]></add>
    	</operation>
	</file>
</modification>

 

Если не было изменений в когде бугдет рилиить.

 

P.S. проверял на OCstore 2.3

Спасипотому что вам, понял свою ошибку, Для тех кто бугдет копировать донный код, не забываем про скрытые символы которые икже тянуться при копировании

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.