База знаний
Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.
Идеи по улучшению

{$filter.max_price}

Евгений Лысенков
7 августа 2023 02:25
+1

От куда берутся значения {$filter.max_price} и {$filter.min_price} ? Из основной категории (из которой seo фильтр сделан)? У меня отображаются из основной категории.

Из-за этого не работает фильтр внутри seo категории. {$filter.max_price} == ценнику родительской категории. При попытке фильтрации не правильно формируется URL. Пример -

https://xn--b1agjqvi.xn--p1ai/category/lyustry/?istochnik_sveta%5B%5D=1070&price_max=null&price_min=1&tsvet_svetilnika_%5B%5D=4

где price_max=null - ломает фильтрацию (в категории максимальная цена больше цены в seo категории).

Тема speed99
Фильтр:



{strip}
{$show_active_filters = ''}
{if !empty($filters)}
{capture active_filters}
	{foreach $filters as $fid => $filter}
		{if !($fid == 'price') && !($filter.type == 'boolean') && !(isset($filter.min))}
			{foreach $filter.values as $v_id => $v}
				{if in_array($v_id, (array)$wa->get($filter.code, array()))}
					{$show_active_filters = true}
					<div class="uk-grid-margin">
						<a href="#" class="uk-button uk-button-default uk-button-small theme-buttons-border-radius" data-name="{$filter.code}[]" data-value="{$v_id}" data-uk-tooltip="container:.active-filters-wrapper;title:[`Remove`] {$filter.name|lower} {strip_tags($v)}" style="text-transform:none;">
							<i class="mr-5">
								<svg width="1em" height="1em" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="close" style="margin-top:-3px;"><path fill="none" stroke="currentColor" stroke-width="1.06" d="M16,16 L4,4"></path><path fill="none" stroke="currentColor" stroke-width="1.06" d="M16,4 L4,16"></path></svg>
							</i>
							
							{*strip_tags($v)*}
							
							{$filter_url = shopSeofilterViewHelper::getFilterUrl($filter.id, $v_id, $filter.code)}
                            {if $filter_url}
                             <a class="filter-link" href="{$filter_url}">{$v}</a>
                            {else}
                                {strip_tags($v)}
                            {/if}
                            							
							
						</a>
					</div>
				{/if}
			{/foreach}
		{/if}
	{/foreach}
	<div class="uk-grid-margin">
		{if isset($category)}
			{$reset_url = $wa->shop->categoryUrl($category)}
		{else}
			{$reset_url = $wa->currentUrl(0,1)}
		{/if}
		<a href="{$reset_url}" class="uk-button uk-button-danger uk-button-small theme-buttons-border-radius reset" data-uk-tooltip="container:.active-filters-wrapper;title:[`Clear all filters`]">
			<i class="mr-5">
				<svg width="1em" height="1em" style="margin-top:-3px;" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="ban"><circle fill="none" stroke="currentColor" stroke-width="1.1" cx="10" cy="10" r="9"></circle><line fill="none" stroke="currentColor" stroke-width="1.1" x1="4" y1="3.5" x2="16" y2="16.5"></line></svg>
			</i>
			[`Reset`]
		</a>
	</div>

	<script>
		$('.active-filters a').not('.active-filters .reset').each(function() {
			$(this).on('click', function() {
				var data_name = $(this).data('name');
				var data_value = $(this).data('value');
				$('.filters').find('input[name="'+ data_name +'"][value="'+ data_value +'"]').trigger('click');
				return false;
			});
		});
		{*
		$('.active-filters .reset').on('click', function() {
			$('.filters input').prop( "checked", false );
			$('.filters input[type=submit]').click();

			return false;
		});
		*}
	</script>
{/capture}

{if !empty($show_active_filters)}
<!-- START lt-filters-active.html -->
<div class="active-filters-wrapper {if empty($remove_container)}uk-container {/if}{if empty($remove_margin)}uk-margin-medium-top {/if}">
	<div class="uk-grid uk-grid-small uk-grid-margined active-filters filters-active-html">
		{$smarty.capture.active_filters}
	</div>
</div>
{/if}

{/if}
<!-- END lt-filters-active.html -->
{/strip}
1 комментарий
Евгений Лысенков
+1

$filter.min_price} - тоже из основной категории (не seo фильтра)

Добавить комментарий
Чтобы добавить комментарий, войдите в личный кабинет