2014-11-20 3 views
0

В настоящее время мои метаописания и ключевые слова содержатся в моем default.ctp файле, расположенном в \app\View\Layouts. Похоже, что это приводит к тому же мета-описанию для каждой страницы моего сайта. Надеюсь, все в порядке.CakePHP 2.1.3 SEO Meta Описания для отдельных страниц vs default.ctp

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

Например, есть код, который я могу добавить к отдельному .ctp файлам, расположенным в app\View\Pages, который затем переопределит метаописания, найденные в default.ctp?

Спасибо за любую помощь!

ответ

0

Я не эксперт по SEO, поэтому я не могу сказать вам, насколько хорошие или плохие дублированные описания относятся к ранжированию страниц и тому подобное, однако, по моему опыту, Google, например, будет склоняться к предпочтению содержимого страницы метаописания чаще, если описание дублируется на многих страницах, однако, конечно, не обязательно должно быть соотношение.

Это, как говорится, я бы предложил использовать блоки просмотра, они могут быть переопределены из любого места в ваших шаблонах.

Layout

<!DOCTYPE html> 
<html> 
    <head> 
     <!-- ... --> 
     <?php 
     $this->startIfEmpty('description'); 
     echo $this->Html->meta('description', 'Default description'); 
     $this->end(); 
     echo $this->fetch('description'); 
     ?> 
     <!-- ... --> 
    </head> 

Update: startIfEmpty() был введен с CakePHP 2.3, в более ранних версиях было бы необходимо проверить для существующего блока вручную, что-то вроде, например

$description = $this->fetch('description'); 
if(empty($description)) { 
    echo $this->Html->meta('description', 'Default description'); 
} 
echo $description; 

Конкретный шаблон страницы

$this->assign('description', $this->Html->meta('description', 'Specific description')); 

См. http://book.cakephp.org/2.0/en/views.html#view-blocks для получения дополнительной информации.

+0

Спасибо за комментарий! Я попытался изменить default.ctp и одно из своих представлений, но это дало мне фатальную ошибку: Неустранимая ошибка: вызов неопределенного метода View :: startIfEmpty() в /var/www/staging.grouptweet.com/app/View /Layouts/default.ctp on line 64 Неустранимая ошибка: доступ к необъявленному статическому свойству: App :: $ _ classMap в /var/www/staging.grouptweet.com/lib/Cake/Core/App.php в строке 532 – rcraft10

+0

@ rcraft10 Простите, я не понял, что в то время как блоки просмотра, где добавлено в 2.1, 'startIfEmpty()' был введен в 2.3. Я обновил свой ответ дополнительным примером. – ndm

Смежные вопросы