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

vier

Recommended Posts

Здравствуйте. У меня на сайте 2-е цены.

Как мне это подружить с фильтром

<file path="catalog/controller/product/category.php">

<operation error="skip">
<search><![CDATA[$price,]]></search>
			<add position="after"><![CDATA['price_2'       => $price_2,]]></add>
		</operation>
		
		<operation error="skip">
<search><![CDATA[$price = false;]]></search>
			<add position="after" offset="1"><![CDATA[if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
					$price_2 = $this->currency->format($this->tax->calculate($result['price_2'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
				} else {
					$price_2 = false;
				}]]></add>
		</operation>
		
		</file>

Спасибо.

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


19 минут назад, yurabr сказал:

Здравствуйте. У меня на сайте 2-е цены.

Как мне это подружить с фильтром

если у Вас в таблице по продуктам `product` есть данное поле - `price_2`, то модуль ее выведет в контроллере категорий.

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

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

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

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

если у Вас в таблице по продуктам `product` есть данное поле - `price_2`, то модуль ее выведет в контроллере категорий.

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

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

У меня в oc_product_discount колонка price_2.

В скидках забиваются две цены и потом выводятся на сайт. У меня это уже давно так.

Из Осмод удалил код, что выше, и на прямую залил в контроллер, вышло так:

Спойлер

            foreach ($results as $result) {
                if ($result['image']) {
                    $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                }

                if ($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')), $this->session->data['currency']);
                } else {
                    $price = false;
                }
                
                if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                    $price_2 = $this->currency->format($this->tax->calculate($result['price_2'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
                } else {
                    $price_2 = false;
                }

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

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

                if ($this->config->get('config_review_status')) {
                    $rating = (int)$result['rating'];
                } else {
                    $rating = false;
                }

                $data['products'][] = array(
                    'product_id'  => $result['product_id'],
                    'thumb'       => $image,
                    'name'        => $result['name'],
                    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
                    'price'       => $price,
                    'price_2'       => $price_2,
                    'special'     => $special,
                    'tax'         => $tax,
                    'minimum'     => ($result['minimum'] > 0) ? $result['minimum'] : 1,
                    'rating'      => $rating,
                    'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
                );
            }

Потом устанавливаю фильтр и вот как это теперь выглядит в public_shtml/system/storage/modification/catalog/controller/product/category.php

Спойлер

            foreach ($results as $result) {
                if ($result['image']) {
                    $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                }

                if ($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')), $this->session->data['currency']);

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

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

        if ($this->currency->has($this->config->get('config_currency2')) && ($this->config->get('config_currency2') != $this->session->data['currency'])) {
            $special .= ' (' . $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->config->get('config_currency2')) . ')';
        }
      
                } else {
                    $special = false;
                }

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

                if ($this->config->get('config_review_status')) {
                    $rating = (int)$result['rating'];
                } else {
                    $rating = false;
                }


                    $imgadd = $this->model_catalog_product->getProductImages($result['product_id']);
                    $img2 = array();
                    foreach ($imgadd as $imgi) {
                        $img2[] = array(
                        'thumb' => $this->model_tool_image->resize($imgi['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'))
                        );
                    }
      
                $data['products'][] = array(

                    'dateadded'  => $result['date_added'],
                    'viewed'     => $result['viewed'],
                    'rating'     => $result['rating'],
                    'stickers'   => $result['mpn'],    
                    'quantity'   => $result['quantity'],
                    'price_sticker'        => $result['price'],
                    'special_sticker'      => (isset($result['special']) ? $result['special'] : false),    
                    'images' => $img2,
                    'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),                        
      
                    'product_id'  => $result['product_id'],
                    'thumb'       => $image,
                    'name'        => $result['name'],
                    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
                    'price'       => $price,
                    'price_2'       => $price_2,
                    'special'     => $special,
                    'tax'         => $tax,
                    'minimum'     => ($result['minimum'] > 0) ? $result['minimum'] : 1,
                    'rating'      => $rating,
                    'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
                );
            }

Теперь не работает.

В тпл выводилось <span class="common-price"><?php echo $product['price']; ?></span><span class="common-price"><?php echo $product['price_2']; ?></span>

P.S. На другом сайте с фильтрпро все дружит, хотелось бы и тут...

Я не знаю, как правильно - ломать всю настроенную давно логику работы компании под фильтр или же наоборот

P.P.S. Мне фильтрация по цене вообще не нужна

Змінено користувачем yurabr
Надіслати
Поділитися на інших сайтах


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

У меня в oc_product_discount колонка price_2

колонка price_2  - это нестандартная колонка, и соответственно модуль-фильтр не знает о ее существовании и не подключает ее.

обрабатываете ее в контроллере, присвоив $product['price'] данные по условию, и выводите в tpl-файле одну переменную - $product['price'] (зачем еще в tpl-файле делать еще одну обработку - цените время Вашего сайта).

 

PS

я в своем продукте использую собственные оптимизированные запросы к БД.

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

5 минут назад, vier сказал:

колонка price_2  - это нестандартная колонка, и соответственно модуль-фильтр не знает о ее существовании и не подключает ее.

обрабатываете ее в контроллере, присвоив $product['price'] данные по условию, и выводите в tpl-файле одну переменную - $product['price'] (зачем еще в tpl-файле делать еще одну обработку - цените время Вашего сайта).

 

PS

я в своем продукте использую собственные оптимизированные запросы к БД.

Таак. Это разговор слепого с немым. Я не крутой программист. Мне нужно вывести price_2 в категории, без фильтра оно выводится, с фильтром - нет.

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

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


3 минуты назад, yurabr сказал:

Подскажите, пожалуйста, что мне дописать (удалить, отключить), чтобы все работало.

это что-то подобное надо сделать на Ваше условие в foreach

$price_2 = false;
if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
    $result['price_2'] = $this->db->query("SELECT `price_2` FROM `".DB_PREFIX."product_discount` WHERE `product_id` = ".(int)$result['product_id']." AND `customer_group_id` = ".(int)$this->config->get('config_customer_group_id')." AND `quantity` = 1 AND ((`date_start` = '0000-00-00' OR `date_start` < NOW()) AND (`date_end` = '0000-00-00' OR `date_end` > NOW())) ORDER BY `priority` ASC, `price_2` ASC LIMIT 1")->row['price_2'];
    if($result['price_2']) {
        $price_2 = $this->currency->format($this->tax->calculate($result['price_2'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
    }
}

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

 

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

8 минут назад, vier сказал:

это что-то подобное надо сделать на Ваше условие в foreach


$price_2 = false;
if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
    $result['price_2'] = $this->db->query("SELECT `price_2` FROM `".DB_PREFIX."product_discount` WHERE `product_id` = ".(int)$result['product_id']." AND `customer_group_id` = ".(int)$this->config->get('config_customer_group_id')." AND `quantity` = 1 AND ((`date_start` = '0000-00-00' OR `date_start` < NOW()) AND (`date_end` = '0000-00-00' OR `date_end` > NOW())) ORDER BY `priority` ASC, `price_2` ASC LIMIT 1")->row['price_2'];
    if($result['price_2']) {
        $price_2 = $this->currency->format($this->tax->calculate($result['price_2'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
    }
}

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

 

Большое спасибо. То, что нужно.

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


8 минут назад, yurabr сказал:

Большое спасибо. То, что нужно.

пожалуйста.

всё решаемо )

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

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

Установил фильтр, сделал, как смог, базовые настройки но фильтр не выводится(

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

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

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


1 минуту назад, sset сказал:

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

Установил фильтр, сделал, как смог, базовые настройки но фильтр не выводится(

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

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

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

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


4 минуты назад, sset сказал:

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

- возможно.

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

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

6 минут назад, sset сказал:

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

Только что еще раз попробовал привязать в макетах к категориям и получилось!

вопрос снят!

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


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

При выборе в фильтре параметра, сам фильтр реагирует а вот товары не меняются.

http://www.triplanki.com/index.php?route=product/category&amp;path=59&amp;manufs[1]=34

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


3 минуты назад, sset сказал:

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

При выборе в фильтре параметра, сам фильтр реагирует а вот товары не меняются.

это не проблема.

Вы модификатор модуля установили? - потом обновили все модификаторы - стандартная процедура.

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

18 минут назад, vier сказал:

это не проблема.

Вы модификатор модуля установили? - потом обновили все модификаторы - стандартная процедура.

да, сделал... 

 

обновил.png

установка расширений.png

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


26 минут назад, vier сказал:

это не проблема.

Вы модификатор модуля установили? - потом обновили все модификаторы - стандартная процедура.

Сдедал все еще раз и все работает!

Спасибо за помощь!!! 

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


6 минут назад, sset сказал:

да, сделал... 

и где Вы его загрузили? - закладка Модификаторов же была пуста.

если не знаете, как пользоваться базовыми настройками Opencart`а, то обратитесь к специалистам.

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

3 минуты назад, vier сказал:

и где Вы его загрузили? - закладка Модификаторов же была пуста.

если не знаете, как пользоваться базовыми настройками Opencart`а, то обратитесь к специалистам.

Мои действия

за 10.11.18:

1. В разделе "установка расширений" я загрузил нужный файл.

2. В разделе "модификаторы" я нажал кнопку обновить. По чему закладка модификаторов была пустая - я не знаю(

сегодня 12.11.18

Повторив все действия: 1,2. Но, уже раздел модификаторов был не пустой. 

 

 

повторив действие через время.png

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


я писал о вкладке Модификаторов, а не о Установке расширений. -

19 минут назад, vier сказал:

и где Вы его загрузили? - закладка Модификаторов же была пуста.

но если вопрос исчерпан, дискуссию прекращаем. - времени на это нет.

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

  • 2 weeks later...

@vier Недавно пришлось заглянуть в код модели вашего фильтра "catalog/model/module/filter_vier.php" (уже прогнанный через prettifier) и код откровенно говоря ужасен.
Код обычно пишется для людей, а не для себя. Пожалуйста поинтересуйтесь темами code style/refactoring. А то это просто жопа...
Удачи!

 

Змінено користувачем kagan
Надіслати
Поділитися на інших сайтах

2 минуты назад, kagan сказал:

Недавно пришлось заглянуть в код модели вашего фильтра "catalog/model/module/filter_vier.php" (уже прогнанный через prettifier) и код откровенно говоря ужасен.

Вы наверно не по адресу пишите. Код зашифрован - как Вы его могли посмотреть?

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

@kagan  - еще один претендент на использование пиратской версией модуля.

 

 

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

19 hours ago, vier said:

Вы наверно не по адресу пишите. Код зашифрован - как Вы его могли посмотреть?

 

19 hours ago, vier said:

@kagan  - еще один претендент на использование пиратской версией модуля.

Вам скинуть исходник?
Даже если кто-то и ставил пиратскую версию вашего модуля (я не в курсе, не я владелец того сайата где я вносил правки), зачем менять контент файла?
Я все-таки склонен к тому, что ничего не менялось..

Змінено користувачем kagan
Надіслати
Поділитися на інших сайтах

1 минуту назад, kagan сказал:

Вам скинуть исходник?

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

а код в модуле я пишу под себя (не для первоклассников), и он оптимизированный, дабы чтоб в целом модуль работать оперативно на сайте клиента.

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

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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