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

filter Pro [Поддержка]


freelancer

Recommended Posts

Такая же проблема, в теме есть ответы по этому поводу но конкретного решения я не нашел и не понял как сделать:

Сейчас

111.png

Необходимо порядок:

87 мм (3,5 дюйм)

100 мм (4 дюйм.)

130 мм (5 дюйм.)

150 мм (6 дюйм.)

165 мм (6,5 дюйм.)

200 мм (8 дюйм.)

100х150 мм (4х6 дюйм.)

130х180мм (5x7 дюйм.)

150х200 мм (6х8 дюйм.)

150х230 мм (6х9 дюйм.)

180х250 мм (7х10 дюйм.)

Как решить?

покажу на примере


  	   foreach($this->data['attributes'] as $attribute_group_id => $attribute_group) {
      	   foreach($attribute_group['attribute_values'] as $attribute_id => $attribute){
          	 if ($attribute_id==4){
              	 $sort_order = array("16GB" => 2, "32GB" => 3, "4GB" => 0, "64GB" =>4 , "8гб" => 1);
              	 array_multisort($sort_order, SORT_ASC, $this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);
          	 }
      	   }  
  	   }

код в контроллере фильтра перед

   	 $this->data['price_slider'] = $filterpro_setting['price_slider'];

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

Подскажите, как в случае если по заданным критериям товар не найден, вывести надпись вроде - " товар не найден, измените критерии поиска" вместо " Показано с 0 по 0 из 0 (всего 0 страниц) "

В личке получил ответ, выношу в общую:

catalog/controller/module/filterpro.php, 444
$pagination_html = $pagination->render();
if ($product_total==0){
$pagination_html = "не найдено";
}
$min_price = $this->currency->convert($min_price, $this->config->get('config_currency'), $this->currency->getCode());
$max_price = $this->currency->convert($max_price, $this->config->get('config_currency'), $this->currency->getCode());
$json = json_encode(array('result' => $result, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination_html,
'totals_data' => array('manufacturers' => $totals_manufacturers, 'options' => $totals_options, 'attributes' => $totals_attributes)));

freelancer_у спасибо!

У себя сделал так:

$pagination_html = "<html><h4>По Вашему запросу ничего не найдено. Попробуйте изменить критерии поиска или свяжитесь с нами.</h4></html>";

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


покажу на примере


  	   foreach($this->data['attributes'] as $attribute_group_id => $attribute_group) {
   	   foreach($attribute_group['attribute_values'] as $attribute_id => $attribute){
	   	 if ($attribute_id==4){
		   	 $sort_order = array("16GB" => 2, "32GB" => 3, "4GB" => 0, "64GB" =>4 , "8гб" => 1);
		   	 array_multisort($sort_order, SORT_ASC, $this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);
	   	 }
   	   }  
  	   }

код в контроллере фильтра перед

   	 $this->data['price_slider'] = $filterpro_setting['price_slider'];

Спасибо помогло. А как быть с другими страницами? Там такие же атрибуты но их другое количество. У меня выдает ошибку:

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in /catalog/controller/module/filterpro.php on line 240

и сортирует неправильно.

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


В личке получил ответ, выношу в общую:

А зачем вы тег <html> используете для вывода информации? Достаточно одного заголовочного <h4>.

И наверное вы имели в виду вот что (наверняка ведь кто-то не глядя скопирует с кусками BB-кода, как я).

Было в catalog/controller/module/filterpro.php:

 $pagination->url = 'page={page}';
 $min_price = $this->currency->convert($min_price, $this->config->get('config_currency'), $this->currency->getCode());
 $max_price = $this->currency->convert($max_price, $this->config->get('config_currency'), $this->currency->getCode());
 $json = json_encode(array('result' => $result, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination->render(),
	 'totals_data' => array('manufacturers' => $totals_manufacturers, 'options' => $totals_options, 'attributes' => $totals_attributes)));

Стало:

$pagination->url = 'page={page}';
$pagination_html = $pagination->render();
if ($product_total==0){
$pagination_html = "не найдено";
}
$min_price = $this->currency->convert($min_price, $this->config->get('config_currency'), $this->currency->getCode());
$max_price = $this->currency->convert($max_price, $this->config->get('config_currency'), $this->currency->getCode());
$json = json_encode(array('result' => $result, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination_html,
'totals_data' => array('manufacturers' => $totals_manufacturers, 'options' => $totals_options, 'attributes' => $totals_attributes)));

В $json вместо $pagination->render() передается $pagination_html

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

А зачем вы тег <html> используете для вывода информации? Достаточно одного заголовочного <h4>.

И наверное вы имели в виду вот что (наверняка ведь кто-то не глядя скопирует с кусками BB-кода, как я).

Было в catalog/controller/module/filterpro.php:

 $pagination->url = 'page={page}';
 $min_price = $this->currency->convert($min_price, $this->config->get('config_currency'), $this->currency->getCode());
 $max_price = $this->currency->convert($max_price, $this->config->get('config_currency'), $this->currency->getCode());
 $json = json_encode(array('result' => $result, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination->render(),
	 'totals_data' => array('manufacturers' => $totals_manufacturers, 'options' => $totals_options, 'attributes' => $totals_attributes)));

Стало:

$pagination->url = 'page={page}';
$pagination_html = $pagination->render();
if ($product_total==0){
$pagination_html = "не найдено";
}
$min_price = $this->currency->convert($min_price, $this->config->get('config_currency'), $this->currency->getCode());
$max_price = $this->currency->convert($max_price, $this->config->get('config_currency'), $this->currency->getCode());
$json = json_encode(array('result' => $result, 'min_price' => $min_price, 'max_price' => $max_price, 'pagination' => $pagination_html,
'totals_data' => array('manufacturers' => $totals_manufacturers, 'options' => $totals_options, 'attributes' => $totals_attributes)));

В $json вместо $pagination->render() передается $pagination_html

выложил именно то. что получил от freelancer_а и что вставил себе

да, $pagination->render() заменяется на $pagination_html :rolleyes:

не силен в PHP, но прослеживается связь с

$pagination_html = $pagination->render();
if ($product_total==0){
$pagination_html = "не найдено";
}

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


Я о том, что вы скопировали код вместе с форумным выделением жирным шрифтом тегами [ b ] и [ /b ], что сделал freelancer для вашего удобства, чтобы было видно какой кусок кода меняется:

'pagination' => [b]$pagination_html[/b],

Но беда в том, что эти теги не удаляются, если использовать оформление в виде кода. Поэтому если его в таком виде вставить в файл, ничего хорошего не произойдет, и желательно эти теги убрать :-)

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

Спасибо помогло. А как быть с другими страницами? Там такие же атрибуты но их другое количество. У меня выдает ошибку:

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in /catalog/controller/module/filterpro.php on line 240

и сортирует неправильно.

а вы покажите как делаете. вышеописанный метод работает на моём демо

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

а вы покажите как делаете. вышеописанный метод работает на моём демо

Метод работает если на странице точное соответствие количества и порядок вывода параметров атрибутов.

Пример у меня вот так:

foreach($this->data['attributes'] as $attribute_group_id => $attribute_group) {

foreach($attribute_group['attribute_values'] as $attribute_id => $attribute){

if ($attribute_id==50){

$sort_order = array("100 мм (4 дюйм.)" => 2, "100х150 мм (4х6 дюйм.)" => 7,"130 мм (5 дюйм.)" => 3,"130х180мм (5x7 дюйм.)" => 8,"150х230 мм (6х9 дюйм.)" => 10,"165 мм (6,5 дюйм.)" => 5,"180х250 мм (7х10 дюйм.)" => 11,"200 мм (8 дюйм.)" => 6,"87 мм (3,5 дюйм)" => 1);

array_multisort($sort_order, SORT_ASC, $this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);

}

}

}

