Перейти к содержимому


Фото
- - - - -

Фильтр + бренд


  • Чтобы отвечать, сперва войдите на форум
3 ответов в теме

#1 kozhushko8

kozhushko8
  • Пользователь
  • 21 сообщений
  • Дизайн
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 08.07.2020 - 08:58

Уважаемые знатоки! Сейчас ситуация выгладит следующим образом... Если выбрать бренд а потом значение в фильтре то все ок. Но если выбрать сначала значение в фильтре а потом бренд, то значение в фильтре сбросится. Ну например:

 

Ссылка на фильтр - /brands/stimma?8=черный

Ниже ссылка на бренд - /brands/lurex

 

Как сделать так чтобы, если выбран фильтр, к ссылкам на бренды он дописывался? То есть - /brands/lurex?8=черный.

 

В случае с ключевым словом все работает примерно так - {if $keyword}?keyword={$keyword|escape}{/if}, но ссылки для фильтрации включают не только utm но и адрес категории или бренда.



#2 kozhushko8

kozhushko8
  • Пользователь
  • 21 сообщений
  • Дизайн
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 08.07.2020 - 09:06

Можно конечно замутить такого вида конструкцию - href="brands/{$b->url}

{foreach $features as $key=>$f}
    {foreach $f->options as $o}
       {if $smarty.get.$key == $o->value}
           {url params=[$f->id=>$o->value, page=>null]}
       {/if}
     {/foreach}
{/foreach}
{if $keyword}?keyword={$keyword|escape}{/if}"
 
но тогда ссылки на бренды имеют следующий вид - /brands/stimma/brands/lurex?8=черный. Если будете предлагать такой вариант, тогда говорите сразу как убрать все что до "?".

Изменено: kozhushko8, 08.07.2020 - 09:06


#3 phukortsin

phukortsin
  • Фрилансер
  • 1 112 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 08.07.2020 - 10:03

Довольно хлопотно. И к тому же если сделать "к ссылкам на бренды он дописывался", выйдет много ссылок с пустым результатом поиска. Так что сначала попробуйте продумать ТОЧНО, что хотите получить... 



#4 kozhushko8

kozhushko8
  • Пользователь
  • 21 сообщений
  • Дизайн
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 16.07.2020 - 13:07

Вообще не хлопотно! В ProductsView.php:

 

// Если задан бренд, выберем его из базы

 

if ($val = $this->request->get('b'))

            $filter['brand_id'] = $val;

               elseif (!empty($brand_url)) {

                   $brand = $this->brands->get_brand((string) $brand_url);

            if (empty($brand)) return false;

            $this->design->assign('brand', $brand);

            $filter['brand_id'] = $brand->id;

}

 

Выводим в шаблоне таким способом:

 

{if $category->brands|count>1}

                        {foreach name=brands item=b from=$category->brands}

                        <label><input type="checkbox" name="b[]" value="{$b->id}"{if $smarty.get.b && $b->id|in_array:$smarty.get.b}checked{/if}>{$b->name|escape}</label>

                        {/foreach}

            {/if}

 

Будет выводится как фильтр! Писалось под себя, кому нужно адаптируйте...






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых