-
Публікації
610 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем max1985
-
-
Здравствуйте! Подскажите есть ли решение вывода новостей в карточках товара. Т.е. выводить те новости к которым прикреплен рекомендуемый товар. ??
Спасибо!
-
На днях попробую запилить модуль на основе этого всего и выложу...
-
В 15.03.2019 в 19:19, MFX сказал:
Да, причем у выводимых категорий правильные ссылки.
Выводил только в графе "Уточнить поиск", но думаю без проблем можно и в меню, особенно если это не сторонний модуль.
-
В 09.03.2019 в 19:16, MFX сказал:
Можно подробнее, немного не понял, как именно получилось вывести!?
Вот тема, где общался сам с собой ))
Там чуть не до конца расписано и есть пару багов (точно сейчас не вспомню, доступа уже к сайту где это делал нет).... На тот момент смог отредактировать свою запись, не знаю почему...
-
В 02.03.2019 в 09:13, MFX сказал:
Нет к сожалению!(
Получилось сделать по примеру выбора дополнительных категория для товара. Только смысл в том что в той категории, где надо вывести дополнительные подкатегории указываю этот список (подкатегорий).
-
В общем получалось добавлять категории в базу, проблема была в скрипте.
Теперь пытаюсь вывести эти категории что добавляю на сайте.
В моделе добавляю
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 } ?>
Но что-то ничего не выводиться. Помогите пожалуйста разобраться!
-
В общем решил сделать выборку категорий, которые будут выводиться дополнительно к подкатегориям.
Начал так. Добавил новую таблицу в базе:
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 . "'"); } }
По идее с этого момента должны выбираться категории и добавляться в базу при сохранении категории. Но они даже не выбираются, подскажите что пропустил или не так сделал!
-
В 30.11.2017 в 18:34, MFX сказал:
Неужели никто не пробовал реализовывать таким образом категории!?)
Не нашли случайно решение?
-
Не подскажите есть ли такой модуль или реализация? Надо чтоб при создании категории можно было с Связях указать Главную категорию и Показывать в категориях (как в товаре на ocStory, только для категорий). А в ссылке на эту категорию использовался seo url из Главной категории что-бы не было дублей.
- 1
-
Уже сделал клон рекомендуемых. Спасибо!
- 1
-
1 час назад, markimax сказал:
За рекомендуемые товары отвечает даже не SEO CMS TOP 2
Вызывается штатный контроллер opencart extension/module/featured с товарами связанными в записи и выводится он понятное tpl шаблоном темы
Т е модуль в выводе рекомендуемых вообще не участвует только "предоставляет" товары в штатный модуль, который понятное использует шаблон темыА как его тогда можно видоизменить, не задев featured.tpl ?
-
Здравствуйте!
Какой файл отвечает за отображение Рекомендуемых товаров, которые прописываются в записи?
Я так понял используется шаблон модуля featured.tpl... Можно как-то поменять на другой?
Спасибо!
-
Можете подправить и выложить ocmod без лишнего мусора?
-
2 минуты назад, chukcha сказал:
О мАмАдАрАгАя - каждый раз при логине
Не знаю где вы это взяли, но это код из ПЛАТНОГО модуля (мне так кажется)
окмоды сделаные на коленке не комментируются
Знаете как сделать лучше?
-
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>
-
Нашел готовый ocmod для opencart, немного пришлось его переделать пол ocstor... теперь через админку в КТ можно указывать в каких группах отображать.
Всем спасибо за помощь!
-
5 минут назад, chukcha сказал:
Я имею модуль
restrict entity
Позволяет установить доступ к категориям или товарам из доступной группы.
Если сегодня речь идет об одном товаре, то завтра о 10-тиТам только один такой товар, который лучше не светить... Больше подобных не будет.
-
8 минут назад, fanatic сказал:
везде?
Желательно!
-
1 минуту назад, chukcha сказал:
только один?
Да!
-
Здравствуйте!
Подскажите как скрыть один товар не авторизованным пользователям?
-
49 минут назад, markimax сказал:
Другое дело Спасибо. Лучше вопросы задавать с аккаунта на который куплены модули
Сами понимаете вопросы могут задавать и варезники
Ваш вопрос смотреть надо а не гадать - поэтому доступы заполните в ТПСпасибо! Отправил запрос.
-
14 часов назад, markimax сказал:
Вашего логина нету в списках купивших на форуме
Пишите в ТП там где покупалиА теперь есть? senao это рабочий аккаунт...
-
4 часа назад, deeman сказал:
Нет, только править код модуля под себя
Подскажите пожалуйста в каком файле это правиться?
-
10 минут назад, deeman сказал:
Только править код модуля
А есть может решение?
Опции в виде товаров
в Opencart 2.x: Пошук модулів
Опубліковано:
Здравствуйте!
Нужен модуль с помощью которого, можно добавлять товары в список опций и чтоб когда покупатель выбирает определенную опцию в корзину будет добавляться товар и товар опции.
Что-то не получилось найти, но думаю такое должно быть... Появилась такая необходимость после интеграции магазина с 1с, в заказы не добавляются опции.
Спасибо!