Jump to content

Recommended Posts

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

 

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

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

 

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

 

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

Link to post
Share on other sites

Можно конечно замутить такого вида конструкцию - 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=черный. Если будете предлагать такой вариант, тогда говорите сразу как убрать все что до "?".
Edited by kozhushko8
Link to post
Share on other sites

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

Link to post
Share on other sites
  • 2 weeks later...

Вообще не хлопотно! В 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}

 

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...