Vladimir_K

Настройка метатегов в объявлении.

Recommended Posts

Здравствуйте.

Нужна помощь в настройке вывода метатегов на странице с объявлением.
Вывод метатегов задан в файле header.tpl

Там есть такой код:

<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title>

И такой:

<meta name="description" content="{$meta_description}" />

Нужно сюда, для страницы с объявлением вытащить значения некоторых полей модели data. У меня, что-то не получается. Пишет ошибку.

Предположим у нас в форме есть условное поле text. Как сделать его вывод в <title>?

Пробовал как-то вот так:

<title>{if $meta_title != ''}{$meta_title}{else}{$text}{else}{$title}{/if}</title>

Не выходит.

И второе сразу. Как правильно обрезать количество симолов поля, если их будет много? Опять же пробовал:

{$text|strip_tags|truncate:100}

То же ошибка.

Поделиться сообщением


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

Условие неправильно составили.

Если хотите два else, else, то нужно использовать подусловие elseif

https://www.smarty.net/docsv2/ru/language.function.if.tpl

21 час назад, Vladimir_K сказал:

{$text|strip_tags|truncate:100}

 

А тут какую ошибку вам пишет?

Поделиться сообщением


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

Немного покрутил ещё настройки. Получается примерно следующее.

Если в 

<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title>

{$title} заменить на системное имя любого другого поля (например на text, или name_id), то не происходит ничего. В тайтл сайта по прежнему попадает содержимое переменной $title.

Если содержимое тегов  <title> ...</title> удалить, то в тайтл браузера вообще ничего не попадает. Т.е. код этот, но если начать переопределять переменные, то не срабатывает.

Тоже касается и 

22 часа назад, Vladimir_K сказал:

<meta name="description" content="{$meta_description}" />

если {$meta_description} заменить на что-то другое, то ничего не происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Vladimir_K сказал:

Немного покрутил ещё настройки. Получается примерно следующее.

Если в 


<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title>

{$title} заменить на системное имя любого другого поля (например на text, или name_id), то не происходит ничего. В тайтл сайта по прежнему попадает содержимое переменной $title.

Если содержимое тегов  <title> ...</title> удалить, то в тайтл браузера вообще ничего не попадает. Т.е. код этот, но если начать переопределять переменные, то не срабатывает.

Тоже касается и 

если {$meta_description} заменить на что-то другое, то ничего не происходит.

Покажите на что меняете и как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, rumantic сказал:

Покажите на что меняете и как.

Ну для начала, я хочу получить хоть какой-то вывод в тайтл отличный от деофлтного. Поэтому самое простое это меняем:

<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title>

На

<title>{if $meta_title != ''}{$meta_title}{else}{$text}{/if}</title>


По дискрипшну:

<meta name="description" content="{$meta_description}" />


На:

<meta name="description" content="{$text|strip_tags|truncate:100}" />

Ну или хотя бы так:

<meta name="description" content="{$text}" />

Ничего из вышеперечисленного не срабатывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Vladimir_K сказал:

Ну для начала, я хочу получить хоть какой-то вывод в тайтл отличный от деофлтного. Поэтому самое простое это меняем:


<title>{if $meta_title != ''}{$meta_title}{else}{$title}{/if}</title>

На


<title>{if $meta_title != ''}{$meta_title}{else}{$text}{/if}</title>


По дискрипшну:


<meta name="description" content="{$meta_description}" />


На:


<meta name="description" content="{$text|strip_tags|truncate:100}" />

Ну или хотя бы так:


<meta name="description" content="{$text}" />

Ничего из вышеперечисленного не срабатывает.

Потому что {$text} нигде не определено.

Если вы хотите использовать текст объявления, то нужно использовать

{$data.text.value}

Причем такое будет доступно только в карточке объекта, в других местах не будет этой переменной.

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас