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

Нужен ли модуль "фильтр в категории" ?


dotsent

Recommended Posts

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

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

Т.е. например есть:

Фильтр 1

- зн1

- зн2

Фильтр 2

- зн3

- зн4

Товару нельзя выбрать зн1 и зн3 сразу. А только что-то одно.

Или это уже поправили и мне стоит установить модуль заново? :roll:

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


admin/controller/catalog/product.php в районе 1100 строки, после

foreach($results as $option) {
          $this->data['category_options'][] = array(
вписываем

'option_id' => $option['option_id'],
в итоге имеем:

foreach($results as $option) {
          $this->data['category_options'][] = array(
            'option_id' => $option['option_id'],
            'name' => $option['name'],
            'type' => $option['type'],
            'category_option_values' => $this->model_catalog_filter->getOptionValues($option['option_id'])
          );
        }

это есть в коде фильтра в каталоге :roll:

хотя я "малость охренел" пока докопался до исходного кода страницы "вкладки опций фильтра"

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

shoma, что-то вы, батенька, курите не то.

у вас затык вот тут

... (SELECT oc_product_id FROM product_to_value WHERE value_id = '3') ORDER BY p.sort_order ASC LIMIT 0,20

откуда оно там ?

я залил файлы на свежую 1.4.9.1 и все нормально работает.

вы явно делаете _что-то_ не так :)

Делал все по инструкции. ос это префикс моей бд :roll: кстати там же эти же запросы есть без префикса. один фиг тоже самое. я ставил на оссторе 1,4 версию
Надіслати
Поділитися на інших сайтах

ос это префикс моей бд

Причем тут префикс, если это название поля таблицы...
тогда вероятнее всего этот префикс в манули по установке. делал все по 2 странице. правда на оссторе
Надіслати
Поділитися на інших сайтах

shoma, спасибо за внимательность https://opencartforum.com/public/style_emoticons/default/icon_question.gif

есть такое в пятом шаге:

5) Открываем catalogmodelcatalogproduct.php

До блока

$sort_data = array(
         'pd.name',
         'p.sort_order',
         'special',
         'rating',
         'p.price',
         'p.model'
      );
Вставляем

// Start filter
          if (isset($values) && $values != '') {
            $data = array();
         
          foreach (explode('_', $values) as $value_id) {
              $data[] = "value_id = '" . (int)$value_id . "'";
            }
           
            $sql .= " AND p.product_id IN (SELECT " . DB_PREFIX . "product_id FROM " . DB_PREFIX . "product_to_value WHERE " . implode(" OR ", $data) . ")";
        }
        // End filter
должно быть

// Start filter
          if (isset($values) && $values != '') {
            $data = array();
         
          foreach (explode('_', $values) as $value_id) {
              $data[] = "value_id = '" . (int)$value_id . "'";
            }
           
            $sql .= " AND p.product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE " . implode(" OR ", $data) . ")";
        }
        // End filter

хочу обратить внимаение, что при "чистой установке"

...Если у вас чистая система и вы еще ничего в её коде не изменяли, то качайте архив Openstore_module_product_filter_1.0_(clean_install).rar и просто извлеките файлы в корень с заменой и выполните запрос в базу данных...

такой проблемы не возникает.
Надіслати
Поділитися на інших сайтах

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

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

да у нас все отлично =)

вы и так уже много сделали, отдав в паблик такой модуль.

теперь можем "допиливать" его общими усилиями.

имхо: не обязательно делать установку таблиц через админку.

...Сейчас разбираюсь с софтом в связи с заменой ос...

что на что сменили, если не секрет? https://opencartforum.com/public/style_emoticons/default/icon_question.gif
Надіслати
Поділитися на інших сайтах

"даешь IE" или "что-то не работает"

XP SP3 7.0.5730.13

поставил кроме всего прочего IETester (http://www.my-debugbar.com/wiki/) - та же картина.

кроме того, есть информация, что вобще ни в одной версии IE не работает.

кто тестил? какие результаты? мысли?

сейчас думаю чем искать причину.

но, думаю, проблема в реализации

$('#content').load('index.php?route=product/get_ajax_products&path=20&values=' + $values, function(response, status, xhr){
    if (status == "error") {
      error(xhr.status + " " + xhr.statusText);
    } else {
      //effects('out', 'fade', 'load', 200);
    }
  });
попробую переписать на что-то типа

jQuery.ajax({
				data: inputs.join('&'),
				url: "index.php?route=product/get_ajax_products&path=20&values=" + $values,
				timeout: 2000,
				error: function() {
					//console.log("Failed to submit");
					alert("Failed to submit");
				},
				success: function(r) {
					//alert(r);
					$('#content').html(r);
				}
			}) // checkout http://jquery.com/api for more syntax and options on this method.
ибо данный код исправно работает в четырех основных браузерах:

opera 10.10, iceweasel 3.5.14 (mozilla), gChrome 6.?, IE (7,8 tested)...

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

отличный модуль :(

и главное - очень вовремя :D

ребят, предложение по улучшению функционала:

сделать не только логическое ИЛИ (или то, или то), но и логическое И (и то, и то обязательно) при фильтрации в категории по свойствам товара. А опцию выбора И/ИЛИ внести в админку например :)

мне кажется, что это будет очень полезной штукой

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

да у нас все отлично =)

вы и так уже много сделали, отдав в паблик такой модуль.

теперь можем "допиливать" его общими усилиями.

имхо: не обязательно делать установку таблиц через админку.

...Сейчас разбираюсь с софтом в связи с заменой ос...

что на что сменили, если не секрет? :)
Да на макось.

Но начинаю понимать, что она в идеале подходит под медиа а коммуникации, общение, но не под веб девелоп, к сожалению

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

SooR, так и думал =)

но вернемся к нашим "баранам" - проблема с фильтром в IE.

не работает ни в одной версии из тех, что я проверял

( https://opencartforum.com/public/style_emoticons/default/icon_arrow.gif https://opencartforum.com/viewtopic.php?f=21&t=876&start=60#p7780)

похоже IE напрочь не понимает вот этого:

$('#filters input, #filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	alert("IE test _live change_"); // нет этого сообщения в IE
	loadContent();
});
пойду потестирую еще.

народ, кто пользуется фильтром, не проходите мимо проблемы :?

UPD:

пока писал сообщение - попутно тестил.

вылечил проблему так:

1. закомментировал приведенный выше код;