выводит на странице Автоакустика так:

87 мм (3,5 дюйм)

100 мм (4 дюйм.)

130 мм (5 дюйм.)

150 мм (6 дюйм.)

165 мм (6,5 дюйм.)

200 мм (8 дюйм.)

100х150 мм (4х6 дюйм.)

130х180мм (5x7 дюйм.)

150х200 мм (6х8 дюйм.)

150х230 мм (6х9 дюйм.)

180х250 мм (7х10 дюйм.)

Все ок так и надо. Но вот проблема перехожу на страницу Автоакустика - > Коаксиальная автоакустика:

Выдает ошибку выше написанную, из-за того что в категории "Коаксиальная автоакустика" отсутствует товары с Типоразмером - 150х200 мм (6х8 дюйм.) и 150 мм (6 дюйм.). Идет несоответствие количеству и порядку отсюда ошибка.

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


Идет несоответствие количеству и порядку отсюда ошибка.

верно.

тогда так

               	 $values = array_flip($this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);

              	 $sort_order = array_intersect_key(array("16GB" => 2, "32GB" => 3, "4GB" => 0, "64GB" =>4 , "8гб" => 1), $values);
              	 array_multisort($sort_order, SORT_ASC, $this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);

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

Я о том, что вы скопировали код вместе с форумным выделением жирным шрифтом тегами [ b ] и [ /b ], что сделал freelancer для вашего удобства, чтобы было видно какой кусок кода меняется:

'pagination' => [b]$pagination_html[/b],

Но беда в том, что эти теги не удаляются, если использовать оформление в виде кода. Поэтому если его в таком виде вставить в файл, ничего хорошего не произойдет, и желательно эти теги убрать :-)

это я их пытался выделить :oops: , CODE их проглотил, а я как-то я этот момент упустил, спасибо что обратили мое внимание, в дальнейшем постараюсь не допускать :-)

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


верно.

тогда так

			   	 $values = array_flip($this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);

		   	 $sort_order = array_intersect_key(array("16GB" => 2, "32GB" => 3, "4GB" => 0, "64GB" =>4 , "8гб" => 1), $values);
		   	 array_multisort($sort_order, SORT_ASC, $this->data['attributes'][$attribute_group_id]['attribute_values'][$attribute_id]['values']);

Все получилось. Огромное спасибо.

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


Реально в последнюю версию добавить фильтр "По наличию"? При условии что я не использую для фильтрации "Опции", у меня нет пересчета количества(много товаров, тормозит ужасно). И есть ли задумки оптимизации фильтра, потому что все таки тормозит при фильтрации большого количества товаров и при переходе на другую страницу.

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


Реально в последнюю версию добавить фильтр "По наличию"? При условии что я не использую для фильтрации "Опции", у меня нет пересчета количества(много товаров, тормозит ужасно). И есть ли задумки оптимизации фильтра, потому что все таки тормозит при фильтрации большого количества товаров и при переходе на другую страницу.

оптимизацию нужно смотреть на реальных данных

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

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

Хотела приобрести модуль, но вот пункт в форме покупки Zip/Postcode не знаю что проставлять.

напишите в ЛС если модуль действительно нужен

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

Фильтр должен нормально функционировать в производителях?

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

Как это исправить?

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


Фильтр должен нормально функционировать в производителях?

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

Как это исправить?

фильтр подхватывает только текущую категорию. напишите ваши пожелание в этой теме https://opencartforum.com/topic/16826-сбор-средств-на-доработки-filterpro

возможно войдет в релиз

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

Подскажите пожалуйста, как осуществить вывод атрибутов вместо описания в списке товаров?

Спасибо

https://opencartforum.com/topic/10096-filter-pro/page__view__findpost__p__115734

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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