Jump to content

Recommended Posts

2 часа назад, freelancer сказал:

@pahanmcs как проверить?

Вот настройки

https://prnt.sc/n64w15

https://prnt.sc/n64w76

В этом случае не работает нижний фильтр Ингредиенты (хотя на методе ИЛИ он работает):

Пример https://prnt.sc/n64wml если на нижнем выбрать фильтр креветки, то ничего не происходит, хотя атрибуты заданы https://prnt.sc/n64ym0 или

если же начать с нижнего фильтра Ингредиенты, то вообще не фильтруется, но на методе ИЛИ работает

Заметил, что при сохранении настроек стал долго думать https://prnt.sc/n64wce

Из последних изменений только установил сертификат https, включил SSL и конфиги изменил только где протокол соответствующий define('HTTPS_SERVER'..) и define ('HTTPS_IMAGE), редирект не делал. Сайт доступен по 2 протоколам.

 

Share this post


Link to post
Share on other sites
3 часа назад, freelancer сказал:

@pahanmcs мне нужно включить И и посмотреть

@freelancerможет ИЛИ? Сейчас же И включено, как на скриншотах.

На 2-х вкладках?

Share this post


Link to post
Share on other sites

@pahanmcs сейчас если выбрать два атрибуты, то сервер отдает 502, а должен 200 или текст ошибки

Share this post


Link to post
Share on other sites

@freelancer Спасибо, хостер решил мою проблему с 502 ошибкой по фильтру

 

Share this post


Link to post
Share on other sites

Здравствуйте! перенесли домен на https и пишет Домены не совпадают!

пробывал удалить лицензию и заного, ничего не помогает

домен tutbag.ru

Share this post


Link to post
Share on other sites

@freelancer, у меня видимо в вашем фильтре блокируется скрипт спойлера https://dostavkapicci.ru/zakaz-pizzy/

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

<script type="text/javascript">
$(document).ready(function(){
$('.opening2').click(function(){
$(this).parent().children('div.sp2').toggle('normal');
return false;
});
});
</script>

 

Share this post


Link to post
Share on other sites

на мобильной версии тоже работает без фильтра

Share this post


Link to post
Share on other sites
Posted (edited)

@freelancer, скажите пжлста, в каком месте мне разместить этот скрипт вашего модуля, чтобы он выполнялся?

шаблон

<a class="opening2" href="javscript://">+</a>

если в контроллер модуля в php вставить, то скрипт спойлера работает, но слетает кодировка

подключение скрипта в шапке или подвале сайта не работает

возможно надо добавить через $this->document->addScript в контроллере, но не знаю место

Edited by pahanmcs

Share this post


Link to post
Share on other sites
1 час назад, freelancer сказал:

@pahanmcs вставьте в сам шаблон

filterpro_products.tpl

@freelancer, вставлял конечно, в коде появляется скрипт, но не в этом дело, почему-то именно с вашим фильтром не хочет работать в паре.

 

при замене замене конструкции

<a class="opening2" href="javscript://">+</a>

на 

<span class="opening2">+</span>

все равно в категории с фильтром не работает, в остальных работает

может ли быть конфликт подключаемых библиотек?

Share this post


Link to post
Share on other sites

Добрый день Freelancer. Я оплатил за модуль filter pro случайно ошибся с версией мне нужно для Ocstore 2.3 Пожалуйста дайте релиз для версии 2.3 . На какой домен он будет установлен я писал вам в ЛС .

 

Пожалуйста помогите с нужной версией. 

Share this post


Link to post
Share on other sites
5 часов назад, freelancer сказал:

@pahanmcs где можно увидеть то, что вы делаете?

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

Share this post


Link to post
Share on other sites

Здравствуйте! Подскажите в чем может быть проблема. На версии 2.4 сео настройка работает нормально, ставлю версию v2.5.17.6_beta (speed), корректно не работает. Переходит только на сам атрибут, а мета-теги не отображает.

Share this post


Link to post
Share on other sites

Здравствуйте 

 

В фильтре можно сортировать порядок вывода атрибутов? У нас все атрибуты в одной группе атрибутов:

1

2

3

4

 

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

2

4

3

Share this post


Link to post
Share on other sites

@qweezz

тут есть про сортировки для разных версий

Share this post


Link to post
Share on other sites

Добрый день! Столкнулся с проблемой, покупал лицензию Вашего фильтра еще лет 5 назад.

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

Share this post


Link to post
Share on other sites

@freelancer, здравствуйте, прошу ответить на личное сообщение от 21.05. по вопросу поддержки модуля 

Share this post


Link to post
Share on other sites
Posted (edited)
В 13.05.2019 в 13:23, promikes сказал:

Вот сейчас делаем переход на https, т.к. уже требуют все рекламные площадки...

Тоже в процессе перехода на https. Вопрос о лицензии данного модуля "filterpro v2.4.4(seo)" и "SeoGen 4.1" очень актуален!

Без ясности данного вопроса переходить не хочется )

С остальными авторами модулей в процессе выяснения.

 

freelancer, написАл в ЛС

Edited by Zapuzin

Share this post


Link to post
Share on other sites
Posted (edited)

Не дождался ответа и перешёл на https.

Все лицензионные модули, в том числе и данные, работают как и работали. Проблем не обнаружил )

По остальным модулям был спокоен, так как разработчики вышли на связь и подтвердили, что от перехода с http на https лицензия сохраняется.

 

freelancer, уже не актуально.

 

Edited by Zapuzin

Share this post


Link to post
Share on other sites
Posted (edited)

filterpro_v2.4.4(seo) (29.02.2016, #433262)

ocStore-1.5.5.1.2 

Установлен Product Display Settings vqmod  В целом этот модуль с фильтром подружил, осталась только одна проблемка.

Вот её никак не могу самостоятельно побороть )

Если товара нет в наличии, то "Наличие" отображается правильно, на том языке, который выбран на сайте.

Если товар есть в наличии, то "Наличие" отображается неправильно - "pds_instock".  Вот скрины для наглядности:

Наличие без фильтра:

1612920957___.png.6288b0a0162a6fdd08bcfd36e607756c.png

1137140394____2.thumb.png.b4df3a7e5a579b4083a262d9e35105f5.png

 

Наличие с фильтром:

 

1610784317__.png.5ef3ca929fc11135956a3346f5faba52.png

1721026006___2.thumb.png.666ced85414b07252ca2b93d5bf9d425.png

 

 

             "catalog/controller/product/category.php" из файла "product-display-settings.xml":

 

Спойлер

	<file name="catalog/controller/product/category.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>

 

 

             "catalog/controller/module/filterpro.php" из файла "product-display-settings.xml":

Спойлер

	<file name="catalog/controller/module/filterpro.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>		
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>

 

 

         Вот языковой файл "catalog/language/russian/product/pds.php":

Спойлер

<?php
$_['pds_model']      = 'Код товара:';
$_['pds_sku']        = 'Страна производитель:';
$_['pds_brand']      = 'Бренд:';
$_['pds_upc']        = 'UPC:';
$_['pds_location']   = 'Гарантия:';
$_['pds_stock']      = 'Наличие:';
$_['pds_instock']    = 'В наличии:';
$_['pds_weight']     = 'Вес:';
?>

 

 

 

                     " vq2-catalog_controller_module_filterpro.php"

Спойлер

<?php
class ControllerModuleFilterPro extends Controller {

	protected function index($setting) {
		if($setting['type'] == 1) {
			$this->language->load('product/filter');
			$this->data['text_display'] = $this->language->get('text_display');
			$this->data['text_list'] = $this->language->get('text_list');
			$this->data['text_grid'] = $this->language->get('text_grid');
$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');
			$this->data['text_sort'] = $this->language->get('text_sort');
			$this->data['text_limit'] = $this->language->get('text_limit');

			$sort = 'p.sort_order';
			$order = 'ASC';
			$limit = $this->config->get('config_catalog_limit');

			$url = '';

			if(isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}

			$this->data['sorts'] = array();

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_default'),
				'value' => 'p.sort_order-ASC',
				'href' => $this->url->link('product/filter', 'sort=p.sort_order&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_name_asc'),
				'value' => 'pd.name-ASC',
				'href' => $this->url->link('product/filter', 'sort=pd.name&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_name_desc'),
				'value' => 'pd.name-DESC',
				'href' => $this->url->link('product/filter', 'sort=pd.name&order=DESC' . $url)
			);

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_price_asc'),
				'value' => 'p.price-ASC',
				'href' => $this->url->link('product/filter', 'sort=p.price&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_price_desc'),
				'value' => 'p.price-DESC',
				'href' => $this->url->link('product/filter', 'sort=p.price&order=DESC' . $url)
			);

			if($this->config->get('config_review_status')) {
				$this->data['sorts'][] = array(
					'text' => $this->language->get('text_rating_desc'),
					'value' => 'rating-DESC',
					'href' => $this->url->link('product/filter', 'sort=rating&order=DESC' . $url)
				);

				$this->data['sorts'][] = array(
					'text' => $this->language->get('text_rating_asc'),
					'value' => 'rating-ASC',
					'href' => $this->url->link('product/filter', 'sort=rating&order=ASC' . $url)
				);
			}

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_model_asc'),
				'value' => 'p.model-ASC',
				'href' => $this->url->link('product/filter', 'sort=p.model&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text' => $this->language->get('text_model_desc'),
				'value' => 'p.model-DESC',
				'href' => $this->url->link('product/filter', 'sort=p.model&order=DESC' . $url)
			);

			$url = '';

			if(isset($this->request->get['sort'])) {
				$url .= 'sort=' . $this->request->get['sort'];
			}