2. добавил в вывод каждого элемента (у меня используются только checkbox`ы)

onclick="markFilterOption();"
в итоге получилось так:

остатки оригинального кода

<script type="text/javascript"><!--
/*
$('#filters input, #filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
	loadContent();
	alert("IE test _live change_");
	markFilterOption();
});
*/

// Handling inputs in filter and getting results
/*
function loadContent() {
  var $values = '';
  var $fields = $("#filters input, #filters select").serializeArray();
  jQuery.each($fields, function(i, $field){
     if (i == 0) {
      $values += $field.value;
     } else if ($field.value == '') { 
      $values += '';
     } else {
      $values += '_' + $field.value;
     }
  });

  $('#content').load('index.php?route=product/get_ajax_products&path=<?php echo $path; ?>&values=' + $values, function(response, status, xhr){
    if (status == "error") {
      error(xhr.status + " " + xhr.statusText);
    } else {
      //effects('out', 'fade', 'load', 200);
    }
  });
}
*/

// Preloader Effects
function effects(way, type, el, dur) {
  el = $('#' + el);
  el.parent().css({'position' : 'relative'});
  
  if (type == 'fade') {
    if (way == 'in') {
      el.fadeIn(dur);
    } else {
      el.fadeOut(dur);
    }
  }
  
  if (type == 'jump') {
    el.css({'position' : 'relative'});
    el.animate({top: '-=2px'}, dur).animate({top: '+=5px'}, dur).animate({top: '-=5px'}, dur).animate({top: '+=2px'}, dur);
  }
}
// If jQuery didn't loaded something
function error(mess) {
  var msg = "Error loading: ";
  $("#filters").prepend(msg + mess);
}

//--></script>

собсно код, который сейчас отвечает за работу фильтра

(комментарии в коде "малость не отсюда", ибо этот код я взял на каком-то сайте, потом правил, потом использовал на локальном небольшом проекте и только потом впихнул в модуль фильтра :D )

<script type="text/javascript" charset="utf-8">
	// let's start the jQuery while I wait.
	// step 1: onload - capture the submit event on the form.
	//$(function() { // onload...do
	
	function markFilterOption() {
		effects('', 'jump', 'icon', 200);
		$('#filters').submit();
	}
	
	$(document).ready(function () {
		$('#filters').submit(function() {
			// now we're going to capture *all* the fields in the
			// form and submit it via ajax.
			
			// :input is a macro that grabs all input types, select boxes
			// textarea, etc.  Then I'm using the context of the form from 
			// the initial '#contactForm' to narrow down our selector
			var $values = '';
			var $fields = $("#filters input[name='value_id[]'], #filters select[name='value_id[]']").serializeArray();
			jQuery.each($fields, function(i, $field){
				if (i == 0) {
					$values += $field.value;
				} else if ($field.value == '') {
					$values += '';
				} else {
					$values += '_' + $field.value;
				}
			});
			
			// now if I join our inputs using '&' we'll have a query string
			jQuery.ajax({
				data: "",
				url: "/index.php?route=product/get_ajax_products&path=" + some_category_id_OR_path_goes_here + "&values=" + $values,
				timeout: 2000,
				error: function() {
					alert("Failed to submit");
				},
				success: function(r) {
					$('#content').html(r);
				}
			}) // checkout http://jquery.com/api for more syntax and options on this method.
			
			// re-test...
			// by default - we'll always return false so it doesn't redirect the user.
			return false;
		})
	})
</script>

мой код корректно работает в:

opera 10.10, iceweasel 3.5.14 (mozilla), gChrome 6.?, IE (7,8 tested)

осталось "пофиксить навигацию".

ибо если нет JS/AJAX (или вдруг сбой какой произошел после AJAX-получения списка категорий/товаров), то при переходе на какую-либо страницу видим "немного" не то, что хотелось бы :D

на этом все.

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

UPD2

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

все здорово, фильтр работает во всех браузерах.

только вот значения опций фильтра теперь не передаются :D

а значит битва еще не окончена :?

UPD3

ну йомайо. сколько можно провтыкивать такие моменты... :o

проблема со сбором значений опций фильтра была в том,

что я собирал input`ы с неправильными именами.

переработал код вот так (сугубо под свои нужды):

var $filter_options_fields = $("#filters input:checked").serializeArray();
			jQuery.each($filter_options_fields, function(j, $filter_options_field){
				if ($filter_options_field.name != "parent" && $filter_options_field.name != "subcatID[]") {
				//alert($filter_options_field.name);
					if (j == 0) {
						$filter_options_values += $filter_options_field.value;
					} else if ($filter_options_field.value == '') {
						$filter_options_values += '';
					} else {
						if ($filter_options_values == '') {
							$filter_options_values += $filter_options_field.value;
						} else {
							$filter_options_values += '_' + $filter_options_field.value;
						}
					}
				}
			});
отсюда, вобщем-то, вытекает вопрос:

можно ли как-то так (более "элегантно" ИМХО)

var $fields = $("#filters input[name='value_id[ТУТ_КАКОЕ_ТО_РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ]'], #filters select[name='value_id[ТУТ_КАКОЕ_ТО_РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ]']").serializeArray();
организовать сбор данных input`ов (или каких других элементов) по именам.

ушел в поиски регулярок в JS

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

свой последний вопрос решил для себя таким образом:

var $filter_options_fields = $("#filters input:checked").serializeArray();
			jQuery.each($filter_options_fields, function(j, $filter_options_field){
				if ($filter_options_field.name.match(/value_id[d*]/)) {
				//alert($filter_options_field.name);
					if (j == 0) {
						$filter_options_values += $filter_options_field.value;
					} else if ($filter_options_field.value == '') {
						$filter_options_values += '';
					} else {
						if ($filter_options_values == '') {
							$filter_options_values += $filter_options_field.value;
						} else {
							$filter_options_values += '_' + $filter_options_field.value;
						}
					}
				}
			});
спасибо старой закладке (оказывается уже задавался подобным вопросом https://opencartforum.com/public/style_emoticons/default/icon_arrow.gif )

JavaScript Kit -> RegExp (regular expression) object

http://www.javascriptkit.com/jsref/regexp.shtml

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

А теперь можно выложить модуль с уже пофиксиными файлами и свежим манулом https://opencartforum.com/public/style_emoticons/default/icon_arrow.gif Заранее спасибо. Сам модуль пока у себя не активировал, много глюков наблюдается.

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

А теперь можно выложить модуль с уже пофиксиными файлами и свежим манулом...

вот тут к сожалению помочь не могу :o

ибо пиляю его под жесткие условия.

...Сам модуль пока у себя не активировал...

значит не столкнулись еще с какими-либо сложностями.

с чем я вас и могу поздравить :?

все, нижеизложенное, является толстым "имхо`м"

и не претендует на трактование оного, как единственно верного ответа

лепить "наобум" новую альфу|бету|что-то_еще из имеющихся фиксов, мыслей, пожеланий - в данный момент - неразумно.

если бы было больше информации от всех, кто использует этот модуль, тогда глядишь и подтянется новая|пофиксеная|улучшенная версия модуля|мануала...

до тех пор, имхо, имеют место быть лишь ответы/апдейты на конкретные ошибки, у конкретных пользователей :? https://opencartforum.com/public/style_emoticons/default/icon_arrow.gif

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

Исправил замеченные мной ошибки в скрипте:

Делаем SQL запрос в БД при стандартном перфиксе oc_ (если у Вас иной поправте названия создаваемых таблиц)

CREATE TABLE IF NOT EXISTS `oc_category_option` (
  `option_id` int(10) NOT NULL AUTO_INCREMENT,
  `type` int(1) DEFAULT '0',
  `sort_order` int(10) DEFAULT '0',
  PRIMARY KEY (`option_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `oc_category_option_description` (
  `option_id` int(10) NOT NULL DEFAULT '0',
  `language_id` int(10) NOT NULL DEFAULT '0',
  `name` varchar(127) DEFAULT NULL,
  PRIMARY KEY (`option_id`,`language_id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `oc_category_option_to_category` (
  `option_id` int(11) NOT NULL,
  `category_id` int(11) NOT NULL,
  PRIMARY KEY (`category_id`,`option_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `oc_category_option_value` (
  `value_id` int(10) NOT NULL AUTO_INCREMENT,
  `option_id` int(10) DEFAULT '0',
  PRIMARY KEY (`value_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `oc_category_option_value_description` (
  `value_id` int(10) NOT NULL DEFAULT '0',
  `language_id` int(10) NOT NULL DEFAULT '0',
  `option_id` int(10) NOT NULL DEFAULT '0',
  `name` varchar(127) DEFAULT NULL,
  PRIMARY KEY (`value_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `oc_product_to_value` (
  `product_id` int(11) NOT NULL,
  `value_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`product_id`,`value_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Распаковываем архив, заменяя файлы. (установка на чистый ocstore_v0.1.4)

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

Сохраняем. Заходим в товары, выбираем товар из той категории которой мы присвоили опцию. И в появившейся закладке "Опции фильтра" выбираем необходимое значение.

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


ребят, предложение по улучшению функционала:

сделать не только логическое ИЛИ (или то, или то), но и логическое И (и то, и то обязательно) при фильтрации в категории по свойствам товара.

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

выбрать все продукты, у которых
( option_id_1 [value_id = 2 OR value_id = 3 OR value_id = 7] )
AND
( option_id_4 [value_id = 2 OR value_id = 4 OR value_id = 5] )
AND
( option_id_N [value_id = n OR value_id = n OR value_id = n] )
UPD

думаю стоит посмотреть в сторону UNION, но тут прийдется править вывод опций, сбор/отправку их значений и обработку далее в скриптах... :o

А опцию выбора И/ИЛИ внести в админку например https://opencartforum.com/public/style_emoticons/default/icon_arrow.gif

мне кажется, что это будет очень полезной штукой

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

Options Update BUG

не знаю, почему не видел этот баг раньше, но вот столкнулся:

исходные данные:

- чистая установка OpenCart 1.4.9.1;

- установленный вручную модуль.

для дальнейшего усовершенствования модуля забиты такие опции:

post-730-1293741792,217_thumb.png

Действия:

решил, что для "Phones & PDAs" маловато вариантов разрешения экрана и хотел было добавить дополнительный вариант "480 x 800".

в итоге получил:

Error: Duplicate entry '10' for key 1
Error No: 1062
INSERT INTO category_option_value SET option_id = '3', value_id = '10'
на скрине ниже (над текстом ошибки) виден кусок вывода отладочной информации.

уже поковырялся и добавил в

admin / model / catalog / filter.php / public function updateOption($option_id, $data) {}

print "
    		<strong>public function updateOption($option_id, $data) {}</strong>
    		<pre>";
    print_r($data);
    print "</pre>";
post-730-1293741792,2343_thumb.png

в этой функции есть такой участок:

$this->db->query("DELETE FROM " . DB_PREFIX . "category_option_value WHERE option_id = '" . (int)$option_id . "'");
    $this->db->query("DELETE FROM " . DB_PREFIX . "category_option_value_description WHERE option_id = '" . (int)$option_id . "'");
    
    if (isset($data['option_value'])) {
      foreach ($data['option_value'] as $value_id => $option_value) {
        $this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', value_id = '" . (int)$value_id . "'");
        
        foreach ($option_value['language'] as $language_id => $language) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value_description SET value_id = '" . (int)$value_id . "', option_id = '" . (int)$option_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($language['name']) . "'");
	}
      }
    }
все, что находится здесь внутри условия

if (isset($data['option_value'])) {
и отдает нам указанную выше ошибку.

однако корни проблемы растут малость из другого места... :?

из строк

<?php $option_value_row = 0; ?>
...
        <?php $option_value_row++; ?>
...

<script type="text/javascript"><!--
...
var option_value_row = <?php echo $option_value_row; ?>;

function addValue() {
	html  = '<tr id="option_value' + option_value_row + '" class="option">';
	html  += '<td style="width: 170px;background-color: #F5EFD1;padding:4px;">';
	<?php foreach ($languages as $language) { ?>
	html += '<input type="text" name="option_value[' + option_value_row + '][language][<?php echo $language['language_id']; ?>][name]" value="Значение ' + option_value_row + '" /> <img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" />
';
	<?php } ?>
	html += '</td>';
	html += '<td align="center"><a onclick="removeValue(' + option_value_row + ');" class="button"><span>X</span></a></td>';
	html += '</tr>';
	
	$('#block_option').append(html);
	
	option_value_row++;
}
...
//--></script>
в файле admin / view / template / module / filter_form.tpl .

= = =

Options Update FIX

для себя решил проблему следующим образом:

1) файл admin / view / template / module / filter_form.tpl

в функции function addValue() {} заменил строку

html += '<input type="text" name="option_value[' + option_value_row + '][language][<?php echo $language['language_id']; ?>][name]" value="Значение ' + option_value_row + '" /> <img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" />
';
на

html += '<input type="text" name="option_value[' + option_value_row + '_new][language][<?php echo $language['language_id']; ?>][name]" value="Значение ' + option_value_row + '_new" /> <img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" />
';
т.е. просто добавил "_new" в генерируемый для новых значений value_id

2) файл admin / model / catalog / filter.php

в функции public function updateOption($option_id, $data) {}

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

$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', value_id = '" . (int)$value_id . "'");
на

$new_value_pos = strpos($value_id, "new");
				if ($new_value_pos !== false) {
					$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "'");
					
					$value_id = $this->db->getLastId();
				} else {
					$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', value_id = '" . (int)$value_id . "'");
				}
теперь у меня при сохранении значений опций проводится проверка значения "value_id" на предмет содержания текста "new".

и если вхождение есть - то выполняем кусок кода, взятый из функции public function addOption($data) {} для вставки именно нового значения опции и получения value_id этого значения.

иначе - используется существующий value_id, который, собсно, и был передан в функцию.

post-730-1293741792,2895_thumb.png

= = =

у кого есть такая проблема - попробуйте пофиксить моим способом :roll:

у кого была такая проблема - поделитесь, пожалуйста, своим решением ;)

у кого нет и небыло - вам можно только позавидовать :D

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

...но вернемся к нашим "баранам" - проблема с фильтром в IE.

не работает ни в одной версии из тех, что я проверял

( :roll: https://opencartforum.com/viewtopic.php?f=21&t=876&start=60#p7780)

похоже IE напрочь не понимает вот этого:

$('#filters input, #filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	alert("IE test _live change_"); // нет этого сообщения в IE
	loadContent();
});
...

пересмотрел свою позицию насчет правки данного кода (:

просто "разъединил" обработку действий

$('#filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	loadContent();
});
$('#filters input').live('click', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	loadContent();
});
обратите внимание на

$('#filters input').live('click', function() {

UPD

вот уж не знаю, что,где и когда провтыкал, но сейчас у меня IE (чтоб его ###) не работает с этим кодом

/*
$('#filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	loadContent();
});
*/
поэтому я его закомментировал (у меня используются только checkbox`ы) :?

= = =

кто-нибудь думал над реализацией функционала, упомянутого в сообщении

;) https://opencartforum.com/viewtopic.php?f=21&t=876&start=60#p7846

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

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

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

Т.е. например есть:

Фильтр 1

- зн1

- зн2

Фильтр 2

- зн3

- зн4

Товару нельзя выбрать зн1 и зн3 сразу. А только что-то одно.

Или это уже поправили и мне стоит установить модуль заново? :D

А кто решил вот эту проблему? у самого возникла, раньше как-то не замечал, а тут заметил...

Или у всех работает выборка по двум фильтрам?

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


Я решил эту проблему.

Сразу после того, как её опубликовали:

:) https://opencartforum.com/viewtopic.php?f=21&t=876&start=50#p7701

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

Я делал это действие, нечего не изменилось...

wowkas, вот с этого и надо было начинать.

Я вроде ничего больше не делал - теперь уже и не знаю =)

Могу предложить два варианта:

1) проверьте на всякий случай файл

admin/view/template/catalog/get_ajax_options.tpl

тут про checkbox`ы ...
      <?php } else if ($category_option['type'] == 1) { ?>
          <?php if ($category_option['category_option_values']) { ?>
            <?php foreach ($category_option['category_option_values'] as $category_option_value) { ?>
              <?php if (in_array($category_option_value['value_id'], $product_to_value_id)) { ?>
              <label><input type="radio" name="product_to_value_id[<?php echo $category_option['option_id']; ?>]" value="<?php echo $category_option_value['value_id']; ?>" checked="checked" /> <?php echo $category_option_value['language'][$language_id]['name']; ?></label>
              <?php } else { ?>
              <label><input type="radio" name="product_to_value_id[<?php echo $category_option['option_id']; ?>]" value="<?php echo $category_option_value['value_id']; ?>" /> <?php echo $category_option_value['language'][$language_id]['name']; ?></label>
              <?php } ?>
            <?php } ?>
          <?php } ?>
      <?php } else if ($category_option['type'] == 2) { ?>
          ... тут про select

имя radio-input`a обязательно должно быть вида

name="product_to_value_id[<?php echo $category_option['option_id']; ?>]"
именно благодаря

<?php echo $category_option['option_id']; ?>
имя становится уникальным - ведь у разных групп разные option_id. а "навигация" между radio-input`ами происходит как раз по имени.

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

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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