Перейти к содержанию
Официальный форум поддержки Simpla

Каноникал для страницы с фильтром


Рекомендуемые сообщения

Здравствуйте. Необходимо добавить каноникал на страницы с фильтрами, но чтобы не затрагивать пагинацию. Есть такой код:

{if !$smarty.get.sort && !$smarty.get.557 && !$smarty.get.558 && !$smarty.get.566 && !$smarty.get.567 && !$smarty.get.568 && !$smarty.get.568 && !$smarty.get.586 && !$smarty.get.587 && !$smarty.get.573 && !$smarty.get.572 && !$smarty.get.576 && !$smarty.get.583 && !$smarty.get.605 && !$smarty.get.607 && !$smarty.get.611 && !$smarty.get.615 && !$smarty.get.590 && !$smarty.get.591 && !$smarty.get.593 && !$smarty.get.594 && !$smarty.get.604 && !$smarty.get.622 && !$smarty.get.621 && !$smarty.get.623 && !$smarty.get.630 && !$smarty.get.651 && !$smarty.get.654 && !$smarty.get.647 && !$smarty.get.653 && !$smarty.get.645 && !$smarty.get.663 && !$smarty.get.665 && !$smarty.get.666 && !$smarty.get.670 && !$smarty.get.703 && !$smarty.get.708 && !$smarty.get.755 && !$smarty.get.749 && !$smarty.get.751 && !$smarty.get.752 && !$smarty.get.769 && !$smarty.get.761 && !$smarty.get.762 && !$smarty.get.768 && !$smarty.get.681}
{else}
{if $category && $brand}
<link rel="canonical" href="{$config->root_url}/{$category->url}/{$brand->url}"/>
{elseif $category}
<link rel="canonical" href="{$config->root_url}/{$category->url}"/>
{elseif $brand}
<link rel="canonical" href="{$config->root_url}/{$brand->url}"/>
{elseif $products}
<link rel="canonical" href="{$config->root_url}"/>
{/if}
{/if}

Принцип я думаю понятен и все работает. Но есть один момент. Не могу добавить !$smarty.get.682. Страница перестает отображаться. Тоесть получается есть ограничение на количество добавляемых !$smarty.get. Есть какие то соображения по этому поводу? Буду признателен если поможете. PS прошу прощение за может быть невнятное изложение своей мысли)

Ссылка на сообщение
Поделиться на другие сайты

Если надо определять страницу фильтра, то лучше добавьте в фильтре скрытый параметр, и пишите условие через него.

А писать такие длиннющие строки - очень плохой стиль. А если потом в фильтре добавится параметр - опять менять эту строку?

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

может лучше обратится к циклу по фильтру

 

{$igf = ''}
{foreach $features as $key=>$f}
{if $smarty.get.$key}{$igf = 1}{break}{/if}
{/foreach}

{if !$igf && $category && $brand}
{$canonical="/catalog/{$category->url}/{$brand->url}" scope=parent}
{elseif !$igf && $category}
{$canonical="/catalog/{$category->url}" scope=parent}
{elseif !$igf && $brand}
{$canonical="/brands/{$brand->url}" scope=parent}
{elseif !$igf &&  $keyword}
{$canonical="/products?keyword={$keyword|escape}" scope=parent}
{elseif !$igf}
{$canonical="/products" scope=parent}
{/if}
Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

Если надо определять страницу фильтра, то лучше добавьте в фильтре скрытый параметр, и пишите условие через него.

А писать такие длиннющие строки - очень плохой стиль. А если потом в фильтре добавится параметр - опять менять эту строку?

 

Спасибо что быстро среагировали. Не очень понял что Вы имеет ввиду, объясните пожалуйста.

Ссылка на сообщение
Поделиться на другие сайты

1. В форме фильтра добавить

<INPUT TYPE="hidden" NAME="from_filter" value="1">

 

2. При проверке использовать

{if $smarty.get.from_filter}

Тут для фильтра

{else}

Тут для остальных

{/if}

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

1. В форме фильтра добавить

<INPUT TYPE="hidden" NAME="from_filter" value="1">

 

2. При проверке использовать

{if $smarty.get.from_filter}

Тут для фильтра

{else}

Тут для остальных

{/if}

 

а если это стандартный фильтр?

Ссылка на сообщение
Поделиться на другие сайты

В стандартном так действительно не пойдет.

Если ТС задается таким серьезным вопросом, то с большой вероятностью у него именно нестандартный.

А если все же стандартный, то спросит, и подскажем, как добавить доп параметр.

 

Все-таки крутить в шаблоне цикл по всем свойствам - некрасиво как-то...

Ссылка на сообщение
Поделиться на другие сайты

тогда так

 

view/ProductsView.php

 

находим

$features = array();
foreach($this->features->get_features(array('category_id'=>$category->id, 'in_filter'=>1)) as $feature)
{
   $features[$feature->id] = $feature;
   if(($val = strval($this->request->get($feature->id)))!='')
      $filter['features'][$feature->id] = $val;
}
            

добавляем

 

$this->design->assign('filter_features', $filter['features']);

в шаблоне

 

{if !$filter_features && $category && $brand}
{$canonical="/catalog/{$category->url}/{$brand->url}" scope=parent}
{elseif !$filter_features && $category}
{$canonical="/catalog/{$category->url}" scope=parent}
{elseif !$filter_features && $brand}
{$canonical="/brands/{$brand->url}" scope=parent}
{elseif !$filter_features &&  $keyword}
{$canonical="/products?keyword={$keyword|escape}" scope=parent}
{elseif !$filter_features}
{$canonical="/products" scope=parent}
{/if}
Ссылка на сообщение
Поделиться на другие сайты

Так намного лучше.

Если еще убрать многочисленные повторения if !$filter_features в одну позицию, совсем хорошо будет...

Ссылка на сообщение
Поделиться на другие сайты

В стандартном так действительно не пойдет.

Если ТС задается таким серьезным вопросом, то с большой вероятностью у него именно нестандартный.

А если все же стандартный, то спросит, и подскажем, как добавить доп параметр.

 

Все-таки крутить в шаблоне цикл по всем свойствам - некрасиво как-то...

Спасибо что помогаете. Могли бы Вы мне объяснить, что Вы имеете в виду под "стандартный" или "нестандартный" фильтр?

Изменено пользователем nekkby
Ссылка на сообщение
Поделиться на другие сайты

Нестандартный - измененный или вообще сделанный заново. Многие устанавливают свои фильтры вместо поставляемого в официальном дистрибутиве.

 

Вы бы вместо вопросов таких дали бы ссылку на сайт...

Ссылка на сообщение
Поделиться на другие сайты

Нестандартный - измененный или вообще сделанный заново. Многие устанавливают свои фильтры вместо поставляемого в официальном дистрибутиве.

 

Вы бы вместо вопросов таких дали бы ссылку на сайт...

http://optoweek.com.ua/svarochnye-invertory вот ссылка. Получается у меня стандартный, который шел в комплекте. Ну я его только не много переделал.

Изменено пользователем nekkby
Ссылка на сообщение
Поделиться на другие сайты

Получается, что очень нестандартный.

 

И с ним бы Вам полезно сначала разобраться. Например, у Вас там вложенные <form> встречаются...

Ссылка на сообщение
Поделиться на другие сайты

Получается, что очень нестандартный.

 

И с ним бы Вам полезно сначала разобраться. Например, у Вас там вложенные <form> встречаются...

А что не так с <form> ?

Ссылка на сообщение
Поделиться на другие сайты

То, что у Вас вложенность есть:

 

<form method="post" id="change_filter_form">

......

<form method="post">

......

</form>

......

</form>

Прошу прощение. Не могли бы Вы мне объяснить почему это плохо?

Ссылка на сообщение
Поделиться на другие сайты

Я Вас понял, но данная проблема относиться к фильтру "по цене" и "бренду". А мне необходимо решение "по свойствам". Но все равно спасибо за замечание. Буду исправлять. А вот как быть с решением для "свойств"?

http://yandex.ru/search/?text=html%20%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%84%D0%BE%D1%80%D0%BC%D1%8B

Изменено пользователем nekkby
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...