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

max1985

Користувачі
  • Публікації

    610
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем max1985

  1. Здравствуйте!

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

    Что-то не получилось найти, но думаю такое должно быть... Появилась такая необходимость после интеграции магазина с 1с, в заказы не добавляются опции.

    Спасибо!

  2. В 15.03.2019 в 19:19, MFX сказал:
      Показать контент

     

    Это немного не то!)

     

    _________________________________________

     

     

    Ничосе!) Прочитал!) А получилось в итоге вывести!?)

    Да, причем у выводимых категорий правильные ссылки. 

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

  3. В 09.03.2019 в 19:16, MFX сказал:

    Можно подробнее, немного не понял, как именно получилось вывести!?

    Вот тема, где общался сам с собой ))

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

  4. В 02.03.2019 в 09:13, MFX сказал:

    Нет к сожалению!(

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

  5. В общем получалось добавлять категории в базу, проблема была в скрипте. 

    https://prnt.sc/mr7ybw

    Теперь пытаюсь вывести эти категории что добавляю на сайте. 

    В моделе добавляю 

    public function getParentCategories($category_id) {
      $parent_category_data = array();
    
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_dop WHERE category_id = '" . (int)$category_id . "'");
    
      foreach ($query->rows as $result) {
       $parent_category_data[] = $result['parent_id'];
      }
    
      return $parent_category_data;
    }

    В контроллере

    if (isset($this->request->post['product_category'])) {
       $categories1 = $this->request->post['product_category'];
      } elseif (isset($this->request->get['category_id'])) {
       $categories1 = $this->model_catalog_category->getParentCategories($this->request->get['category_id']);
      } else {
       $categories1 = array();
    }
                  
    $data['product_categories'] = array();
    foreach ($categories1 as $category_id) {
    $category_info = $this->model_catalog_category->getCategory($category_id);
       if ($category_info) {
        $data['product_categories'][] = array(
         'category_id' => $category_info['category_id'],
         'name' => $category_info['name']
        );
       }
    }

    и в шаблоне вывожу так

    <?php foreach ($product_categories as $product_category) { ?>
                        <li class="col-lg-3 col-md-3 col-sm-6 col-xs-6 col-mobile"><?php echo $product_category['name']; ?></li>
    <?php } ?>

    Но что-то ничего не выводиться. Помогите пожалуйста разобраться!

  6. В общем решил сделать выборку категорий, которые будут выводиться дополнительно к подкатегориям. 

    Начал так. Добавил новую таблицу в базе:

    CREATE TABLE IF NOT EXISTS `oc_category_dop` (
      `category_id` int(11) NOT NULL,
      `parent_id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

    где oc поменял на свой

     

    В admin/view/template/catalog/category_form.tpl

    Добавил, после выбора Родительской категории:

    <div class="form-group">
                   <label class="col-sm-2 control-label" for="input-category"><span data-toggle="tooltip" title="<?php echo $help_category; ?>"><?php echo $entry_category; ?></span></label>
                   <div class="col-sm-10">
                      <input type="text" name="category" value="" placeholder="<?php echo $entry_category; ?>" id="input-category" class="form-control" />
                     <div id="product-category" class="well well-sm" style="height: 150px; overflow: auto;">
                        <?php foreach ($product_categories as $product_category) { ?>
                        <div id="product-category<?php echo $product_category['category_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo $product_category['name']; ?>
                          <input type="hidden" name="product_category[]" value="<?php echo $product_category['category_id']; ?>" />
                        </div>
                        <?php } ?>
                      </div>
                   </div>
                  </div>

    и скрипт в конце файла

    <script type="text/javascript"><!--
    $('input[name=\'category\']').autocomplete({
     'source': function(request, response) {
      $.ajax({
       url: 'index.php?route=catalog/category/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request),
       dataType: 'json',   
       success: function(json) {
        response($.map(json, function(item) {
         return {
          label: item['name'],
          value: item['category_id']
         }
        }));
       }
      });
     },
     'select': function(item) {
      $('input[name=\'category\']').val('');
      
      $('#product-category' + item['value']).remove();
      
      $('#product-category').append('<div id="product-category' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_category[]" value="' + item['value'] + '" /></div>'); 
     }
    });
    $('#product-category').delegate('.fa-minus-circle', 'click', function() {
     $(this).parent().remove();
    });  
      $('#product-category' + item['value']).remove();
      
      $('#product-category').append('<div id="product-category' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_category[]" value="' + item['value'] + '" /></div>'); 
     }
    });
    $('#product-category').delegate('.fa-minus-circle', 'click', function() {
     $(this).parent().remove();
    });
    //--></script>

    В admin/language/*/catalog/category.php добавил:

    $_['entry_category']         = 'Дополнительные категории';
    $_['help_category']          = 'Дополнительные категории для отображения';

    В admin/controller/catalog/category.php в protected function getForm() { добавил:

    $data['entry_category'] = $this->language->get('entry_category');
    $data['help_category'] = $this->language->get('help_category');

    и

     if (isset($this->request->post['product_category'])) {
       $categories1 = $this->request->post['product_category'];
      } elseif (isset($this->request->get['category_id'])) {
       $categories1 = $this->model_catalog_category->getParentCategories($this->request->get['category_id']);
      } else {
       $categories1 = array();
                    }
                  
                    $data['product_categories'] = array();
                   foreach ($categories1 as $category_id) {
                            $category_info = $this->model_catalog_category->getCategory($category_id);
    
       if ($category_info) {
        $data['product_categories'][] = array(
         'category_id' => $category_info['category_id'],
         'name' => ($category_info['path']) ? $category_info['path'] . ' > ' . $category_info['name'] : $category_info['name']
        );
       }
      }

    и в protected function getList() { добавил

    $data['categories1'] = array();		
    $results1 = $this->model_catalog_category->getCategories($filter_data);	
    foreach ($results1 as $result1) {
    $multipleCategories = $this->model_catalog_category->getMultipleParentCategories($result1['category_id']);
       $data['categories1'][] = array(
        'category_id' => $result1['category_id'],
        'name'        => $multipleCategories[0]['parentcategories'].$result1['name'],
        'sort_order'  => $result1['sort_order'],
        'edit'        => $this->url->link('catalog/category/edit', 'token=' . $this->session->data['token'] . '&category_id=' . $result1['category_id'] . $url, 'SSL'),
        'delete'      => $this->url->link('catalog/category/delete', 'token=' . $this->session->data['token'] . '&category_id=' . $result1['category_id'] . $url, 'SSL')
       );
    }

    Теперь идем в модель admin/model/catalog/category.php

    и добавляем новый метод

    public function getParentCategories($category_id) {
      $parent_category_data = array();
    
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_dop WHERE category_id = '" . (int)$category_id . "'");
    
      foreach ($query->rows as $result) {
       $parent_category_data[] = $result['parent_id'];
      }
    
      return $parent_category_data;
    }

    и

    public function getMultipleParentCategories($category_id) {
    
    $query = $this->db->query("SELECT CONCAT( CONCAT( '(', GROUP_CONCAT( cd1.name ORDER BY cp.level SEPARATOR ')(' ) ) , ') >' ) AS parentcategories FROM " . DB_PREFIX . "category_dop cmprt LEFT JOIN " . DB_PREFIX . "category_description cd1 ON ( cmprt.parent_id = cd1.category_id ) LEFT JOIN " . DB_PREFIX . "category_path cp ON ( cp.category_id = cmprt.parent_id ) WHERE cmprt.category_id='" . (int)$category_id . "'");             
      
                  
      return $query->rows;
     }

    Далее в этом же файле в моделе public function editCategory($category_id, $data) {

    добавляем

    $this->db->query("DELETE FROM " . DB_PREFIX . "category_dop WHERE category_id = '" . (int)$category_id . "'");
            if (isset($data['product_category'])) {
                foreach ($data['product_category'] as $parent_id) {
                                echo "Category parentid". $parent_id;
                     $this->db->query("INSERT INTO " . DB_PREFIX . "category_dop SET category_id = '" . (int)$category_id . "', parent_id = '" . (int)$parent_id . "'");
                }
            }

    в моделе public function addCategory($data) {

    if (isset($data['product_category'])) {
                foreach ($data['product_category'] as $parent_id) {
                                echo "Category parentid". $parent_id;
                     $this->db->query("INSERT INTO " . DB_PREFIX . "category_dop SET category_id = '" . (int)$category_id . "', parent_id = '" . (int)$parent_id . "'");
                }
            }

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

  7. Не подскажите есть ли такой модуль или реализация? Надо чтоб при создании категории можно было с Связях указать Главную категорию и Показывать в категориях (как в товаре на ocStory, только для категорий). А в ссылке на эту категорию использовался seo url из Главной категории что-бы не было дублей.

    • +1 1
  8. 1 час назад, markimax сказал:

     

    За рекомендуемые товары отвечает даже не SEO CMS TOP 2
    Вызывается штатный контроллер opencart extension/module/featured с товарами связанными в записи и выводится он понятное tpl шаблоном темы
    Т е модуль в выводе рекомендуемых вообще не участвует только "предоставляет" товары в штатный модуль, который понятное использует шаблон темы

    А как его тогда можно видоизменить, не задев featured.tpl ?

  9. Здравствуйте!

    Какой файл отвечает за отображение Рекомендуемых товаров, которые прописываются в записи?

    Я так понял используется шаблон модуля featured.tpl... Можно как-то поменять на другой?

    Спасибо!

  10. 2 минуты назад, chukcha сказал:

    О мАмАдАрАгАя - каждый раз при логине

    Не знаю где вы это взяли, но это код из ПЛАТНОГО модуля (мне так кажется)

    окмоды сделаные на коленке не комментируются :)

     

    Знаете как сделать лучше?

  11. 4 часа назад, chukcha сказал:

    Ну так поделитесь.. или нашел на просторах вареза?

     


    Но вы сказали что товар один, что вам админка не нужна
     

    Да, но так будет правильней.

    Выкладываю как у меня для ocstor 2.1. Может не подойти... Смотрим логи и правим.

    Спойлер
    
    <modification>
    	<name>Товары для группы клиентов</name>
    	<code>product-customer-group</code>
    	<version>2.1</version>
    	<author>max_1985</author>
    	<link>https://opencartforum.ru</link>
    	<file path="system/library/user.php">
    		<operation error="log" info="create a new table product_to_customer_groups if not exists">
    			<search><![CDATA[$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$this->session->data['user_id'] . "' AND status = '1'");]]></search>
    			<add position="after"><![CDATA[$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "product_to_customer_groups` (
        `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	`p2cg_product_id` int( 11  )  NOT  NULL ,
        `p2cg_customer_group_id` int( 11  )  NOT  NULL
    )ENGINE  =  MyISAM  DEFAULT CHARSET  = utf8 COLLATE  = utf8_bin");]]></add>
    		</operation>
    	</file>
    
    
    	<file path="admin/language/english/catalog/product.php">
    		<operation error="skip" info="Set language for customer group in product page">
    			<search><![CDATA[$_['error_keyword']          = 'SEO keyword already in use!';]]></search>
    			<add position="after"><![CDATA[$_['entry_customer_group']           = 'Customer Groups'; $_['help_product_to_customer_group']      = 'Select Customer Groups for this product. By default its available to all.';]]></add>
    		</operation>
    		<operation error="skip" info="Set language for customer group in product page v2.0.0.0">
    			<search><![CDATA[$_['error_model']            = 'Product Model must be greater than 1 and less than 64 characters!';]]></search>
    			<add position="after"><![CDATA[$_['entry_customer_group']           = 'Customer Groups'; $_['help_product_to_customer_group']      = 'Select Customer Groups for this product. By default its available to all.';]]></add>
    		</operation>
    	</file>
    	<file path="admin/language/russian/catalog/product.php">
    		<operation error="skip" info="Set language for customer group in product page">
    			<search><![CDATA[$_['error_keyword']]]></search>
    			<add position="before"><![CDATA[$_['entry_customer_group']           = 'Группы клиентов'; $_['help_product_to_customer_group']      = 'По умолчанию товар будет доступен для всех.';]]></add>
    		</operation>
    		<operation error="skip" info="Set language for customer group in product page v2.0.0.0">
    			<search><![CDATA[$_['error_model']]]></search>
    			<add position="before"><![CDATA[$_['entry_customer_group']           = 'Группы клиентов'; $_['help_product_to_customer_group']      = 'По умолчанию товар будет доступен для всех.';]]></add>
    		</operation>
    	</file>
    
    	<file path="admin/model/catalog/product.php">
    		<operation error="log" info="Create a new function to get product_id from table product to customer group">
    			<search><![CDATA[public function getProductStores($product_id) {]]></search>
    			<add position="before"><![CDATA[public function getProductCustomerGroups($product_id) {
    		$product_customer_group_data = array();
    		
    		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_customer_groups WHERE p2cg_product_id = '" . (int)$product_id . "'");
    
    		foreach ($query->rows as $result) {
    			$product_customer_group_data[] = $result['p2cg_customer_group_id'];
    		}
    		return $product_customer_group_data;
    	}]]></add>
    		</operation>
    
    		<operation error="log" info="Edit addProduct() to add data to table product to customer group">
    			<search><![CDATA[$product_id = $this->db->getLastId();]]></search>
    			<add position="after"><![CDATA[if (isset($data['p2cg_product_customer_groups'])) {
    			foreach ($data['p2cg_product_customer_groups'] as $customer_group_id) {
    				$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_customer_groups SET p2cg_product_id = '" . (int)$product_id . "', p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "'");
    			}
    		}]]></add>
    		</operation>
    
    		<operation error="log" info="Edit editProduct() to update table product to customer group">
    			<search index="0"><![CDATA[$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");]]></search>
    			<add position="before"><![CDATA[$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_customer_groups WHERE p2cg_product_id = '" . (int)$product_id . "'");
    
    if (isset($data['p2cg_product_customer_groups'])) {		
    			foreach ($data['p2cg_product_customer_groups'] as $customer_group_id) {
    				$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_customer_groups SET p2cg_product_id = '" . (int)$product_id . "', p2cg_customer_group_id = '" . (int)$customer_group_id . "'");
    			}
    		}]]></add>
    		</operation>
    		
    		<operation error="log" info="Edit deleteProduct() to update table product to customer group">
    			<search><![CDATA[$this->db->query("DELETE FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product_id . "'");]]></search>
    			<add position="after"><![CDATA[$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_customer_groups WHERE p2cg_product_id = '" . (int)$product_id . "'");]]></add>
    		</operation>
    	</file>
    
    	<file path="admin/controller/catalog/product.php">
    		<operation error="log" info="Load language of customer groups in product page">
    			<search><![CDATA[$data['entry_store'] = $this->language->get('entry_store');]]></search>
    			<add position="after"><![CDATA[$data['entry_customer_group'] = $this->language->get('entry_customer_group'); $data['help_product_to_customer_group'] = $this->language->get('help_product_to_customer_group');]]></add>
    		</operation>
    
    		<operation error="log" info="Fetch data of customer groups">
    			<search><![CDATA[$this->load->model('setting/store');]]></search>
    			<add position="before"><![CDATA[
    			if(VERSION == '2.1.0.1' || VERSION == '2.1.0.2'){
    			$this->load->model('customer/customer_group');
    			$data['p2cg_customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
    			} else {
    			$this->load->model('customer/customer_group');
    			$data['p2cg_customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
    			}
    		
    		if (isset($this->request->post['p2cg_product_customer_groups'])) {
    			$data['p2cg_product_customer_groups'] = $this->request->post['p2cg_product_customer_groups'];
    		} elseif (isset($this->request->get['product_id'])) {
    			$data['p2cg_product_customer_groups'] = $this->model_catalog_product->getProductCustomerGroups($this->request->get['product_id']);
    		} else {
    			$data['p2cg_product_customer_groups'] = array(0);
    		}]]></add>
    		</operation>
    	</file>
    
    	<file path="admin/view/template/catalog/product_form.tpl">
    		<operation error="log" info="Display customer groups on product page">
    			<search><![CDATA[<label class="col-sm-2 control-label" for="input-keyword"><span data-toggle="tooltip" title="<?php echo $help_keyword; ?>"><?php echo $entry_keyword; ?></span></label>]]></search>
    			<add position="before" offset="1"><![CDATA[<div class="form-group">
                    <label class="col-sm-2 control-label" for="input-p2cg_product_customer_groups"><span data-toggle="tooltip" title="<?php echo $help_product_to_customer_group; ?>"><?php echo $entry_customer_group; ?></span></label>
                    <div class="col-sm-10">
                      <div class="well well-sm" style="height: 150px; overflow: auto;">
                        <div class="checkbox">
                          <?php foreach ($p2cg_customer_groups as $customer_group) { ?>
    					  <div class="col-sm-10">
                          <label>
                            <?php if (in_array($customer_group['customer_group_id'], $p2cg_product_customer_groups)) { ?>
                            <input type="checkbox" name="p2cg_product_customer_groups[]" value="<?php echo $customer_group['customer_group_id']; ?>" checked="checked" />
                            <?php echo $customer_group['name']; ?>
                            <?php } else { ?>
                            <input type="checkbox" name="p2cg_product_customer_groups[]" value="<?php echo $customer_group['customer_group_id']; ?>" />
                        <?php echo $customer_group['name']; ?>
                            <?php } ?>
                          </label>
    					  </div>
                          <?php } ?>
                        </div>
                      </div>
                    </div>
                  </div>]]></add>
    		</operation>
    	</file>
    <!--////////////////////////////////////////////////////////////////////////////////////////-->
    	<file path="catalog/view/theme/*/template/common/header.tpl">
    		<operation error="log" info="Stop Errors ">
    			<search><![CDATA[<title><?php echo $title; ?></title>]]></search>
    			<add position="after"><![CDATA[<?php error_reporting(0);?>]]></add>
    		</operation>
    	</file>
    
    	<file path="catalog/model/catalog/product.php">
    
    		<operation error="skip" info="Disable fetch cache product and product.latest">
    			<search><![CDATA[$product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $customer_group_id . '.' . (int)$limit);]]></search>
    			<add position="replace"><![CDATA[$product_data = "";]]></add>
    		</operation>
    		
    		<operation error="skip" info="Disable fetch cache product.bestseller ">
    			<search><![CDATA[$product_data = $this->cache->get('product.bestseller.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'). '.' . $customer_group_id . '.' . (int)$limit);]]></search>
    			<add position="replace"><![CDATA[$product_data = "";]]></add>
    		</operation>
    
    		<operation error="log" info="Create Function getProductToCustomer() to get product data including table product_to_customer_groups">
    			<search><![CDATA[public function getTotalProductSpecials() {]]></search>
    			<add position="before"><![CDATA[public function getProductToCustomer($productID) {
    			
                $sql = " SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) WHERE p.product_id = '".$productID."' "; 
    			if($this->customer->isLogged()){
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."' ";
    			}
    			if (!$this->customer->isLogged()) {
    			$sql .= " AND  p2cg.p2cg_product_id IS NULL OR p2cg.p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' ";
    			}
    			$sql .= " GROUP BY p.product_id ";
    			$query = $this->db->query($sql);
                
    			if($query->num_rows){return true;}else{return false;}
            
    	}]]></add>
    		</operation>
    
    		<operation error="log" info="Change Function getTotalProducts() to get product data including table product_to_customer_groups">
    			<search index="1"><![CDATA[$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";]]></search>
    			<add position="replace"><![CDATA[$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2cc ON (p.product_id = p2cc.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2s.product_id = p2cg.p2cg_product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
    			]]></add>
    		</operation>
    		<operation error="log">
    			<search index="1"><![CDATA[$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_product_id IS NULL OR cp.path_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."' ";}
    			if (!$this->customer->isLogged()) {$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_product_id IS NULL OR cp.path_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."' ";}
    			]]></add>
    		</operation>
    		<operation error="log">
    			<search index="1"><![CDATA[$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_product_id IS NULL OR p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."'";}
    			if (!$this->customer->isLogged()) {$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_product_id IS NULL OR p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."'";}
    			]]></add>
    		</operation>
    		
    		<operation error="log" info="Change getProducts() MySql Query to get product data including table product_to_customer_groups">
    			<search><![CDATA[$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";]]></search>
    			<add position="replace" offset="16"><![CDATA[$sql = "SELECT p.product_id, p2c.category_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) ";]]></add>
    		</operation>
    		<operation error="log">
    			<search><![CDATA[$sql .= " GROUP BY p.product_id";]]></search>
    			<add position="before"><![CDATA[
    			if($this->customer->isLogged()){
    			if (!empty($data['filter_category_id'])) {
    			if (!empty($data['filter_sub_category'])) {
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR cp.path_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."' ";
    			} else {
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."' ";
    			}}}
    			if(!$this->customer->isLogged()){
    			if(!empty($data['filter_name'])){
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' ";
    			} elseif(!empty($data['filter_category_id'])){
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR p2c.category_id = '" . (int)$data['filter_category_id'] . "' AND p2cg.p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' ";
    			}	 else {
    			$sql .= " AND p2cg.p2cg_product_id IS NULL OR p2cg.p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' ";
    			}}
    			]]></add>
    		</operation>
    		
    		<operation error="log">
    			<search index="1"><![CDATA[$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "' AND p2cg.p2cg_product_id IS NULL OR p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."'";}
    			if(!$this->customer->isLogged()){$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "' AND p2cg.p2cg_product_id IS NULL OR p2cg.p2cg_customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "'";}
    			]]></add>
    		</operation>
    		
    		<operation error="log" info="Change getProduct() MySql Query to get product data including table product_to_customer_groups">
    			<search><![CDATA[$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM " . DB_PREFIX . "manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '" . (int)$this->config->get('config_language_id') . "') AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM " . DB_PREFIX . "manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '" . (int)$this->config->get('config_language_id') . "') AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p.product_id = p2cg.p2cg_product_id) WHERE (p.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_product_id IS NULL) OR (p.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '" .(int)$this->customer->getGroupId(). "') AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");}
    			if(!$this->customer->isLogged()){$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM " . DB_PREFIX . "manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '" . (int)$this->config->get('config_language_id') . "') AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p.product_id = p2cg.p2cg_product_id) WHERE (p.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_product_id IS NULL) OR (p.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '" .(int)$this->config->get('config_customer_group_id'). "') AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");}
    			]]></add>
    		</operation>
    
    		<operation error="log" info="Change getBestSellerProducts() MySql Query to get product data including table product_to_customer_groups">
    			<search><![CDATA[$query = $this->db->query("SELECT op.product_id, SUM(op.quantity) AS total FROM " . DB_PREFIX . "order_product op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "product` p ON (op.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE o.order_status_id > '0' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' GROUP BY op.product_id ORDER BY total DESC LIMIT " . (int)$limit);]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){
    $query = $this->db->query("SELECT op.product_id, SUM(op.quantity) AS total FROM " . DB_PREFIX . "order_product op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "product` p ON (op.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)
    
    LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)
    LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id)
    
    WHERE o.order_status_id > '0' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' 
    AND
    p2cg.p2cg_product_id IS NULL
    OR p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."'
    
    GROUP BY op.product_id ORDER BY total DESC LIMIT " . (int)$limit);
    			}
    			if(!$this->customer->isLogged()){
    $query = $this->db->query("SELECT op.product_id, SUM(op.quantity) AS total FROM " . DB_PREFIX . "order_product op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "product` p ON (op.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)
    
    LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)
    LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id)
    
    WHERE o.order_status_id > '0' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' 
    AND
    p2cg.p2cg_product_id IS NULL
    OR p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."'
    
    GROUP BY op.product_id ORDER BY total DESC LIMIT " . (int)$limit);
    			}
    			]]></add>
    		</operation>
    
    		<operation error="log" info="Change getProductSpecials() MySql Query to get product data including table product_to_customer_groups">
    			<search><![CDATA[$sql = "SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){
    $sql = "SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id)  WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND (ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND p2cg.p2cg_product_id IS NULL)   OR (ps.customer_group_id = p2cg.p2cg_customer_group_id AND  p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."') AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";
    			}
    			if(!$this->customer->isLogged()){
    $sql = "SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id)  WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND (ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND p2cg.p2cg_product_id IS NULL)  OR p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";
    			}
    			]]></add>
    		</operation>
    
    		<operation error="log" info="Change getProductRelated() MySql Query to get product data including table product_to_customer_groups">
    			<search><![CDATA[$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p2cg.p2cg_product_id IS NULL OR (pr.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."') ");
    			}
    			if(!$this->customer->isLogged()){
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p2cg.p2cg_product_id IS NULL OR (pr.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."') ");
    			}
    			]]></add>
    		</operation>
    
    		<operation error="log" info="Change getCategories() MySql Query to get product category data including table product_to_customer_groups">
    			<search><![CDATA[$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");]]></search>
    			<add position="replace"><![CDATA[
    			if($this->customer->isLogged()){$query = $this->db->query("SELECT p2c.* FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) WHERE (p2c.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_product_id IS NULL) OR (p2c.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->customer->getGroupId()."') GROUP BY p2c.category_id");} 
    			if(!$this->customer->isLogged()){$query = $this->db->query("SELECT p2c.* FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "product_to_customer_groups p2cg ON (p2c.product_id = p2cg.p2cg_product_id) WHERE (p2c.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_product_id IS NULL) OR (p2c.product_id = '" . (int)$product_id . "' AND p2cg.p2cg_customer_group_id = '".(int)$this->config->get('config_customer_group_id')."') GROUP BY p2c.category_id");}
    			]]></add>
    		</operation>
    	</file>
    	
    	<file path="catalog/controller/product/product.php">
    		<operation error="log" info="Check if the product is in restricted product">
    			<search><![CDATA[$product_info = $this->model_catalog_product->getProduct($product_id);]]></search>
    			<add position="after"><![CDATA[$product_prod2cust = $this->model_catalog_product->getProductToCustomer($product_id); if(!$product_prod2cust){$product_info = "";}]]></add>
    		</operation>
    	</file>
    
    	<file path="catalog/controller/product/manufacturer.php">
    		<operation error="log" info="Remove empty array">
    			<search><![CDATA[$results = $this->model_catalog_product->getProducts($filter_data);]]></search>
    			<add position="after"><![CDATA[$results = array_filter($results);]]></add>
    		</operation>
    	</file>
    	
    	<file path="catalog/controller/module/featured.php">
    		<operation error="skip" info="Check if the featured product is in restricted product">
    			<search><![CDATA[$products = array_slice($setting['product'], 0, (int)$setting['limit']);]]></search>
    			<add position="after"><![CDATA[foreach($products as $key => $value){$product_prod2cust = $this->model_catalog_product->getProductToCustomer($value); if(!$product_prod2cust){unset($products[$key]);}}]]></add>
    		</operation>
    		<operation error="skip" info="Check if the featured product is in restricted product v2.0.0.0">
    			<search><![CDATA[$products = explode(',', $this->config->get('featured_product'));]]></search>
    			<add position="after"><![CDATA[foreach($products as $key => $value){$product_prod2cust = $this->model_catalog_product->getProductToCustomer($value); if(!$product_prod2cust){unset($products[$key]);}}]]></add>
    		</operation>
    	</file>
    	
    	<file path="catalog/controller/product/search.php">
    		<operation error="log" info="Get searched product detail ">
    			<search><![CDATA[foreach ($results as $result) {]]></search>
    			<add position="after"><![CDATA[$categories = $this->model_catalog_product->getCategories($result['product_id']); if(sizeof($categories)>0){]]></add>
    		</operation>
    		<operation error="log">
    			<search><![CDATA['href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url)]]></search>
    			<add position="after" offset="2"><![CDATA[}]]></add>
    		</operation>
    	</file>
    </modification>

     

     

  12. 5 минут назад, chukcha сказал:

    Я имею модуль

    restrict entity

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

    Если сегодня речь идет об одном товаре, то завтра о 10-ти

    Там только один такой товар, который лучше не светить... Больше подобных не будет. 

  13. 49 минут назад, markimax сказал:

    Другое дело :) Спасибо. Лучше вопросы задавать с аккаунта на который куплены модули
    Сами понимаете вопросы могут задавать и варезники
    Ваш вопрос смотреть надо а не гадать - поэтому доступы заполните в ТП

    https://opencartadmin.com/support.html
     

    Спасибо! Отправил запрос.

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

Important Information

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