description для страницы тега

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 3 марта 2017 в 17:17
Всем привет. Столкнулся с такой проблемой. На сайте 3 типа контента и 100500 тегов. Появилась необходимость для тегов добавить description, так как иначе получается 100500 страниц с одинаковым мета-описанием.

Что я пытаюсь сделать. В файле templates/шаблон/controllers/tags/search.tpl.php в самом начале добавил строку
  1. $this->setPageDescription(sprintf($tag));
Теперь description содержит в себе сам тег.

Если сделать так
  1. $this->setPageDescription(sprintf($tag, 'какой-то текст'));
то ничего не меняется. Но если сделать так

  1. $this->setPageDescription(sprintf('какой-то текст'));
то description содержит текст "какой-то текст", то же самое, если сделать так
  1. $this->setPageDescription(sprintf('какой-то текст', $tag));
Т.е. вот этот sprintf выводит только первое значение почему-то. Перерыл весь интернет — везде пишут, что в sprintf можно выводить много значений через запятую. Пробовал "какой-то текст" добавлять через переменную — не помогает, все равно выводит только значение первой переменной.

Как можно решить эту проблему?

Также интересно, можно ли для каждого типа контента вывести свой "какой-то текст"? Понятно, что можно через if-else, но как определить тип контента в этом случае?

Спасибо.
#2 3 марта 2017 в 17:23
Чудо произойдёт только если так
  1. $this->setPageDescription(sprintf('какой-то текст о теге %s', $tag));
#3 3 марта 2017 в 17:41

Чудо произойдёт

Loadырь
Вы волшебник!)))

Спасибо огромное! Весь день сегодня ломал голову, а дело в этой закорючке))
#4 3 марта 2017 в 17:52
Специально для вас, акция выходного дня:
  1. $this->setPageDescription(sprintf('какой-то текст о типе контента %s и о теге %s', $ctype_name, $tag));
при этом $ctype_name должна быть объявлена.
#5 3 марта 2017 в 18:12
Такс… еще чуть чуть и прикрутите админку к этому делу)
#6 3 марта 2017 в 18:23

Специально для вас, акция выходного дня

Loadырь
Огромнейшее спасибо! Но я немного иначе сделал, сам разобрался))

  1. if ($ctype['name']=='posts'){
  2. $pre='первая часть текста для постов';
  3. $pos='вторая часть текста для постов ';
  4. }elseif($ctype['name']=='news'){
  5. $pre='первая часть текста для новостей';
  6. $pos='вторая часть текста для новостей';
  7. }elseif($ctype['name']=='articles'){
  8. $pre='первая часть текста для статей';
  9. $pos='вторая часть текста для статей';
  10. }else{
  11. $pre='первая часть текста для остальных типов контента';
  12. $pos='первая часть текста для остальных типов контента';
  13. }
  14.  
  15. $this->setPageDescription(sprintf('%s %s %s %s', $pre, $tag, $pos, $tag));
Выводится так: первая часть текста тег вторая часть текста тег

Теперь красиво всё)))

Loadырь, спасибо еще раз. Вопрос решен, тему закрываю.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.