			if(isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			$this->data['limits'] = array();

			$this->data['limits'][] = array(
				'text' => $this->config->get('config_catalog_limit'),
				'value' => $this->config->get('config_catalog_limit'),
				'href' => $this->url->link('product/filter', $url . '&limit=' . $this->config->get('config_catalog_limit'))
			);

			$this->data['limits'][] = array(
				'text' => 25,
				'value' => 25,
				'href' => $this->url->link('product/filter', $url . '&limit=25')
			);

			$this->data['limits'][] = array(
				'text' => 50,
				'value' => 50,
				'href' => $this->url->link('product/filter', $url . '&limit=50')
			);

			$this->data['limits'][] = array(
				'text' => 75,
				'value' => 75,
				'href' => $this->url->link('product/filter', $url . '&limit=75')
			);

			$this->data['limits'][] = array(
				'text' => 100,
				'value' => 100,
				'href' => $this->url->link('product/filter', $url . '&limit=100')
			);


			$this->data['sort'] = $sort;
			$this->data['order'] = $order;
			$this->data['limit'] = $limit;

			$this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');

			$this->data += $this->language->load('product/category');
			$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));

			if(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filterpro_container.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/module/filterpro_container.tpl';
			} else {
				$this->template = 'default/template/module/filterpro_container.tpl';
			}
		} else {
			$this->language->load('module/filterpro');

			if (isset($this->request->get['sort'])) {
				$sort = $this->request->get['sort'];
			} else {
				$sort = 'p.sort_order';
			}

			if (isset($this->request->get['order'])) {
				$order = $this->request->get['order'];
			} else {
				$order = 'ASC';
			}

			if (isset($this->request->get['page'])) {
				$page = $this->request->get['page'];
			} else {
				$page = 1;
			}

			if (isset($this->request->get['limit'])) {
				$limit = $this->request->get['limit'];
			} else {
				$limit = $this->config->get('config_catalog_limit');
			}

			$this->data['sort'] = $sort;
			$this->data['order'] = $order;
			$this->data['page'] = $page;
			$this->data['limit'] = $limit;

			$this->data['text_tax'] = $this->language->get('text_tax');
			$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_out_of_stock'] = $this->language->get('button_out_of_stock');
			$this->data['button_wishlist'] = $this->language->get('button_wishlist');
			$this->data['button_compare'] = $this->language->get('button_compare');
			$this->data['text_price_range'] = $this->language->get('text_price_range');
			$this->data['text_manufacturers'] = $this->language->get('text_manufacturers');
			$this->data['text_tags'] = $this->language->get('text_tags');
			$this->data['text_categories'] = $this->language->get('text_categories');
			$this->data['text_attributes'] = $this->language->get('text_attributes');
			$this->data['text_all'] = $this->language->get('text_all');
			$this->data['clear_filter'] = $this->language->get('clear_filter');
			$this->data['text_instock'] = $this->language->get('text_instock');
			$this->data['text_filer_special'] = $this->language->get('text_filer_special');
			$this->data['text_filer_news'] = $this->language->get('text_filer_news');
			$this->data['text_show_filer_special'] = $this->language->get('text_show_filer_special');

			$this->data['pds_sku'] = $this->language->get('pds_sku');
			$this->data['pds_upc'] = $this->language->get('pds_upc');
			$this->data['pds_location'] = $this->language->get('pds_location');
			$this->data['pds_model'] = $this->language->get('pds_model');
			$this->data['pds_brand'] = $this->language->get('pds_brand');
			$this->data['pds_stock'] = $this->language->get('pds_stock');
			$this->data['symbol_right'] = $this->currency->getSymbolRight();
			$this->data['symbol_left'] = $this->currency->getSymbolLeft();

			$this->data['setting'] = $setting;

			if(VERSION == '1.5.0') {
				$filterpro_setting = unserialize($this->config->get('filterpro_setting'));
			} else {
				$filterpro_setting = $this->config->get('filterpro_setting');
			}

			$this->data['text_show_filer_news'] = sprintf($this->language->get('text_show_filer_news'), $filterpro_setting['news_days']);
			
			$this->data['heading_title'] = $filterpro_setting['filterpro_name'];

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

			$is_special = isset($this->request->get['route']) && $this->request->get['route'] == "product/special";
			$is_bydate = isset($this->request->get['route']) && $this->request->get['route'] == "product/productsbydate";

			$category_id = false;
			$this->data['path'] = "";
			if(isset($this->request->get['path'])) {
				$this->data['path'] = $this->request->get['path'];
				$parts = explode('_', (string)$this->request->get['path']);
				$category_id = array_pop($parts);
			}

			$manufacturer_id = false;
			if(isset($this->request->get['manufacturer_id'])) {
				$manufacturer_id = $this->request->get['manufacturer_id'];
				$data = array(
					'filter_manufacturer_id' => $this->request->get['manufacturer_id']
				);
			} else {
				$data = array(
					'filter_category_id' => $category_id,
					'filter_sub_category' => isset($filterpro_setting['subcategories'])
				);
			}

			$this->load->model('catalog/product');
			$product_total = $this->model_catalog_product->getTotalProducts($data);
			if($product_total < 2) {
				return;
			}

			$this->data['category_id'] = $category_id;

			$data = array('category_id' => $category_id, 'manufacturer_id' => $manufacturer_id, 'special' => $is_special, 'by_date' => $is_bydate,);

			$this->load->model('module/filterpro');

			$this->data['manufacturers'] = false;
			if(isset($this->request->get['manufacturer_id'])) {
				$this->data['manufacturer_id'] = $this->request->get['manufacturer_id'];
			} else {
				if($filterpro_setting['display_manufacturer'] != 'none') {
					$this->data['manufacturers'] = $this->model_module_filterpro->getManufacturers($data);
					$this->data['display_manufacturer'] = $filterpro_setting['display_manufacturer'];
					$this->data['expanded_manufacturer'] = isset($filterpro_setting['expanded_manufacturer']) ? 1 : 0;
				}
			}
			$this->data['options'] = $this->model_module_filterpro->getOptions($data);
			$this->load->model('tool/image');
			foreach($this->data['options'] as $i => $option) {
				if(!isset($filterpro_setting['display_option_' . $option['option_id']])) {
					$filterpro_setting['display_option_' . $option['option_id']] = 'none';
				}
				$display_option = $filterpro_setting['display_option_' . $option['option_id']];
				if($display_option != 'none') {
					$this->data['options'][$i]['display'] = $display_option;
					$this->data['options'][$i]['expanded'] = isset($filterpro_setting['expanded_option_' . $option['option_id']]) ? 1 : 0;
					foreach($this->data['options'][$i]['option_values'] as $j => $option_value) {
						$this->data['options'][$i]['option_values'][$j]['thumb'] = $this->model_tool_image->resize($this->data['options'][$i]['option_values'][$j]['image'], (int)$filterpro_setting['option_images_w'], (int)$filterpro_setting['option_images_h']);
					}
				} else {
					unset($this->data['options'][$i]);
				}
			}
			$this->data['tags'] = array();


			if(version_compare(VERSION, "1.5.4") <= 0 && $filterpro_setting['display_tags'] != 'none') {
				$this->data['tags'] = $this->model_module_filterpro->getTags($data);
				$this->data['expanded_tags'] = isset($filterpro_setting['expanded_tags']) ? 1 : 0;
			}

			$this->data['categories'] = false;
			if($filterpro_setting['display_categories'] != 'none') {
				$this->data['categories'] = $this->model_module_filterpro->getSubCategories($data);
				$this->data['expanded_categories'] = isset($filterpro_setting['expanded_categories']) ? 1 : 0;
			}

			$this->data['attributes'] = $this->model_module_filterpro->getAttributes($data);


			foreach($this->data['attributes'] as $j => $attribute_group) {
				foreach($attribute_group['attribute_values'] as $attribute_id => $attribute) {
					if(!isset($filterpro_setting['display_attribute_' . $attribute_id])) {
						$filterpro_setting['display_attribute_' . $attribute_id] = 'none';
					}
					$display_attribute = $filterpro_setting['display_attribute_' . $attribute_id];
					if($display_attribute != 'none') {
						if($display_attribute == 'slider') {
							$values = $this->data['attributes'][$j]['attribute_values'][$attribute_id]['values'];
							$first = $values[0];
							$this->data['attributes'][$j]['attribute_values'][$attribute_id]['suffix'] = preg_replace("/^[0-9]*(\\.[0-9]*)?/", '', $first);
							$values = array_map('floatVal', $values);
							$values = array_unique($values);
							sort($values);
							$this->data['attributes'][$j]['attribute_values'][$attribute_id]['values'] = $values;
						}
						$this->data['attributes'][$j]['attribute_values'][$attribute_id]['display'] = $display_attribute;
						$this->data['attributes'][$j]['attribute_values'][$attribute_id]['expanded'] = isset($filterpro_setting['expanded_attribute_' . $attribute_id]) ? 1 : 0;
					} else {
						unset($this->data['attributes'][$j]['attribute_values'][$attribute_id]);
						if(!$this->data['attributes'][$j]['attribute_values']) {
							unset($this->data['attributes'][$j]);
						}
					}
				}
			}

			$this->data['filter_groups'] = array();
			$this->load->model('catalog/category');

			$this->data['option_main_checkbox'] = isset($filterpro_setting['option_main_checkbox']) ? 1 : 0;
			if(version_compare(VERSION, "1.5.5") >= 0 && $filterpro_setting['filters']==1) {
				$this->data['expanded_filters'] = isset($filterpro_setting['expanded_filters']) ? 1 : 0;
				$filter_groups = $this->model_catalog_category->getCategoryFilters($category_id);
				
				if ($filter_groups) {
					foreach ($filter_groups as $filter_group) {
						$filter_data = array();
						
						foreach ($filter_group['filter'] as $filter) {
							$data = array(
								'filter_category_id' => $category_id,
								'filter_filter'      => $filter['filter_id']
							);	
							
							$filter_data[] = array(
								'filter_id' => $filter['filter_id'],
								'name'      => $filter['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($data) . ')' : '')
							);
						}
						
						$this->data['filter_groups'][] = array(
							'filter_group_id' => $filter_group['filter_group_id'],
							'name'            => $filter_group['name'],
							'filter'          => $filter_data
						);
					}
				} 
			}

			$this->data['price_slider'] = $filterpro_setting['price_slider'];
			$this->data['attr_group'] = $filterpro_setting['attr_group'];
			$this->data['filer_special'] = isset($filterpro_setting['filer_special']);
			$this->data['filer_news'] = isset($filterpro_setting['filer_news']);

			$manufacturer = false;
			if(isset($this->request->get['manufacturer_id'])) {
				$manufacturer = array($this->request->get['manufacturer_id']);
			}

			$categories = false;
			if($category_id) {
				$categories = array($category_id);
			}
			$arr_data = array(
					'instock' => isset($filterpro_setting['instock_checked']), 'option_value' => false, 'manufacturer' => $manufacturer, 'attribute_value' => false,
					'tags' => false, 'categories' => $categories, 'attr_slider' => false, 'filter' => false, 'min_price' => 0, 'max_price' => 0, 'start' => 0,
					'limit' => 1, 'sort' => false, 'order' => false
			);

			if($this->data['filer_news']) {
				$product_total = $this->model_module_filterpro->getTotalProducts($arr_data + array('filer_news' => true));
				$this->data['filer_news'] = $product_total > 0;
//				var_dump($product_total);
			}

			if($this->data['filer_special']) {
				$product_total = $this->model_module_filterpro->getTotalProducts($arr_data + array('special' => true, 'filer_news' => false));
				$this->data['filer_special'] = $product_total > 0;
//				var_dump($product_total);
			}

			$this->data['instock_checked'] = isset($filterpro_setting['instock_checked']) ? 1 : 0;
			$this->data['instock_visible'] = isset($filterpro_setting['instock_visible']) ? 1 : 0;

			if($this->data['tags'] || $this->data['categories'] || $this->data['options'] || $this->data['manufacturers'] || $this->data['attributes'] || $this->data['price_slider']) {
				$this->document->addScript('catalog/view/javascript/jquery/jquery.tmpl.min.js');
				$this->document->addScript('catalog/view/javascript/jquery/jquery.deserialize.min.js');
				$this->document->addScript('catalog/view/javascript/jquery/jquery.loadmask.min.js');
				$this->document->addScript('catalog/view/javascript/jquery/jquery.lazyload.min.js');
				if(isset($filterpro_setting['enable_touch_screen'])) {
					$this->document->addScript('catalog/view/javascript/jquery/jquery.ui.touch-punch.min.js');
				}
				$this->document->addScript('catalog/view/javascript/filterpro.min.js');

				if(isset($filterpro_setting['jscrollpane'])) {
					$this->document->addScript('catalog/view/javascript/jquery/jscrollpane/jquery.mousewheel.js');
					$this->document->addScript('catalog/view/javascript/jquery/jscrollpane/jquery.jscrollpane.min.js');
					$this->document->addStyle('catalog/view/javascript/jquery/jscrollpane/jquery.jscrollpane.css');
				}

				if(isset($filterpro_setting['enable_endless_scroller'])) {
					$this->document->addScript('catalog/view/javascript/jquery/jquery.endlessScroll.js');
				}

				if (isset($filterpro_setting['theme_mega'])){
					$this->document->addStyle('catalog/view/theme/default/stylesheet/filterpro-mega.css');
					$this->document->addScript('catalog/view/javascript/jquery/qtip2/mega/jquery.qtip.min.js');
					$this->document->addStyle('catalog/view/javascript/jquery/qtip2/mega/jquery.qtip.min.css');
				} else{
					$this->document->addStyle('catalog/view/theme/default/stylesheet/filterpro.css');
					$this->document->addScript('catalog/view/javascript/jquery/qtip2/jquery.qtip.min.js');
					$this->document->addStyle('catalog/view/javascript/jquery/qtip2/jquery.qtip.min.css');
				}
				$this->document->addStyle('catalog/view/theme/default/stylesheet/jquery.loadmask.css');
				if($this->config->get('config_template') == 'shoppica2') {
					$this->document->addStyle('catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css');
				}
			}


			$filter_hash = "";
            if(isset($this->request->get['filter_id'])) {
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "filterpro_seo WHERE `url`='" . $this->db->escape("filter_id=" . $this->request->get['filter_id']) . "'");
                if ($query->num_rows){
                    $filterpro_seo = unserialize($query->row['data']);
                    $filter_hash = $filterpro_seo['url'];
                }
            }

			$this->data['filterpro_container'] = $filterpro_setting['filterpro_container'];
			$this->data['filterpro_afterload'] = html_entity_decode($filterpro_setting['filterpro_afterload'], ENT_QUOTES, 'UTF-8');
			$this->data['filterOptions'] = json_encode(array(
									'container'		=> $filterpro_setting['filterpro_container'],
									'filter_redirect'	=> isset($this->request->get['filter_redirect'])?$this->request->get['filter_redirect']:null,
									'filter_hash'		=> $filter_hash,
									'window_hash'		=> !isset($filterpro_setting['hide_window_hash']),
									'hide_count'		=> isset($filterpro_setting['hide_count']),
									'hide_options'		=> isset($filterpro_setting['hide_options']),
									'disable_mask'		=> isset($filterpro_setting['disable_mask']),
									'endless_scroller'	=> isset($filterpro_setting['enable_endless_scroller']),
													   ));

			if(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filterpro.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/module/filterpro.tpl';
			} else {
				$this->template = 'default/template/module/filterpro.tpl';
			}
		}
		$this->render();
	}

	public function getProducts() {
		if(!isset($this->request->post['min_price'])) {
			return;
		}
		$this->load->model('module/filterpro');
		$this->load->model('catalog/product');
		$this->load->model('tool/image');
		$getTotals = false;
		if(isset($this->request->post['getTotals']) && $this->request->post['getTotals']) {
			$getTotals = true;
		}


		list($filterpro_setting, $page, $limit, $manufacturer_id, $attribute_value, $option_value, $category_id, $data) = $this->model_module_filterpro->getData();


		$is_special = (isset($this->request->post['route']) && $this->request->post['route'] == "product/special") || isset($this->request->post['filer_special']);
		$is_bydate = isset($this->request->post['route']) && $this->request->post['route'] == "product/productsbydate";
		$data['special'] = $is_special;
		$data['by_date'] = $is_bydate;
		$data['filer_news'] = isset($this->request->post['filer_news']);

		$totals_manufacturers = array();
		if ($getTotals && $filterpro_setting['display_manufacturer'] != 'none' && !isset($this->request->post['manufacturer_id'])){
			$totals_manufacturers = $this->model_module_filterpro->getTotalManufacturers($data);
		}

		$totals_options = array();
		$totals_attributes = array();
		$totals_categories = array();
		$totals_tags = array();

		if($getTotals) {
			$totals_options = $this->model_module_filterpro->getTotalOptions($data);
			if(!isset($this->filterpro_setting['option_total_simple'])) {
				if($option_value) {
					foreach($option_value as $option_id => $option_value_id) {
						foreach($totals_options as $i => $totals_option) {
							if($totals_option['o'] == $option_id) {
								unset($totals_options[$i]);
							}
						}
						$temp_data = $data;
						unset($temp_data['option_value'][$option_id]);
						foreach($this->model_module_filterpro->getTotalOptions($temp_data) as $option) {
							if($option['o'] == $option_id) {
								$totals_options[] = $option;
							}
						}
					}
				}
			}

			$totals_attributes = $this->model_module_filterpro->getTotalAttributes($data);
			if(!isset($filterpro_setting['attr_total_simple'])) {
				foreach($attribute_value as $attribute_id => $values) {
					foreach($totals_attributes as $i => $attribute) {
						if($attribute['id'] == $attribute_id) {
							unset($totals_attributes[$i]);
						}
					}

					$temp_data = $data;
					unset($temp_data['attribute_value'][$attribute_id]);
					foreach($this->model_module_filterpro->getTotalAttributes($temp_data) as $attribute) {
						if($attribute['id'] == $attribute_id) {
							$totals_attributes[] = $attribute;
						}
					}
				}
			}

			$totals_tags = array();

			if(version_compare(VERSION, "1.5.4") <= 0) {
				$totals_tags = $this->model_module_filterpro->getTotalTags($data);
			}

			$totals_categories = $this->model_module_filterpro->getTotalCategories($data, $category_id);
		}
		$results = $this->model_module_filterpro->getProducts($data);

		$min_price = false;
		$max_price = false;

		if(isset($this->request->post['getPriceLimits']) && $this->request->post['getPriceLimits']) {
			$priceLimits = $this->model_module_filterpro->getPriceLimits(array('category_id' => $category_id, 'manufacturer_id' => $manufacturer_id, 'special' =>$is_special, 'by_date' =>$is_bydate));
			$min_price = $priceLimits['min_price'];
			$max_price = $priceLimits['max_price'];
		}

		$this->request->get['path'] = isset($this->request->post['path']) ? $this->request->post['path'] : '';

		$product_total = $this->model_module_filterpro->getTotalProducts($data);
		$result_html = $this->getHtmlProducts($results, $product_total);

		$pagination = new Pagination();
		$pagination->total = $product_total;
		$pagination->page = $page;
		$pagination->limit = $limit;
		$pagination->text = $this->language->get('text_pagination');


		if (isset($this->request->post['manufacturer_id'])) {
			$pagination->url = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->post['manufacturer_id'] . '&page={page}');
		} else {
			$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&page={page}');
		}

		$pagination = $pagination->render();

		$k = 1;
		if((float)$filterpro_setting['tax'] > 0) {
			$k = 1 + (float)$filterpro_setting['tax'] / 100;
		}
		$min_price = $this->currency->convert($min_price * $k, $this->config->get('config_currency'), $this->currency->getCode());
		$max_price = $this->currency->convert($max_price * $k, $this->config->get('config_currency'), $this->currency->getCode());




		$json = json_encode(array('result_html' => $result_html, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination,
								 'totals_data' =>
								 $getTotals ?
										 array(
											 'product_total' => $product_total,
											 'manufacturers' => $totals_manufacturers,
											 'options' => $totals_options,
											 'attributes' => $totals_attributes,
											 'categories' => $totals_categories,
											 'tags' => $totals_tags)
										 : false));
		$this->response->setOutput($json);
	}


	private function getHtmlProducts($results, $product_total) {

		$this->data += $this->language->load('product/category');

		$this->data['use_lazyload'] = isset($filterpro_setting['use_lazyload']) ? 1 : 0;

		$this->data['products'] = array();

$this->load->model('catalog/product_status');
$this->load->model('catalog/promotion');
		foreach ($results as $result) {
$promotions = $this->model_catalog_promotion->getHTMLProductPromotions($result['product_id']);
			if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('no_image.jpg', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
				}

			if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
				$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
			} else {
				$price = false;
			}

			if ((float)$result['special']) {
				$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
			} else {
				$special = false;
			}

			if ($this->config->get('config_tax')) {
				$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
			} else {
				$tax = false;
			}

if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}
			if ($this->config->get('config_review_status')) {
				$rating = (int)$result['rating'];
			} else {
				$rating = false;
			}


        // module attribute to text
        $options = $this->config->get('attribute_to_text_options');
        if (isset($options['show_catalog_attributes'])) {
          $this->load->model('catalog/attributes_to_text');
          $description = $this->model_catalog_attributes_to_text->getText($result['product_id'], $options);
          if (empty($description) || $description == '<span class="attributes-text"></span>') {
            $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
          }
        }
        else {
          $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
        }
      
			$this->data['products'][] = array(

      'promotion'   => $result['promotions']['category'],
      

'statuses'    => $result['statuses']['category'],
'stickers'    => $result['statuses']['category_stickers'],        
      
				'product_id'  => $result['product_id'],
'quantity'	  => $result['quantity'],
            'stock' => $result['stock_status'],
				'thumb'       => $image,
				'name'        => $result['name'],
//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds
				
          'description' => $description,
        
				'price'       => $price,
				'special'     => $special,
				'tax'         => $tax,
				'rating'      => $result['rating'],
				'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
				'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])
			);
		}

		if(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filterpro_list.tpl') &&
		   file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filterpro_grid.tpl')
		) {
			$this->template = $this->config->get('config_template') . '/template/module/filterpro_list.tpl';
			$return['list'] = $this->render();
			$this->template = $this->config->get('config_template') . '/template/module/filterpro_grid.tpl';
			$return['grid'] = $this->render();
			return $return;
		} elseif(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filterpro_products.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/module/filterpro_products.tpl';
		} else {
			$this->template = 'default/template/module/filterpro_products.tpl';
		}
		return $this->render();
	}
}

