Вывод SEO мета тегов

Хотел бы сделать универсальное средство для вывоба SEO метатегов для любой модели и задался вопросом как это лучше реализовать:

  • Через Behavior - боюсь что не получится, ибо он не взаимодействует с рендером. Т.е. такой код увы не работает

SeoBehavior.php




...

 public function beforeSave($event){

		Yii::app()->clientScript->registerMetaTag('This is an example', 'description');

		return parent::beforeSave($event);

	 }

...



Так же не понятно в таком подходе как создавать


<title>

тег.

  • через модуль. Но тогда не очень очевидно как его подключать

Что хотелось бы в идеале ?

В идеале как я вижу работу "прикрутки" примерно так: подключаем в модели его, указывая какие поля отвечают за какие мета теги в рендере. Дальше он все делает сам.




'seo' => array(

          'class'=>'ext.seo.SeoBehavior',

           'titleField'=>'title',

),	



Какие будут идеи по поводу реализации ?

Сейчас я решаю такую задачу через класс SEOActiveRecord, потому что для полей seo_description, seo_keywords и т.п. также нужны и attributeLabels(), и rules(). Этот класс наследуют все модели, с которыми связаны мета теги (в соответствующих таблицах поля также должны присутствовать). Также есть виджет, который помогает вывести поля формы для редактирования этих тегов (чтобы не дублировать во всех _form.php один и тот же код). Вывод же самих тегов можно осуществлять либо в контроллере, либо в представлении (метод registerMetaTag) с помощью какой-нибудь функции, которая принимает в качестве аргумента объект модели и смотрит, какие теги заполнены.

Вообще, хранение мета тегов, тайтла и т.п. в модели, на мой взгляд, не очень логично. Они связаны, скорее, со страницей сайта (URL), но и первый вариант вполне работает, когда нет времени для придумывания “универсальных” решений :)

Реализация в виде поведения http://yiiframework.ru/forum/viewtopic.php?f=9&t=4168

И labels и rules можно задавать также для атрибутов из поведений…

По поводу привязки к URL-ам - точно подмечено. особенно для каталожных страниц, у которых page=1,2… Однако, в любом случае "базовое значение", которое можно получить по названию объекта правильно "дёргать" из модели

Спасибо, интересная реализация в виде поведения, но нужно это еще как-то с админкой связать, чтобы обычный человек тоже смог прописать теги для любой страницы :)

По поводу каталожных страниц не очень понял. Я думаю, что номер страницы никак не должен влиять на мета теги. Я имел в виду, что модели - это одно, а страницы на сайте - это другое, и не стоит мешать мух с котлетами (хотя на практике это особо никого не волнует). Плюс возникает такая проблема, что если есть на сайте новости, то задать для каждой новости мета теги не проблема, а вот где сделать задание тегов для страницы списка новостей - вопрос :)