@raycheel

SEO, ЧПУ и прочие приблуды при использовании Yii — как?

Здравствуйте. В процессе разработки сайта, возникла проблемы с правильной организацией динамических title, keywords и description для не статических страниц.
Собственно вопрос в том, как организовать данное дело? Требуется чтобы у каждой страницы, был соответствующий ей title и сопутствующее описание (description).
2 проблемы возникли сразу:
1) Рендеринг страниц происходит до того как срабатывает $content;
2) Страниц может быть много, где хранить все заголовки? Для одних случаев я использую БД, но здесь другая история. Здесь страница является единственным ActionIndex, со списком статей. Т.е. она не зафиксирована в БД.
Как сделать это, не могу понять....
  • Вопрос задан
  • 3394 просмотра
Решения вопроса 2
metamorph
@metamorph
1. Посмотрите, как реализован title (это св-во контроллера) и по аналогии допишите description и keywords.

2. Можно, к примеру, прикрепить к записи в таблице (например) tbl_pages.
То есть, у Вас там будет храниться slug, title, description, meta_title, meta_description и meta_keywords. Дальше см. пункт 1. При загрузке записи просто присваиваете соответствующие свойства.

Title и meta_title я разделил умышленно, поскольку часто требуется отдельное управление (title - для вывода на странице, meta_title - для вывода в метатеге).
Ответ написан
Комментировать
@raycheel Автор вопроса
@metamorph спасибо за ответ. 1 шаг помог. Параллельно нашел парочку полезных методов:
1) Внутри action контроллера можно присваивать pageTitle.
public function actionIndex()
	{
		$this->pageTitle = "Главная страница";
		$this->render('index');
	}

2) Или непосредственно внутри вида (view)
$this->setPageTitle('Ваш заголовок');

Используя данные способы, не забудьте, в тег title вставить строку, которая будет это воплощать, в моём случае я сделал так:
<title><?php echo isset($this->pageTitle) ? $this->pageTitle : Yii::app()->name; ?></title>

Если заголовок указан, выводим его, иначе выводим имя нашего приложения.
И все прекрасно работает. Всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы