if и плейсхолдеры пагинации DL для SEO

Всем доброго времени суток.

Для страниц с пагинацией, кроме первой, попросили уникализировать метатеги по страницам:
Title: [*title*] – страница N,
Description: [*description*] – страница N,
Т.е. на первой странице — просто
<title>[*titl*]</title>

на второй
<title>[*titl*] - страница 2</title>

ну и т.д.

Решил применить if

[[if? &is=`[+cat.current+]:=:1` &then=`<title>[*titl*]</title>` &else=`<title>[*titl*] - страница [+cat.current+]</title>`]]


И оказалось, что в этом месте
&is=`[+cat.current+]:=:1`

сниппет if плейсхолдер не видит, там пусто. А там где else — там все нормально.

Попробовал через PHx (в конфигурации включил фильтры). А там все наоборот. Например, была еще просьба по метатегу robots, с помощью PHx она решилась так
[+cat.current:is=`1`:then=`<meta name="robots" content="index,follow">`:else=`<meta name="yandex" content="noindex, follow">`+]


Но для title это не подходит, PHx клинит (вообще ничегот не выводится), если слепить такую конструкцию
[+cat.current:is=`1`:then=`[*titl*]`:else=`[*titl*] - страница [+cat.current+]`+]


Вопрос, как подружить if с плейсхолдерами пагинации DL?

Спасибо.
v 1.4.9

4 комментария

avatar
Никак. Они устанавливаются ниже по коду.
Поэтому делайте через просмотр массива $_GET:
[[if? &is=`[!$_GET['page']!]:is:` &then=`<title>[*titl*]</title>` &else=`<title>[*titl*] - страница [!$_GET['page']</title>`]]
avatar
да я так примерно и сделал:
[!if? &is=`[[pages]]:>:1` &then=`<title>[*titl_g*] - страница [+cat.current+]</title>
	<meta name="description" content="[*desc_g*] - страница [+cat.current+]">` &else=`
	<title>[*titl_g*]</title>
	<meta name="description" content="[*desc_g*]">
	<link href="[(site_url)][~[*id*]~]" rel="canonical">`!]

где pages
return $_GET['cat_page'];

Но все же стало интересно, почему if не видит плейсхолдер при сравнении.
avatar
То ли я пишу криво что меня никто не понимает, то ли я хз…
"Они устанавливаются ниже по коду."
У тебя сначала срабатывает сниппет IF, а потом срабатывает DocLister, который расставляет плейсхолдеры. Поэтому на момент срабатывания IF нужные плейсхолдеры не установлены!!!
avatar
Логично.
Но поставил вызов if после вызова DL — все равно не работает.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.