?>

 

 

Может кто знает, как справиться с проблемой?

Буду благодарен любой помощи.

Edited by Zapuzin
Добавление файла

Share this post


Link to post
Share on other sites

Забыл написать, что ошибок в логах нет, как системных, так и vqmod.

Share this post


Link to post
Share on other sites

Странно. Появились ошибки, хотя на сайте модуль  Product Display Settings отображает всё, что нужно правильно, только фильтр про не хочет значение "Наличие" товаров, которые есть в наличии,  переводить )

Ошибки появились через некоторое время. Во время экспериментов с проблемным модулем кеш чистился весь, и они не появлялись )

 

Спойлер

2019-07-15 0:59:07 - PHP Notice:  Undefined variable: result in /home/teploplc/public_html/vqmod/vqcache/vq2-catalog_controller_product_manufacturer.php on line 386
2019-07-15 0:59:07 - PHP Notice:  Undefined variable: result in /home/teploplc/public_html/vqmod/vqcache/vq2-catalog_controller_product_manufacturer.php on line 387
2019-07-15 10:57:34 - PHP Notice:  Undefined variable: result in /home/teploplc/public_html/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 404
2019-07-15 10:57:34 - PHP Notice:  Undefined variable: result in /home/teploplc/public_html/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 405

 

                     Весь "product-display-settings.xml"

Спойлер

<!-- Created using vQmod XML Generator by UKSB - http://www.opencart-extensions.co.uk //-->
<modification>
	<id><![CDATA[Product Display Settings]]></id>
	<version><![CDATA[1.2]]></version>
	<vqmver><![CDATA[2.1.5]]></vqmver>
	<author><![CDATA[Flo from shopencart.com, edited by drbogger]]></author>
	<file name="admin/controller/setting/setting.php">
		<operation>
			<search position="before" error="log"><![CDATA[if (isset($this->request->post['config_logo'])) {]]></search>
			<add><![CDATA[ //product display settings		
		if (isset($this->request->post['config_display_sku'])) {
			$this->data['config_display_sku'] = $this->request->post['config_display_sku'];
		} else {
			$this->data['config_display_sku'] = $this->config->get('config_display_sku');
		}
		if (isset($this->request->post['config_display_pweight'])) {
			$this->data['config_display_pweight'] = $this->request->post['config_display_pweight'];
		} else {
			$this->data['config_display_pweight'] = $this->config->get('config_display_pweight');
		}
        if (isset($this->request->post['config_display_skup'])) {
			$this->data['config_display_skup'] = $this->request->post['config_display_skup'];
		} else {
			$this->data['config_display_skup'] = $this->config->get('config_display_skup');
		}
		if (isset($this->request->post['config_display_model'])) {
			$this->data['config_display_model'] = $this->request->post['config_display_model'];
		} else {
			$this->data['config_display_model'] = $this->config->get('config_display_model');
		}
		if (isset($this->request->post['config_display_modelp'])) {
			$this->data['config_display_modelp'] = $this->request->post['config_display_modelp'];
		} else {
			$this->data['config_display_modelp'] = $this->config->get('config_display_modelp');
		}
		if (isset($this->request->post['config_display_brand'])) {
			$this->data['config_display_brand'] = $this->request->post['config_display_brand'];
		} else {
			$this->data['config_display_brand'] = $this->config->get('config_display_brand');
		}
		if (isset($this->request->post['config_display_brandp'])) {
			$this->data['config_display_brandp'] = $this->request->post['config_display_brandp'];
		} else {
			$this->data['config_display_brandp'] = $this->config->get('config_display_brandp');
		}
		if (isset($this->request->post['config_display_rewardsp'])) {
			$this->data['config_display_rewardsp'] = $this->request->post['config_display_rewardsp'];
		} else {
			$this->data['config_display_rewardsp'] = $this->config->get('config_display_rewardsp');
		}
		if (isset($this->request->post['config_display_location'])) {
			$this->data['config_display_location'] = $this->request->post['config_display_location'];
		} else {
			$this->data['config_display_location'] = $this->config->get('config_display_location');
		}
                if (isset($this->request->post['config_display_locationp'])) {
			$this->data['config_display_locationp'] = $this->request->post['config_display_locationp'];
		} else {
			$this->data['config_display_locationp'] = $this->config->get('config_display_locationp');
		}
		if (isset($this->request->post['config_display_listock'])) {
			$this->data['config_display_listock'] = $this->request->post['config_display_listock'];
		} else {
			$this->data['config_display_listock'] = $this->config->get('config_display_listock');
		}
			if (isset($this->request->post['config_display_upc'])) {
			$this->data['config_display_upc'] = $this->request->post['config_display_upc'];
		} else {
			$this->data['config_display_upc'] = $this->config->get('config_display_upc');
		}
	        if (isset($this->request->post['config_display_upcp'])) {
			$this->data['config_display_upcp'] = $this->request->post['config_display_upcp'];
		} else {
			$this->data['config_display_upcp'] = $this->config->get('config_display_upcp');
		}
		//end of product display options]]></add>
		</operation>
	</file>
	<file name="admin/view/template/setting/setting.tpl">
		<operation>
			<search position="after"><![CDATA[<div id="tab-option">]]></search>
			<add><![CDATA[<table class="form">
			<tr>
              <td>Бонусные баллы на странице товара?</td>
              <td><?php if ($config_display_rewardsp) { ?>
                <input type="radio" name="config_display_rewardsp" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_rewardsp" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_rewardsp" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_rewardsp" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Вес на странице товара?</td>
              <td><?php if ($config_display_pweight) { ?>
                <input type="radio" name="config_display_pweight" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_pweight" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_pweight" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_pweight" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>SKU на странице товара?</td>
              <td><?php if ($config_display_sku) { ?>
                <input type="radio" name="config_display_sku" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_sku" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_sku" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_sku" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>SKU на странице категории?</td>
              <td><?php if ($config_display_skup) { ?>
                <input type="radio" name="config_display_skup" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_skup" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_skup" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_skup" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Код товара на странице категории?</td>
              <td><?php if ($config_display_model) { ?>
                <input type="radio" name="config_display_model" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_model" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_model" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_model" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Код товара на странице товара?</td>
              <td><?php if ($config_display_modelp) { ?>
                <input type="radio" name="config_display_modelp" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_modelp" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_modelp" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_modelp" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Бренд на странице категории?</td>
              <td><?php if ($config_display_brand) { ?>
                <input type="radio" name="config_display_brand" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_brand" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_brand" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_brand" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Бренд на странице товара?</td>
              <td><?php if ($config_display_brandp) { ?>
                <input type="radio" name="config_display_brandp" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_brandp" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_brandp" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_brandp" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Гарантия на странице категории?</td>
              <td><?php if ($config_display_location) { ?>
                <input type="radio" name="config_display_location" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_location" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_location" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_location" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr><tr>
              <td>Гарантия на странице товара?</td>
              <td><?php if ($config_display_locationp) { ?>
                <input type="radio" name="config_display_locationp" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_locationp" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_locationp" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_locationp" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>UPC на странице категории?</td>
              <td><?php if ($config_display_upc) { ?>
                <input type="radio" name="config_display_upc" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_upc" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_upc" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_upc" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr><tr>
              <td>UPC на странице товара?</td>
              <td><?php if ($config_display_upcp) { ?>
                <input type="radio" name="config_display_upcp" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_upcp" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_upcp" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_upcp" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr>
			<tr>
              <td>Наличие товара на странице категории?</td>
              <td><?php if ($config_display_listock) { ?>
                <input type="radio" name="config_display_listock" value="1" checked="checked" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_listock" value="0" />
                <?php echo $text_no; ?>
                <?php } else { ?>
                <input type="radio" name="config_display_listock" value="1" />
                <?php echo $text_yes; ?>
                <input type="radio" name="config_display_listock" value="0" checked="checked" />
                <?php echo $text_no; ?>
                <?php } ?></td>
            </tr></table>]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/product.php">
		<operation>
			<search position="after"><![CDATA[$this->data['points'] = $product_info['points'];]]></search>
			<add><![CDATA[//product display options
$this->language->load('product/pds');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_weight'] = $this->language->get('pds_weight');
$this->data['pds_location'] = $this->language->get('pds_location');
			$this->data['sku'] = $product_info['sku'];
			$this->data['upc'] = $product_info['upc'];
			$this->data['location'] = $product_info['location'];
			if ($product_info['weight']) {
			$this->data['weight'] = $this->weight->format($product_info['weight'], $product_info['weight_class_id'], $this->language->get('decimal_point'), $this->language->get('thousand_point'));
			} else {
				$this->data['weight'] = '';
			}
			]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/product/product.tpl">
		<operation>
			<search position="after"><![CDATA[<span><?php echo $text_model; ?></span> <?php echo $model; ?><br />]]></search>
			<add><![CDATA[<?php if ($this->config->get('config_display_skup') && $sku) { ?>
		<span><?php echo $pds_sku; ?> </span> <?php echo $sku; ?><br />
		<?php } ?>
		<?php if ($this->config->get('config_display_upcp') && $upc) { ?>
		<span><?php echo $pds_upc; ?> </span> <?php echo $upc; ?><br />
		<?php } ?>
		<?php if ($this->config->get('config_display_locationp') && $location) { ?>
		<span><?php echo $pds_location; ?> </span> <?php echo $location; ?><br />
		<?php } ?>
		<?php if ($this->config->get('config_display_pweight') && $weight) { ?>
		<span><?php echo $pds_weight; ?> </span> <?php echo $weight; ?><br />
		<?php } ?>
		]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[<?php if ($manufacturer) { ?>]]></search>
			<add><![CDATA[<?php if ($this->config->get('config_display_brandp') && $manufacturer) { ?>]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[<?php if ($reward) { ?>]]></search>
			<add><![CDATA[<?php if ($this->config->get('config_display_rewardsp') && $reward) { ?>]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[<span><?php echo $text_model; ?></span> <?php echo $model; ?><br />]]></search>
			<add><![CDATA[<?php if ($this->config->get('config_display_modelp')) { ?>
			<span><?php echo $pds_model; ?></span> <?php echo $model; ?><br />
			<?php } ?>]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/category.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/search.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/manufacturer.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/special.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/product/search.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: inline-block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[html += '  <div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444; position: absolute; transform: translate(-165px, 195px); -webkit-transform: translate(-165px, 195px); -o-transform: translate(-165px, 195px); -moz-transform: translate(-165px, 195px); font-size: 14px;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[html += '<div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/product/category.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: inline-block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[html += '  <div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444; position: absolute; transform: translate(-165px, 195px); -webkit-transform: translate(-165px, 195px); -o-transform: translate(-165px, 195px); -moz-transform: translate(-165px, 195px); font-size: 14px;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[html += '<div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/product/special.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: inline-block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[html += '  <div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444; position: absolute; transform: translate(-165px, 195px); -webkit-transform: translate(-165px, 195px); -o-transform: translate(-165px, 195px); -moz-transform: translate(-165px, 195px); font-size: 14px;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[html += '<div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/product/manufacturer_info.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: inline-block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[html += '  <div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444; position: absolute; transform: translate(-165px, 195px); -webkit-transform: translate(-165px, 195px); -o-transform: translate(-165px, 195px); -moz-transform: translate(-165px, 195px); font-size: 14px;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[html += '<div class="name">' + $(element).find('.name').html() + '</div>';]]></search>
			<add><![CDATA[html += '<div class="extra" style="display: inline-block; color: #444;">' + $(element).find('.extra').html() + '</div>';]]></add>
		</operation>
	</file>
	<file name="catalog/controller/module/latest.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = "Stock: " . $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->language->load('module/latest');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/module/latest.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		
	</file>
	<file name="catalog/controller/module/bestseller.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = "Stock: " . $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->language->load('module/bestseller');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/module/bestseller.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		
	</file>
	<file name="catalog/controller/module/special.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = "Stock: " . $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->language->load('module/special');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/module/special.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	 <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		
	</file>
	<file name="catalog/controller/module/featured.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_info['quantity'] <= 0) {
                $rstock = $product_info['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = "Stock: " . $product_info['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$product_info['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $product_info['sku'],
					'model'       => $product_info['model'],
					'brand'       => $product_info['manufacturer'],
					'location'    => $product_info['location'],
					'upc'         => $product_info['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $product_info['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->language->load('module/featured');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/module/featured.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		
	</file>
	<file name="catalog/controller/module/viewed.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_info['quantity'] <= 0) {
                $rstock = $product_info['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = "Stock: " . $product_info['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$product_info['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $product_info['sku'],
					'model'       => $product_info['model'],
					'brand'       => $product_info['manufacturer'],
					'location'    => $product_info['location'],
					'upc'         => $product_info['upc'],
					'stock'        => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $product_info['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->language->load('module/viewed');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/*/template/module/viewed.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
		
	</file>
	<file name="catalog/controller/module/filterpro.php">
		<operation>
			<search position="before"><![CDATA[if ($this->config->get('config_review_status')) {]]></search>
			<add><![CDATA[if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}]]></add>
		</operation>		
		<operation>
			<search position="after"><![CDATA['name'        => $result['name'],]]></search>
			<add><![CDATA[//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds]]></add>
		</operation>
		<operation>
			<search position="after"><![CDATA[$this->data['text_grid'] = $this->language->get('text_grid');]]></search>
			<add><![CDATA[$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');]]></add>
		</operation>
	</file>

	<file name="catalog/view/theme/*/template/module/filterpro_products.tpl">
		<operation>
			<search position="after"><![CDATA[<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>]]></search>
			<add><![CDATA[<div class="extra" style="display: inline-block; color: #444;">

	  <?php if ($this->config->get('config_display_sku') && $product['sku']) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_sku; ?></span> <?php echo $product['sku']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_model') && $product['model']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_model; ?></span> <?php echo $product['model']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_brand') && $product['brand']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_brand; ?></span> <a href="<?php echo $product['brand_url']; ?>"><?php echo $product['brand']; ?></a> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_location') && $product['location']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_location; ?></span> <?php echo $product['location']; ?> <br />

	  <?php } ?>

	  <?php if ($product['upc'] && $this->config->get('config_display_upc')) { ?> 

	  <span style="color:#38b0e3"><?php echo $pds_upc; ?></span> <?php echo $product['upc']; ?> <br />

	  <?php } ?>

	  <?php if ($this->config->get('config_display_listock') && $product['stock']) { ?>

	  <span style="color:#38b0e3"><?php echo $pds_stock; ?></span> <?php echo $product['stock']; ?> <br />

	  <?php } ?>

	  </div>]]></add>
		</operation>
    </file>

</modification>

 

 

vq2-catalog_controller_product_manufacturer.php

Спойлер

<?php 
class ControllerProductManufacturer extends Controller {  
	public function index() { 
		$this->language->load('product/manufacturer');
		
		$this->load->model('catalog/manufacturer');
		
		$this->load->model('tool/image');		
		
		$this->document->setTitle($this->language->get('heading_title'));
		
		$this->data['heading_title'] = $this->language->get('heading_title');
		
		$this->data['text_index'] = $this->language->get('text_index');
		$this->data['text_empty'] = $this->language->get('text_empty');
		
		$this->data['button_continue'] = $this->language->get('button_continue');
		
		$this->data['breadcrumbs'] = array();
		
      	$this->data['breadcrumbs'][] = array(
        	'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home'),
        	'separator' => false
      	);
		
		$this->data['breadcrumbs'][] = array(
			'text'      => $this->language->get('text_brand'),
			'href'      => $this->url->link('product/manufacturer'),
			'separator' => $this->language->get('text_separator')
		);
		
		$this->data['categories'] = array();
									
		$results = $this->model_catalog_manufacturer->getManufacturers();
	
		foreach ($results as $result) {
			if (is_numeric(utf8_substr($result['name'], 0, 1))) {
				$key = '0 - 9';
			} else {
				$key = utf8_substr(utf8_strtoupper($result['name']), 0, 1);
			}
			
			if (!isset($this->data['manufacturers'][$key])) {
				$this->data['categories'][$key]['name'] = $key;
			}
			
			$this->data['categories'][$key]['manufacturer'][] = array(
				'name' => $result['name'],

	// ManufacturerLogo
				'logo' => $this->model_tool_image->resize($result['image'], 100, 100),
	// ManufacturerLogo end
			
				'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
			);
		}
		
		$this->data['continue'] = $this->url->link('common/home');

		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/manufacturer_list.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/product/manufacturer_list.tpl';
		} else {
			$this->template = 'default/template/product/manufacturer_list.tpl';
		}			
		
		$this->children = array(
			'common/column_left',
			'common/column_right',
			'common/content_top',
			'common/content_bottom',
			'common/footer',
			'common/header'
		);
				
		$this->response->setOutput($this->render());										
  	}
	
	public function info() {
    	$this->language->load('product/manufacturer');
		
		$this->load->model('catalog/manufacturer');
		
		$this->load->model('catalog/product');
		
		$this->load->model('tool/image'); 
		
		if (isset($this->request->get['manufacturer_id'])) {
			$manufacturer_id = (int)$this->request->get['manufacturer_id'];
		} else {
			$manufacturer_id = 0;
		} 
		$filterpro_seo = false;
            		$url_data = false;
            		if(isset($this->request->get['filter_id'])) {
            			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "filterpro_seo WHERE `url`='" . $this->db->escape("filter_id=" . $this->request->get['filter_id']) . "'");
            			if($query->num_rows) {
            				$filterpro_data = unserialize($query->row['data']);
            				$filterpro_seo = $filterpro_data['lang'][(int)$this->config->get('config_language_id')];
            				parse_str(str_replace("&amp;", "&", $filterpro_data['url']), $url_data);
							$url_data['filer_news'] = false;
            				if (!isset($url_data['manufacturer_id']) || $url_data['manufacturer_id'] != $manufacturer_id) {
            					$this->redirect($this->url->link('error/not_found'));
            				}
            			}
            		}
            
										
		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.sort_order';
		} 

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		} 
  		
		if (isset($this->request->get['page'])) {
			$page = $this->request->get['page'];
		} else {
			$page = 1;
		}
				
		if (isset($this->request->get['limit'])) {
			$limit = $this->request->get['limit'];
		} else {
			$limit = $this->config->get('config_catalog_limit');
		}

		$this->data['breadcrumbs'] = array();

   		$this->data['breadcrumbs'][] = array( 
       		'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home'),
      		'separator' => false
   		);
   		
		$this->data['breadcrumbs'][] = array( 
       		'text'      => $this->language->get('text_brand'),
			'href'      => $this->url->link('product/manufacturer'),
      		'separator' => $this->language->get('text_separator')
   		);
		
		$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($manufacturer_id);
	
		if ($manufacturer_info) {
			if ($manufacturer_info['seo_title']) {
				$this->document->setTitle($manufacturer_info['seo_title']);
			} else {
				$this->document->setTitle($manufacturer_info['name']);
				
			}
			$this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');
			$this->document->setDescription($manufacturer_info['meta_description']);
			$this->document->setKeywords($manufacturer_info['meta_keyword']);
			
			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	
	
			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
					
			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}	
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
		   			
			$this->data['breadcrumbs'][] = array(
       			'text'      => $manufacturer_info['name'],
				'href'      => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url),
      			'separator' => $this->language->get('text_separator')
   			);
			
			if ($manufacturer_info['seo_h1']) {
				$this->data['heading_title'] = $manufacturer_info['seo_h1'];
			} else {
				$this->data['heading_title'] = $manufacturer_info['name'];
			if($filterpro_seo) {
            				$this->data['description'] = html_entity_decode($filterpro_seo['description'], ENT_QUOTES, 'UTF-8');
            				$this->data['heading_title'] = $filterpro_seo['h1'];
            				$this->document->setTitle($filterpro_seo['title']);
            				$this->document->setDescription($filterpro_seo['meta_description']);
            				$this->document->setKeywords($filterpro_seo['meta_keywords']);
            			}
			}

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

			
			$this->data['text_empty'] = $this->language->get('text_empty');
			$this->data['text_quantity'] = $this->language->get('text_quantity');
			$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
			$this->data['text_model'] = $this->language->get('text_model');
			$this->data['text_price'] = $this->language->get('text_price');
			$this->data['text_tax'] = $this->language->get('text_tax');
			$this->data['text_points'] = $this->language->get('text_points');
			$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
			$this->data['text_display'] = $this->language->get('text_display');
			$this->data['text_list'] = $this->language->get('text_list');
			$this->data['text_grid'] = $this->language->get('text_grid');			
$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');
			$this->data['text_sort'] = $this->language->get('text_sort');
			$this->data['text_limit'] = $this->language->get('text_limit');
			  
			$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_out_of_stock'] = $this->language->get('button_out_of_stock');
			$this->data['button_wishlist'] = $this->language->get('button_wishlist');
			$this->data['button_compare'] = $this->language->get('button_compare');
			$this->data['button_continue'] = $this->language->get('button_continue');
			
			$this->data['compare'] = $this->url->link('product/compare');
			
			$this->data['products'] = array();
			
			$data = array(
				'filter_manufacturer_id' => $manufacturer_id, 
				'sort'                   => $sort,
				'order'                  => $order,
				'start'                  => ($page - 1) * $limit,
				'limit'                  => $limit
			);
					
						if($url_data) {
            				$get = $this->request->get;
            				unset($get['route']);
            				unset($get['filter_id']);
            				$this->request->get['filter_redirect'] = $this->url->link('product/category', http_build_query($get));
            				$this->request->post = $url_data;

            				$this->load->model('module/filterpro');
            				list($f1, $f2, $f3, $f4, $f5, $f5, $f6, $url_data) = $this->model_module_filterpro->getData();
            				$url_data['filer_news'] = false;
            				$product_total = $this->model_module_filterpro->getTotalProducts($url_data);
            				$results = $this->model_module_filterpro->getProducts($url_data);
            			} else {
            				$product_total = $this->model_catalog_product->getTotalProducts($data);
            				$results = $this->model_catalog_product->getProducts($data);
            			}
			//Вызов метода getFoundProducts должен проводится сразу же после getProducts
			//только тогда он выдает правильное значения количества товаров
			//$product_total = $this->model_catalog_product->getTotalProducts($data); 
					
			foreach ($results as $result) {
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
				} else {
					$image = false;
				}
				
				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
				} else {
					$price = false;
				}
				
				if ((float)$result['special']) {
					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
				} else {
					$special = false;
				}	
				
				if ($this->config->get('config_tax')) {
					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
				} else {
					$tax = false;
				}				
				
if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}
				if ($this->config->get('config_review_status')) {
					$rating = (int)$result['rating'];
				} else {
					$rating = false;
				}
			

        // module attribute to text
        $options = $this->config->get('attribute_to_text_options');
        if (isset($options['show_catalog_attributes'])) {
          $this->load->model('catalog/attributes_to_text');
          $description = $this->model_catalog_attributes_to_text->getText($result['product_id'], $options);
          if (empty($description) || $description == '<span class="attributes-text"></span>') {
            $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
          }
        }
        else {
          $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
        }
      
				$this->data['products'][] = array(

'promotion'   => $result['promotions']['category'],
      

'statuses'    => $result['statuses']['category'],
'stickers'    => $result['statuses']['category_stickers'],        
      
					'product_id'  => $result['product_id'],
'quantity'	  => $result['quantity'],
            'stock' => $result['stock_status'],
					'thumb'       => $image,
					'name'        => $result['name'],
//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds
					
          'description' => $description,
        
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'rating'      => $result['rating'],
					'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
					'href'        => $this->url->link('product/product', '&manufacturer_id=' . $result['manufacturer_id'] . '&product_id=' . $result['product_id'] . $url)
				);
			}
					
			$url = '';
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
						
			$this->data['sorts'] = array();
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.sort_order-ASC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.sort_order&order=ASC' . $url)
			);
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_name_asc'),
				'value' => 'pd.name-ASC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=pd.name&order=ASC' . $url)
			); 
	
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_name_desc'),
				'value' => 'pd.name-DESC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=pd.name&order=DESC' . $url)
			);
	
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_price_asc'),
				'value' => 'p.price-ASC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.price&order=ASC' . $url)
			); 
	
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_price_desc'),
				'value' => 'p.price-DESC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.price&order=DESC' . $url)
			); 
			
if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}
			if ($this->config->get('config_review_status')) {
				$this->data['sorts'][] = array(
					'text'  => $this->language->get('text_rating_desc'),
					'value' => 'rating-DESC',
					'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=rating&order=DESC' . $url)


			); 
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_rating_asc'),
				'value' => 'rating-ASC',
					'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=rating&order=ASC' . $url)

			);
			}
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_model_asc'),
				'value' => 'p.model-ASC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.model&order=ASC' . $url)
			); 
	
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_model_desc'),
				'value' => 'p.model-DESC',
				'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.model&order=DESC' . $url)
			);
	
			$url = '';
					
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	
	
			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
			
			$this->data['limits'] = array();
	
			$limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100));

			sort($limits);
	
			foreach($limits as $value){
				$this->data['limits'][] = array(
					'text'  => $value,
					'value' => $value,
					'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url . '&limit=' . $value)
				);
			}
				
			$url = '';
							
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	
	
			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
					
			$pagination = new Pagination();
			$pagination->total = $product_total;
			$pagination->page = $page;
			$pagination->limit = $limit;
			$pagination->text = $this->language->get('text_pagination');
			$pagination->url = $this->url->link('product/manufacturer/info','manufacturer_id=' . $this->request->get['manufacturer_id'] .  $url . '&page={page}');
			
			$this->data['pagination'] = $pagination->render();
			
			$this->data['sort'] = $sort;
			$this->data['order'] = $order;
			$this->data['limit'] = $limit;
			
			$this->data['continue'] = $this->url->link('common/home');
			
			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/manufacturer_info.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/product/manufacturer_info.tpl';
			} else {
				$this->template = 'default/template/product/manufacturer_info.tpl';
			}
			
			$this->children = array(
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
			);
					
			$this->response->setOutput($this->render());
		} else {
			$url = '';
			
			if (isset($this->request->get['manufacturer_id'])) {
				$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];
			}
									
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
				
			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
						
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
						
			$this->data['breadcrumbs'][] = array(
				'text'      => $this->language->get('text_error'),
				'href'      => $this->url->link('product/category', $url),
				'separator' => $this->language->get('text_separator')
			);
				
			$this->document->setTitle($this->language->get('text_error'));

      		$this->data['heading_title'] = $this->language->get('text_error');

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

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

      		$this->data['continue'] = $this->url->link('common/home');

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
			} else {
				$this->template = 'default/template/error/not_found.tpl';
			}
			
			$this->children = array(
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
			);
					
			$this->response->setOutput($this->render());
		}
  	}
}
?>

 

 

 

                                   vq2-catalog_controller_product_category.php

Спойлер

<?php 
class ControllerProductCategory extends Controller {  
	public function index() { 
		$this->language->load('product/category');
		
		$this->load->model('catalog/category');
		
		$this->load->model('catalog/product');
		
		$this->load->model('tool/image'); 
		
		if (isset($this->request->get['filter'])) {
			$filter = $this->request->get['filter'];
		} else {
			$filter = '';
		}

			
		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.sort_order';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		}
		
		if (isset($this->request->get['page'])) {
			$page = $this->request->get['page'];
		} else { 
			$page = 1;
		}	
							
		if (isset($this->request->get['limit'])) {
			$limit = $this->request->get['limit'];
		} else {
			$limit = $this->config->get('config_catalog_limit');
		}

					
		$this->data['breadcrumbs'] = array();

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home'),
       		'separator' => false
   		);	
			
		if (isset($this->request->get['path'])) {
			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}	
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}

				
			$path = '';
		
			$parts = explode('_', (string)$this->request->get['path']);
		
			$category_id = (int)array_pop($parts);

			foreach ($parts as $path_id) {
				if (!$path) {
					$path = (int)$path_id;
				} else {
					$path .= '_' . (int)$path_id;
				}
									
				$category_info = $this->model_catalog_category->getCategory($path_id);
				
				if ($category_info) {
	       			$this->data['breadcrumbs'][] = array(
   	    				'text'      => $category_info['name'],
						'href'      => $this->url->link('product/category', 'path=' . $path . $url),
        				'separator' => $this->language->get('text_separator')
        			);
				}

			}		
		
			
		} else {
			$category_id = 0;
		}

  		$filterpro_seo = false;
  		$url_data = false;
  		if(isset($this->request->get['filter_id'])) {
  			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "filterpro_seo WHERE `url`='" . $this->db->escape("filter_id=" . $this->request->get['filter_id']) . "'");
  			if($query->num_rows) {
  				$filterpro_data = unserialize($query->row['data']);
  				$filterpro_seo = $filterpro_data['lang'][(int)$this->config->get('config_language_id')];
  				parse_str(str_replace("&amp;", "&", $filterpro_data['url']), $url_data);
				$url_data['filer_news'] = false;
  				if(!isset($url_data['category_id']) || $url_data['category_id'] != $category_id) {
  					$this->redirect($this->url->link('error/not_found'));
  				}
  			}
  		}

		
		$category_info = $this->model_catalog_category->getCategory($category_id);
	
		if ($category_info) {
			if ($category_info['seo_title']) {
		  		$this->document->setTitle($category_info['seo_title']);
			} else {
		  		$this->document->setTitle($category_info['name']);
			}

			$this->document->setDescription($category_info['meta_description']);
			$this->document->setKeywords($category_info['meta_keyword']);
			$this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');
			
			if ($category_info['seo_h1']) {
				$this->data['heading_title'] = $category_info['seo_h1'];
			} else {
				$this->data['heading_title'] = $category_info['name'];
			}
			
			$this->data['text_refine'] = $this->language->get('text_refine');
			$this->data['text_empty'] = $this->language->get('text_empty');			
			$this->data['text_quantity'] = $this->language->get('text_quantity');
			$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
			$this->data['text_model'] = $this->language->get('text_model');
			$this->data['text_price'] = $this->language->get('text_price');
			$this->data['text_tax'] = $this->language->get('text_tax');
			$this->data['text_points'] = $this->language->get('text_points');
			$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
			$this->data['text_display'] = $this->language->get('text_display');
			$this->data['text_list'] = $this->language->get('text_list');
			$this->data['text_grid'] = $this->language->get('text_grid');
$this->language->load('product/pds');
$this->data['pds_sku'] = $this->language->get('pds_sku');
$this->data['pds_upc'] = $this->language->get('pds_upc');
$this->data['pds_location'] = $this->language->get('pds_location');
$this->data['pds_model'] = $this->language->get('pds_model');
$this->data['pds_brand'] = $this->language->get('pds_brand');
$this->data['pds_stock'] = $this->language->get('pds_stock');
			$this->data['text_sort'] = $this->language->get('text_sort');
			$this->data['text_limit'] = $this->language->get('text_limit');
					
			$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_out_of_stock'] = $this->language->get('button_out_of_stock');
			$this->data['button_wishlist'] = $this->language->get('button_wishlist');
			$this->data['button_compare'] = $this->language->get('button_compare');
			$this->data['button_continue'] = $this->language->get('button_continue');
			
			// Set the last category breadcrumb		
			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}	
			
			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
									
			$this->data['breadcrumbs'][] = array(
				'text'      => $category_info['name'],
				'href'      => $this->url->link('product/category', 'path=' . $this->request->get['path']),
				'separator' => $this->language->get('text_separator')
			);
								
					
			if ($category_info['image']) {
				$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
				$this->document->setOgImage($this->data['thumb']);
			} else {
				$this->data['thumb'] = '';
			}
									
			$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
            if($filterpro_seo) {
              $this->data['description'] = html_entity_decode($filterpro_seo['description'], ENT_QUOTES, 'UTF-8');
              $this->data['heading_title'] = $filterpro_seo['h1'];
              $this->document->setTitle($filterpro_seo['title']);
              $this->document->setDescription($filterpro_seo['meta_description']);
              $this->document->setKeywords($filterpro_seo['meta_keywords']);
            }
			$this->data['compare'] = $this->url->link('product/compare');
			
			$url = '';
			
			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];
			}	

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}	
			
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
								
			$this->data['categories'] = array();
			
			$results = $this->model_catalog_category->getCategories($category_id);
			
			foreach ($results as $result) {
				$data = array(
					'filter_category_id'  => $result['category_id'],
					'filter_sub_category' => true
				);
				
				$product_total = $this->model_catalog_product->getTotalProducts($data);				
				
				$this->data['categories'][] = array(
					'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
					'thumb' => $this->model_tool_image->resize(($result['image']=='' ? 'no_image.jpg' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'))
				);
			}
			
			$this->data['products'] = array();
			
			$data = array(
				'filter_category_id' => $category_id,
				'filter_filter'      => $filter, 
				'sort'               => $sort,
				'order'              => $order,
				'start'              => ($page - 1) * $limit,
				'limit'              => $limit
			);
					
			
			if($url_data) {
				$get = $this->request->get;
				unset($get['route']);
				unset($get['filter_id']);
				$this->request->get['filter_redirect'] = $this->url->link('product/category', http_build_query($get));
				$this->request->post = $url_data;

				$this->load->model('module/filterpro');
				list($f1, $f2, $f3, $f4, $f5, $f5, $f6, $url_data) = $this->model_module_filterpro->getData();
				$url_data['filer_news'] = false;
				$product_total = $this->model_module_filterpro->getTotalProducts($url_data);
				$results = $this->model_module_filterpro->getProducts($url_data);
			} else {
				$product_total = $this->model_catalog_product->getTotalProducts($data);
				$results = $this->model_catalog_product->getProducts($data);
			}
			//Вызов метода getFoundProducts должен проводится сразу же после getProducts
			//только тогда он выдает правильное значения количества товаров
			//$product_total = $this->model_catalog_product->getTotalProducts($data); 
			
			foreach ($results as $result) {
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('no_image.jpg', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
				}
				
				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
				} else {
					$price = false;
				}
				
				if ((float)$result['special']) {
					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
				} else {
					$special = false;
				}	
				
				if ($this->config->get('config_tax')) {
					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
				} else {
					$tax = false;
				}				
				
if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}
				if ($this->config->get('config_review_status')) {
					$rating = (int)$result['rating'];
				} else {
					$rating = false;
				}
								

        // module attribute to text
        $options = $this->config->get('attribute_to_text_options');
        if (isset($options['show_catalog_attributes'])) {
          $this->load->model('catalog/attributes_to_text');
          $description = $this->model_catalog_attributes_to_text->getText($result['product_id'], $options);
          if (empty($description) || $description == '<span class="attributes-text"></span>') {
            $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
          }
        }
        else {
          $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..';
        }
      
				$this->data['products'][] = array(

'promotion'   => $result['promotions']['category'],
      

'statuses'    => $result['statuses']['category'],
'stickers'    => $result['statuses']['category_stickers'],        
      
					'product_id'  => $result['product_id'],
'quantity'	  => $result['quantity'],
            'stock' => $result['stock_status'],
					'thumb'       => $image,
					'name'        => $result['name'],
//produc display settings
					'sku'         => $result['sku'],
					'model'       => $result['model'],
					'brand'       => $result['manufacturer'],
					'location'    => $result['location'],
					'upc'         => $result['upc'],
					'stock'       => $rstock,
					'brand_url'   => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $result['manufacturer_id']),
					//end pds
					
          'description' => $description,
        
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'rating'      => $result['rating'],
					'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);
			}
			
			$url = '';
			
			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];
			}
				
	
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
										
			$this->data['sorts'] = array();
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.sort_order-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
			);
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_name_asc'),
				'value' => 'pd.name-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_name_desc'),
				'value' => 'pd.name-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)
			);

			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_price_asc'),
				'value' => 'p.price-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)
			); 

			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_price_desc'),
				'value' => 'p.price-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)
			); 
			
