Александр Иващенко

Александр Иващенко

Был в сети 15 января 2022, 08:38
Заказы принимаю

я видимо чего то не понимаю. спасибо, что помогаете
вот код js:
$(document).on('change', '.filter-class', function(e) {
	//В примере все состояния фильтров хранятся в одной переменной куков 'filters_condition' в json-формате
	var filters_condition = $.cookie('filters_condition');
			
	//Смотрим, существует ли она уже, чтобы не затирать другие значения
	if (typeof filters_condition !== 'undefined' && filters_condition !== null) {
		var params = filters_condition != "" ? $.parseJSON(filters_condition) : {};
	}
	else {
		var params = {};
	}
	
	var filter_condition;
			
	if ($(this).is(':checked')) {
		filter_condition = 'checked';
	}
	else {
		filter_condition = 'not_checked';
	}

	//Уникальный атрибут, по которому будет находиться фильтр, в моем случае - name
	//Если есть риск существования одинаковых значений инпутов/селекторов в разных формах, то можно переназначить на id
	params[$(this).attr('value')] = filter_condition;
		
	$.cookie('filters_condition', JSON.stringify(params));
});
вот чанк tpl.mFilter2.filter.checkbox:
<label for="mse2_[[+table]]_[[+filter]]_[[+idx]]" class="[[+disabled]]">
{var $filters_condition = $.cookie['filters_condition'] | fromJSON}
{var $filter_condition = $filters_condition[$table ~ '_' ~ $filter]}

	<input type="checkbox" {$filter_condition == 'checked' ? 'checked' : ''} class="filter-class" name="[[+table]]_[[+filter]]" id="mse2_[[+table]]_[[+filter]]_[[+idx]]" value="[[+value]]" [[+checked]] [[+disabled]]/> [[+title]] <sup>[[+num]]</sup>
</label>
ничего не изменилось
<label for="mse2_[[+table]]_[[+filter]]_[[+idx]]" class="[[+disabled]]">
{var $filters_condition = $.cookie['filters_condition'] | fromJSON}
{var $filter_condition = $filters_condition[$table ~ '_' ~ $filter]}

	<input type="checkbox" {$filter_condition == 'checked' ? 'checked' : ''} class="filter-class" name="[[+table]]_[[+filter]]" id="mse2_[[+table]]_[[+filter]]_[[+idx]]" value="[[+value]]" [[+checked]] [[+disabled]]/> [[+title]] <sup>[[+num]]</sup>
</label>
вот содержимое чанка tpl.mFilter2.filter.checkbox
<label for="mse2_[[+table]]_[[+filter]]_[[+idx]]" class="[[+disabled]]">
{var $filters_condition = $.cookie['filters_condition'] | fromJSON}
{var $filter_condition = $filters_condition[$filter_key]}
	<input type="checkbox" {$filter_condition == 'checked' ? 'checked' : ''} class="filter-class" name="[[+table]]_[[+filter]]" id="mse2_[[+table]]_[[+filter]]_[[+idx]]" value="[[+value]]" [[+checked]] [[+disabled]]/> [[+title]] <sup>[[+num]]</sup>
</label>
который у меня тут:
[[!mFilter2?
&class=`msProduct`

&tplFilter.row.default=`tpl.mFilter2.filter.checkbox`

]]
подлючил библиотеку, что вы дали и не работает.
checked не передается.
а куда нужно писать:
{var $filters_condition = $.cookie['filters_condition'] | fromJSON}

//$filter_key - переменная чанка mFilter2, содержащая name фильтра
{var $filter_condition = $filters_condition[$filter_key]}
это я понял куда (tpl.mFilter2.filter.checkbox):
//В нужном месте инпута/селектора выводим состояние:
{$filter_condition == 'checked' ? 'checked' : ''}
у меня тут tpl.mFilter2.filter.checkbox так:
<label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" class="[[+disabled]]">
{var $filters_condition = $.cookie['filters_condition'] | fromJSON}

{var $filter_condition = $filters_condition[$filter_key]}
	<input type="checkbox" {$filter_condition == 'checked' ? 'checked' : ''} class="filter-class" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]" value="[[+value]]" [[+checked]] [[+disabled]]/> [[+title]] <sup>[[+num]]</sup>
</label>
посмотрите тут я сделал так как написали но после перехода по ссылке категории на пример с обувь в одежду у меня обнуляется значение… я тут скрипт написал ваш я не понимаю что то а есил просто на той же странице убираю /?tv|pol=мужской и нажимаю enter то переменная остается
main.js:31 Uncaught ReferenceError: current_condition is not defined
ругается на:
//Уникальный атрибут, по которому будет находиться фильтр, в моем случае - name
	//Если есть риск существования одинаковых значений инпутов/селекторов в разных формах, то можно переназначить на id
	params[$(this).attr('value')] = current_condition;
разобрался. только не понял почему)
array('class_key' => 'msProduct') — нужно передавать класс получается?

// Проходимся по всем товарам
$products = $modx->getIterator('msProduct', array('class_key' => 'msProduct'));
foreach ($products as $product) {
    // Получаем оригиналы их картинок
    $array = $product->getTVValue('12');
    echo $array;
    //$files = $product->getMany('Files', array('parent' => 0));
}