mFilter2 и пункт "Все"
        Здравствуйте!
Подскажите, как добавить к фильтру типа радио пункт «Все». Видел доку docs.modx.pro/components/msearch2/extension/components/msearch2/the-extension/example-of-filtering-products, но не соображу, что прописать в моем случае.
    
    
                                                                                
            Подскажите, как добавить к фильтру типа радио пункт «Все». Видел доку docs.modx.pro/components/msearch2/extension/components/msearch2/the-extension/example-of-filtering-products, но не соображу, что прописать в моем случае.
Комментарии: 8
                Можно же с помощью js, вроде как костыль, но решить можно            
                    
                Указываем для нужного фильтра outer-чанк, в котором до плейсхолдера {$rows} дописываем:
Суть: поскольку используется radio-инпут, достаточно передавать в value пустое значение, чтобы сбросить гет-параметр.
Пример реализации.
                    <label for="mse2_resource|{$название поля}_all" class="">
	<input type="radio" name="{$название алиаса поля}" id="mse2_resource|{$название поля}_all" value=""{$.get.название_гет_параметра | length == 0 ? 'checked' : ''} /> Все
</label>Суть: поскольку используется radio-инпут, достаточно передавать в value пустое значение, чтобы сбросить гет-параметр.
Пример реализации.
                Вот я муйню сморозил :) Я то думаю что нужно все значения передать :)            
                    
                Просто текст            
                    
                Если вы используете checkbox + старый mFilter2, я бы посоветовал сделать так:
1. Подключаете любую js-библиотеку, взаимодействующую с get-параметрами или написать свои функции для их получения и изменения. Например, такие:
2. Добавляете в нужном месте кнопку сброса:
                    1. Подключаете любую js-библиотеку, взаимодействующую с get-параметрами или написать свои функции для их получения и изменения. Например, такие:
function getURLParam(name) {
	return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}
function changeUrlParam(key, value, url) {
	if (!url) {
		url = window.location.href;
	}
	var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"), hash;
	if (re.test(url)) {
		if (typeof value !== 'undefined' && value !== null) {
			url = url.replace(re, '$1' + key + "=" + value + '$2$3');
		}
		else {
			hash = url.split('#');
			url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
			if (typeof hash[1] !== 'undefined' && hash[1] !== null)  {
				url += '#' + hash[1];
			}
		}
	}
	else {
		if (typeof value !== 'undefined' && value !== null) {
			var separator = url.indexOf('?') !== -1 ? '&' : '?';
			hash = url.split('#');
			url = hash[0] + separator + key + '=' + value;
			if (typeof hash[1] !== 'undefined' && hash[1] !== null) {
				url += '#' + hash[1];
			}
		}
	}
	
	if (key && (value == '' || value === null)) {
		//Присмотреться за работой - может стоит заменить на более обширную регулярку ([^&;]+?)(&|#|;|$)
		var regular = new RegExp('[?|&]' + key + '=');
		
		url = url.replace(regular, "");
	}
	
	window.history.replaceState('', '', url);
}2. Добавляете в нужном месте кнопку сброса:
<a onclick="changeUrlParam('category', ''); mSearch2.submit();">Сбросить поле 'category'</a>            
                Благодарю вас за ответ! Прошу прощения, оказывается, я использую не радио, а чекбокс)). Просто разработка сайта была остановлена на некоторое время, и я позабыл, что и как.
Подскажите, пожалуйста, как мне переделать под старый mfilter2 ваш код. Я сделал:
                    Подскажите, пожалуйста, как мне переделать под старый mfilter2 ваш код. Я сделал:
<label for="mse2_[[+table]][[+delimeter]][[+filter]]_all" class="mse2_label all-items">
        	<input type="checkbox" id="mse2_[[+table]][[+delimeter]][[+filter]]_all" name="[[+filter_key]]" class="check-all" value="" checked /> Все
        	<span class="checkmark"></span>
        </label>Что мне нужно написать в поле value?            
                Если речь все еще о radio-кнопке, то примерно так:
Расшифровка:
— суффикс _all нужен исключительно для наглядности, вы можете заменить содержимое for и id на любое другое уникальное для фильтров данной категории значение.
— в name передается название псевдонима фильтра. Если псевдоним отсутствует, указывается значение из filters (resource|parent)
— в value ничего не указывается, он остается пустым (чтобы при нажатии функция mFilter2 сбросила значение требуемого фильтра)
— обработка гет-параметра ($.get.category) нужна для проставления checked-состояния при первой загрузке страницы
                    //Допустим, мы хотим добавить кнопку для родного поля ресурса parent, указав ему псевдоним category
//'filters' => '
//	resource|parent:default
//',
//'aliases' => '
//	resource|parent==category
//'
//Код чанка будет следующим:
<label for="mse2_resource|parent_all" class="">
	<input type="radio" name="category" id="mse2_resource|parent_all" value=""{$.get.category | length == 0 ? 'checked' : ''} /> 
	<span>Сбросить фильтр category</span> 
</label>Расшифровка:
— суффикс _all нужен исключительно для наглядности, вы можете заменить содержимое for и id на любое другое уникальное для фильтров данной категории значение.
— в name передается название псевдонима фильтра. Если псевдоним отсутствует, указывается значение из filters (resource|parent)
— в value ничего не указывается, он остается пустым (чтобы при нажатии функция mFilter2 сбросила значение требуемого фильтра)
— обработка гет-параметра ($.get.category) нужна для проставления checked-состояния при первой загрузке страницы
                Разобрался! Спасибо вам большое!            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.