Yii framework. Мета теги и канонические ссылки

Yii framework. Мета теги и канонические ссылки
Yii framework. Как добавить title, мета теги description и канонические ссылки к статьям.

Продолжая писать об улучшениях для блога на Yii framework , сегодня напишу о том как добавить title, мета теги description и канонические ссылки к статьям.

На самом деле добавление мета данных и заголовка страницы не является сложным процессом и может быть реализовано стандартными средствами Фреймворка. Канонические ссылки  используются для указания на страницу контент который может дублироваться и способствуют лучшей индексации сайта.

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

  1. http://websiteprog.ru/web_razrabotka/yii_framework_meta_tegi_i_kanonicheskie_ssylki
  2. http://websiteprog.ru/yii_framework_meta_tegi_i_kanonicheskie_ssylki

Для добавления в Yii framework канонических ссылок я добавил свойство и метод в PostController:

...
protected $_canonicalUrl;
...
public function getCanonicalUrl() 
{
  if (isset($_GET['id']))
  {		
     if ($this->_canonicalUrl === null) 
     {
        $params = array('id'=>$_GET['id']);
        $this->_canonicalUrl=Yii::app()->createAbsoluteUrl($this->route, $params);
     }
   } else
       $this->_canonicalUrl = null;
 
  return $this->_canonicalUrl;
}
...

На самом деле в этом блоге я использую уникальные алиасы для идентификации статей. И вместо 'id'  у меня везде прописано 'alias'. Затем я добавил вывод ссылки в макете main.php в теге head:

if (isset($this->canonicalUrl))
  echo "<link rel='canonical' href='$this->canonicalUrl'>";

Собственно все. Теперь каждая статья будет ссылаться на канонический url. Чтобы иметь возможность редактировать мета теги необходимо добавить соответствующие поля в базу данных и атрибуты к модели:

...
public function rules()
{
...
 array('page_title, page_description, page_keywords','match',
 'pattern'=>'/^[\w\s,.]+$/u','message'=>'мета теги содержат запрещенные символы.'),
...
public function attributeLabels()
{
...
  'page_title' => 'Заголовок страницы',
  'page_description' => 'Описание страницы',
...

 Затем добавляем их к форме редактирования в представлении модели _form.php:

...
  <div class="row">
    <?php echo $form->labelEx($model,'page_title'); ?>
    <?php echo $form->textArea($model,'page_title',array(
       'rows'=>3,
       'cols'=>50)); ?>
    <?php echo $form->error($model,'page_title'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'page_description'); ?>
    <?php echo $form->textArea($model,'page_description',array(
       'rows'=>3,
       'cols'=>50)); ?>
    <?php echo $form->error($model,'page_description'); ?>
  </div>
...

и выводим в представлении view.php: 

...
if ($model->page_title)
  $this->pageTitle=$model->page_title;
 
if ($model->page_description)
  Yii::app()->clientScript->registerMetaTag($model->page_description,'description');
...

Вот и все.В yii framework заголовок страницы формируется путем переопределения свойства контроллера а мета теги добавляются через соответствующий метод приложения.

Комментарии

Добавить комментарий