if ($product_total != 0)  {
			if ($result['quantity'] <= 0) {
                $rstock = $result['stock_status'];
                } elseif ($this->config->get('config_stock_display')) {
                $rstock = $result['quantity'];
                } else {
                $rstock = $this->language->get('pds_instock');
                }}
			if ($this->config->get('config_review_status')) {
				$this->data['sorts'][] = array(
					'text'  => $this->language->get('text_rating_desc'),
					'value' => 'rating-DESC',
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)
				); 
				
				$this->data['sorts'][] = array(
					'text'  => $this->language->get('text_rating_asc'),
					'value' => 'rating-ASC',
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)
				);
			}
			
			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_model_asc'),
				'value' => 'p.model-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url)
			);

			$this->data['sorts'][] = array(
				'text'  => $this->language->get('text_model_desc'),
				'value' => 'p.model-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url)
			);
			
			$url = '';
			
			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];
			}

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
			
			$this->data['limits'] = array();
			
			$limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100));
			
			sort($limits);
	
			foreach($limits as $value){
				$this->data['limits'][] = array(
					'text'  => $value,
					'value' => $value,
					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value)
				);
			}
			
			$url = '';
			

			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];
			}

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
	
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
					
			$pagination = new Pagination();
			$pagination->total = $product_total;
			$pagination->page = $page;
			$pagination->limit = $limit;
			$pagination->text = $this->language->get('text_pagination');
			$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');
		
			$this->data['pagination'] = $pagination->render();
		
			$this->data['sort'] = $sort;
			$this->data['order'] = $order;
			$this->data['limit'] = $limit;
		
			$this->data['continue'] = $this->url->link('common/home');

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
			} else {
				$this->template = 'default/template/product/category.tpl';
			}
			
			$this->children = array(
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
			);
				
			$this->response->setOutput($this->render());										
    	} else {
			$url = '';
			
			if (isset($this->request->get['path'])) {
				$url .= '&path=' . $this->request->get['path'];
			}
			
			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];
			}
				
									
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}	

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}
				
			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
						
			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}
						
			$this->data['breadcrumbs'][] = array(
				'text'      => $this->language->get('text_error'),
				'href'      => $this->url->link('product/category', $url),
				'separator' => $this->language->get('text_separator')
			);
				
			$this->document->setTitle($this->language->get('text_error'));

      		$this->data['heading_title'] = $this->language->get('text_error');

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

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

      		$this->data['continue'] = $this->url->link('common/home');

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
			} else {
				$this->template = 'default/template/error/not_found.tpl';
			}
			
			$this->children = array(
				'common/column_left',
				'common/column_right',
				'common/content_top',
				'common/content_bottom',
				'common/footer',
				'common/header'
			);
					
			$this->response->setOutput($this->render());
		}
  	}
}
?>

 

 

 

Что заметил. Системные ошибки, связанные с "Product Display Settings", периодически начали появляться после того, как добавился файл "product_statuses.xml"  нового модуля "Статусы Товара PRO Speed, автостатусы, стикеры, текстовые статусы". Видно им тесно вдвоём )

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By neoseo
      1 365.00 руб
      Скачать/Купить дополнение


      Фильтр товаров {SEO-Фильтр} от веб-студии NeoSeo, Модуль для OpenCart 2.1, 2.3
      Увеличивайте продажи с авторской разработкой от веб-студии NeoSeo! SEO-фильтр предназначен не просто сортировать товары, но и создавать посадочные страницы, чтобы увеличить продажи Интернет-магазина, работающего на OpenCart и ocStore.   
      С помощью нашего SEO-фильтра вы сможете продвигать свой Интернет-магазин, создавая сотни или даже тысячи специальных посадочных страниц, чтобы получать из поисковой выдачи средне и низко частотный трафик бесплатно, который, между прочим, лучше всего конвертируется в продажи.
        Зачем вообще нужны “посадочные страницы” и что они вообще собой представляют?
       
      Посадочные страницы это те страницы Интернет-магазина, которые поисковые роботы считают годными для “приземления” на них своего целевого трафика.
       
      По большому счету, когда поисковые роботы сканируют ваш Интернет-магазин, они хотят понять, а какие на вашем сайте существуют посадочные страницы, чтобы понимать, по каким пользовательским запросам они будут релевантны, т.е. на какие запросы пользователей они смогут предоставить самый лучший, полный и исчерпывающий ответ. Конечно же, алгоритмы ранжирования поисковиков учитывают и еще более 200 факторов, но без посадочных вообще никуда. Читайте о том, как привести на свой сайт целевой трафик недорого в этой статье.
       
      Основные преимущества SEO-фильтра:
       
      1. Возможность создавать посадочные страницы с помощью SEO-фильтра, объединяя значение категории, например, "Ламинат" со значением опции фильтра, например,  "32 класс" для продажи ламината 32 класса (поисковые запросы от покупателей мы разместили вместо seo-текста).
       
      Что мы получаем в итоге?
       
      1. Уникальный адрес страницы, который, конечно же ЧПУ https://demo.neoseo.com.ua/laminat/laminat-klass-32/
      2 и 3. Прописываем теги и размещаем seo-текст
      4. Страница сразу попадает в самую быструю карту сайта на индексацию поисковикам
      5. Google и Яндекс счастливы, ведь они очень точно удовлетворили своего пользователя предоставив ему нужный контент.
      6. Пользователь счастлив, ведь он нашел именно то, что искал, на странице собран полезный и релевантный, отвечающий пользовательскому запросу контент и ему не нужно ковырятся в поисках на непонятных ему сайтах, что конечно же он сообщит поисковикам своими поведенческими факторами, а Вам, своими деньгами.
      7. Счастлив и скромный разработчик SEO-фильтра .
       

       
      2. Добавление новых опций фильтра. При добавлении новой опции фильтра, вы можете:
      Включать/отключать секции фильтра (при включении секции фильтра значения опции выводятся автоматически, а при отключении секции фильтра, значения опции выводятся при нажатии на опцию). Использовать дополнительное оформление. В качестве значений опций фильтра модуль позволяет использовать цвет и изображение. Выбирать тип опции в виде плитки, чекбокса и радиокнопки. Выбирать категории, в которых будут выводиться опции фильтра. Автоматически генерировать ЧПУ опции на основании названия опции Автоматически генерировать ЧПУ значений опции на основании названия значения опции.
      3. Фильтрация по цене и производителю.
      4. Возможность формировать посадочные страницы с автоматической генераций ЧПУ.
      5. Поддержка мультиязычных сайтов.
      6. Учет скидок и акций, проходящих в вашем интернет-магазине:
      7. Для каждой категории модуль позволяет создать  фильтр с собственной конфигурацией.
      8. Возможность показывать опции как атрибуты на странице товара
      9. Автоматическая генерация опций фильтра на основе атрибутов и опций товаров.
      10. Экспорт опций фильтра из модуля OCFilter.
      11. Поддержка модуля “NeoSeo Генератор ЧПУ и метаданных”.
      12. Поддержка модуля “NeoSeo Невероятно быстрая карта сайта”.
      13. Возможность выбора шаблона фильтра (вертикальный или горизонтальный)
      14. Вывод популярных тегов на основе посадочных страниц
       
      Покажем некоторые преимущества модуля на примере:
      1. Опция с цветом.
      2. Опция с изображением.
      3. Опция с включенной секцией фильтра
      4. Опция с отключенной секцией фильтра.
      5. Тип опции - плитка.
      6. Тип опции - чекбокс.
      7. Тип опции - радиокнопка.
      8. Фильтр по цене.
      9. Фильтр по производителю.
       

       
       
      Attention, только в NeoSeo:
       
      1. Пробуйте бесплатно. Напишите на почту: license@neoseo.com.ua или оформите заявку на сайте, и мы выдадим вам тестовую лицензию на 14 дней бесплатно, чтобы вы все прощупали своими руками.
       
      А чтобы эта процедура произошла максимально оперативно, пожалуйста, укажите:
      - основной домен сайта для активации лицензии, например, https://neoseo.com.ua
      - версию OpenCart
      - версию php
       
      Мы высылаем лицензии в самые короткие сроки и если от нас нету ответа на протяжении 4 рабочих часов, пожалуйста, проверьте папку "СПАМ". А если и там нету, пишите в ЛС, найдем ).
       
      2. Все обновления к купленным модулям - бесплатно и навсегда.
      3. Техническая поддержка и оперативные ответы на вопросы - бесплатно и навсегда.
      4. NEW! Помощь в установке и устранении ошибок при установке модулей - бесплатно и навсегда, но в порядке общей очереди.
      5. NEW! Оперативный удаленный помощник по TeamViewer по специальному тарифу, 15 мин. - 369 руб. для тех, кому нужно уже, не дожидаясь бесплатной поддержки, которая предоставляется в порядке общей очереди.
       
      Обращаем внимание,  что с 01.08.2019 года техническая поддержка осуществляется исключительно через обращение на почту  info@neoseo.com.ua  Если у Вас есть вопросы информационного характера, пожалуйста, напишите в ЛС или позвоните нам:
      Россия, все звонки бесплатно
      8 800 551 94 15
        Украина: +380 67 67 07 647 +380 63 71 70 763
      +380 50 34 58 565
       
       
      МЫ РАБОТАЕМ:
      Понедельник-пятница 
      с 9-00 до 19-00 по Киевскому времени 
       
       
      Суббота и Воскресенье
      - выходные дни!
       
      Акция: напишите отзыв - получите модуль в подарок
       
      Лицензионные условия.
       
      Пожалуйста, внимательно читайте то, что написано на странице каждого модуля в инструкции
      по установке и обновлениям:
       
      Нельзя устанавливать модуль не имея лицензии!
       
      1. Лицензия вместе с файлами отправляется автоматически, сразу после оплаты! Во избежание проволочек с выдачей лицензии
      обязательно заполняйте поля: домен, версии php и OpenCart
       
      2. Распакуйте и загрузите ключ в корень сайта, рядом с robots.txt
       
      3. Распакуйте архив с модулем и загрузите содержимое папки upload на сайт
       
      4. Установите модуль посредством меню Дополнения / Модули
       
      5. Установите права на просмотр модуля нужным пользователям
       
      6. Зайдите в настройки модуля, укажите нужные параметры и сохраните настройки.
       
      ВАЖНО! Если вы видите сообщение о том, что файл лицензии не найден, не переходите к этапу #7.
      В таком случае ознакомьтесь со статьей https://neoseo.com.ua/otsutstvuet-fayl-licenzii
      или напишите нам на support@neoseo.com.ua, мы поможем выявить причину не активации лицензии. Если вы убедились в том, что модуль видит лицензию, вы можете переходить к следующему пункту.
       
      7. Обновите модификаторы (Дополнения / Модификаторы)
       
      Общий порядок обновления модулей:
       
      Советы:
       
       
      Пробуйте бесплатно!
      Напишите на почту: license@neoseo.com.ua и мы выдадим вам тестовую лицензию на 14 дней!
       
      Как предоставляется информационная поддержка? Как решить свой вопрос максимально оперативно?

       
      Важно. Условия бесплатной и платной
      информационной и технической поддержки.
       
       
      Очень часто спрашивают:

      Преимущества модулей от NeoSeo:
       
      Посмотреть работу модуля вы сможете тут:
      https://demo.neoseo.com.ua/admin
      логин: admin
      пароль: admin
       
      Пожалуйста, ознакомьтесь с полным перечнем наших модулей здесь: https://neoseo.com.ua/moduli-dlya-opencart/
       
      Нажмите здесь http://prntscr.com/j1n8xn, чтобы быть в курсе всех обновлений.
      Добавил neoseo Добавлено 13.09.2018 Категория Фильтры Системные требования PHP 5.3 - 7.2 Opencart 2.1, 2.3 Ioncube Loader 6 и выше Сайт разработчика https://neoseo.com.ua Старая цена Метод активации Автоматическая активация
      Через официальный сайт дополнения Ioncube Loader Требуется OpenCart 2.3
      2.1 ocStore 2.3
      2.1 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет  
    • By neoseo
      Увеличивайте продажи с авторской разработкой от веб-студии NeoSeo! SEO-фильтр предназначен не просто сортировать товары, но и создавать посадочные страницы, чтобы увеличить продажи Интернет-магазина, работающего на OpenCart и ocStore.   
      С помощью нашего SEO-фильтра вы сможете продвигать свой Интернет-магазин, создавая сотни или даже тысячи специальных посадочных страниц, чтобы получать из поисковой выдачи средне и низко частотный трафик бесплатно, который, между прочим, лучше всего конвертируется в продажи.
        Зачем вообще нужны “посадочные страницы” и что они вообще собой представляют?
       
      Посадочные страницы это те страницы Интернет-магазина, которые поисковые роботы считают годными для “приземления” на них своего целевого трафика.
       
      По большому счету, когда поисковые роботы сканируют ваш Интернет-магазин, они хотят понять, а какие на вашем сайте существуют посадочные страницы, чтобы понимать, по каким пользовательским запросам они будут релевантны, т.е. на какие запросы пользователей они смогут предоставить самый лучший, полный и исчерпывающий ответ. Конечно же, алгоритмы ранжирования поисковиков учитывают и еще более 200 факторов, но без посадочных вообще никуда. Читайте о том, как привести на свой сайт целевой трафик недорого в этой статье.
       
      Основные преимущества SEO-фильтра:
       
      1. Возможность создавать посадочные страницы с помощью SEO-фильтра, объединяя значение категории, например, "Ламинат" со значением опции фильтра, например,  "32 класс" для продажи ламината 32 класса (поисковые запросы от покупателей мы разместили вместо seo-текста).
       
      Что мы получаем в итоге?
       
      1. Уникальный адрес страницы, который, конечно же ЧПУ https://demo.neoseo.com.ua/laminat/laminat-klass-32/
      2 и 3. Прописываем теги и размещаем seo-текст
      4. Страница сразу попадает в самую быструю карту сайта на индексацию поисковикам
      5. Google и Яндекс счастливы, ведь они очень точно удовлетворили своего пользователя предоставив ему нужный контент.
      6. Пользователь счастлив, ведь он нашел именно то, что искал, на странице собран полезный и релевантный, отвечающий пользовательскому запросу контент и ему не нужно ковырятся в поисках на непонятных ему сайтах, что конечно же он сообщит поисковикам своими поведенческими факторами, а Вам, своими деньгами.
      7. Счастлив и скромный разработчик SEO-фильтра .
       

       
      2. Добавление новых опций фильтра. При добавлении новой опции фильтра, вы можете:
      Включать/отключать секции фильтра (при включении секции фильтра значения опции выводятся автоматически, а при отключении секции фильтра, значения опции выводятся при нажатии на опцию). Использовать дополнительное оформление. В качестве значений опций фильтра модуль позволяет использовать цвет и изображение. Выбирать тип опции в виде плитки, чекбокса и радиокнопки. Выбирать категории, в которых будут выводиться опции фильтра. Автоматически генерировать ЧПУ опции на основании названия опции Автоматически генерировать ЧПУ значений опции на основании названия значения опции.
      3. Фильтрация по цене и производителю.
      4. Возможность формировать посадочные страницы с автоматической генераций ЧПУ.
      5. Поддержка мультиязычных сайтов.
      6. Учет скидок и акций, проходящих в вашем интернет-магазине:
      7. Для каждой категории модуль позволяет создать  фильтр с собственной конфигурацией.
      8. Возможность показывать опции как атрибуты на странице товара
      9. Автоматическая генерация опций фильтра на основе атрибутов и опций товаров.
      10. Экспорт опций фильтра из модуля OCFilter.
      11. Поддержка модуля “NeoSeo Генератор ЧПУ и метаданных”.
      12. Поддержка модуля “NeoSeo Невероятно быстрая карта сайта”.
      13. Возможность выбора шаблона фильтра (вертикальный или горизонтальный)
      14. Вывод популярных тегов на основе посадочных страниц
       
      Покажем некоторые преимущества модуля на примере:
      1. Опция с цветом.
      2. Опция с изображением.
      3. Опция с включенной секцией фильтра
      4. Опция с отключенной секцией фильтра.
      5. Тип опции - плитка.
      6. Тип опции - чекбокс.
      7. Тип опции - радиокнопка.
      8. Фильтр по цене.
      9. Фильтр по производителю.
       

       
       
      Attention, только в NeoSeo:
       
      1. Пробуйте бесплатно. Напишите на почту: license@neoseo.com.ua или оформите заявку на сайте, и мы выдадим вам тестовую лицензию на 14 дней бесплатно, чтобы вы все прощупали своими руками.
       
      А чтобы эта процедура произошла максимально оперативно, пожалуйста, укажите:
      - основной домен сайта для активации лицензии, например, https://neoseo.com.ua
      - версию OpenCart
      - версию php
       
      Мы высылаем лицензии в самые короткие сроки и если от нас нету ответа на протяжении 4 рабочих часов, пожалуйста, проверьте папку "СПАМ". А если и там нету, пишите в ЛС, найдем ).
       
      2. Все обновления к купленным модулям - бесплатно и навсегда.
      3. Техническая поддержка и оперативные ответы на вопросы - бесплатно и навсегда.
      4. NEW! Помощь в установке и устранении ошибок при установке модулей - бесплатно и навсегда, но в порядке общей очереди.
      5. NEW! Оперативный удаленный помощник по TeamViewer п