Довольно часто можно услышать от оптимизаторов, что Joomla недостаточно функциональна для решения задач поисковой оптимизации сайтов. Другие же, говорят, что все нормально и нужно просто чуть «подработать ее напильником». В этой статье, я хочу описать несколько модификаций, позволяющих улучшить работу Joomla с ключевыми словами и тем самым повысить ее возможности с точки зрения SEO.
Небольшая выдержка из Wikipedia по термину SEO:
Поисковая оптимизация (англ. search engine optimization, SEO) — оптимизация HTML-кода, текста, структуры и внешних факторов сайта с целью поднятия его в выдаче поисковой системы.
Для начала, давайте перечислим основные недостатки Joomla при работе с ключевыми словами:
- Глобальные ключевые слова и описание отображаются на всех страницах
- Дублирование ключевых слов на страницах типа «блог-раздел» и «блог-категория»
- Длинные описания на страницах «блог-раздел» и «блог-категория»
Это конечно не единственные недостатки, но достаточно весомые. Теперь рассмотрим, какие существуют решения этих проблем.
ВАЖНО: перед внесением любых изменений настоятельно рекомендую сделать резервные копии модифицируемых файлов. Это позволит вам без труда отменить внесенные изменения.
Глобальные ключевые слова и описание отображаются на всех страницах
Действительно, при отображении любой страницы, Joomla «приклеивает» к списку ключевых слов страницы слова, заданные в глобальной конфигурации Joomla. И надо сказать, что пользы от этого весьма мало: с одной стороны список становиться слишком большой, с другой стороны — не все слова из глобального списка могут быть релевантны текущей страницы. И наконец, в этих списках возможно повторение одного и того же слова, а это дублирование, которое тоже пользы не приносит.
Какие могут быть варианты решения описанных проблем? В принципе, их два: использовать в глобальных ключевых словах одно-два слова, которые были бы релевантны всему сайту или отображать эти ключевые слова только на тех страницах, для которых не заданы персональные ключевые слова и описание. Второй вариант, как мне кажется, более интересен. Для его реализации необходимо сделать небольшую модификацию:
- Открываем файл /includes/frontend.php
- Находим в нем строчки:
$mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc ); $mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys );
и заменяем на
$description = ''; $keywords = ''; $_meta_keys_index = -1; $_meta_desc_index = -1; $n = count( $mainframe->_head['meta'] ); for ($i = 0; $i < $n; $i++) { if ($mainframe->_head['meta'][$i][0] == 'keywords') { $_meta_keys_index = $i; $keywords = $mainframe->_head['meta'][$i][1]; } else if ($mainframe->_head['meta'][$i][0] == 'description') { $_meta_desc_index = $i; $description = $mainframe->_head['meta'][$i][1]; } } if (!$description) { $mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc ); } if (!$keywords) { $mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys ); }
- Сохраняем изменения в файле
После внесения описанной модификации, глобальные ключевые слова и глобальное описание будут отображаться только на тех страницах, для которых значения ключевых слов и описания не заданы локально.
Дублирование ключевых слов на страницах типа «блог-раздел» и «блог-категория»
При формировании страниц типа «блог-раздел» или «блог-категория», Joomla автоматически суммирует все ключевые слова и описания материалов. В результате получается достаточно большой список, и весьма велика вероятность получения дубликатов ключевых слов. Поэтому здесь напрашивается некий механизм исключения дубликатов.
Чтобы избежать повторения ключевых слов, в предыдущем фрагменте кода, сразу после строк:
if (!$keywords) { $mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys ); }
добавим дополнительный код для удаления дубликатов:
if ($_meta_keys_index != -1) { $keys = $mainframe->_head['meta'][$_meta_keys_index][1]; $keys = preg_replace("/\,+/is", ", ", $keys); $keys = preg_replace("/\s+/is", " ", $keys); $keys = strtolower($keys); $keys = implode(', ', array_unique(split(', ', $keys))); $mainframe->_head['meta'][$_meta_keys_index][1] = $keys; }
Таким образом, мы избавимся от дублирования ключевых слов на страницах типа «блог-раздел» и «блог-категория».
Длинные описания на страницах «блог-раздел» и «блог-категория»
При формировании страниц типа «блог-раздел» или «блог-категория», помимо суммирования ключевых слов, происходит суммирование и всех описаний материалов, что приводит к разрастанию поля описания страницы. Тут можно пойти разными путями:
- использовать глобальное описание;
- формировать описание из заголовков материалов.
Реализация обоих вариантов предполагает небольшую модификацию исходного кода стандартного компонента com_content.
Для использования на таких страницах глобальных ключевых слов, необходимо выполнить следующую модификацию:
- Открываем файл /components/com_content/content.html.php
- Находим в нем строчку:
$mainframe->appendMetaTag( 'description', $row->metadesc );
и заменяем ее на:
global $option, $task; if ( $task == 'view' ) { $mainframe->appendMetaTag( 'description', $row->metadesc ); }
- Сохраняем изменения в файле
В результате данной модификации, описание материала будет добавляться в мета только в том случае, если в данный момент открыта страница с полным текстом материала. В противном случае, описание не добавится, а модификация, внесенная нами в самом начале статьи, добавит на страницу глобальное описание.
Для реализации третьего варианта (генерация мета-описания для страниц типа «блог-раздел» или «блог-категория» из заголовков материалов) необходимо выполнить следующую модификацию:
- Открываем файл /components/com_content/content.html.php
- Находим в нем строчку:
$mainframe->appendMetaTag( 'description', $row->metadesc );
и заменяем ее на:
global $option, $task; if ( $option != 'com_frontpage' && $task != 'view' ) { $mainframe->appendMetaTag( 'description', $row->title ); }
- Сохраняем изменения в файле
Надо заметить, что в этом случае мы отключаем наш механизм формирования описания не только на странице просмотра материала, но и на главной странице. Это сделано для того, чтобы все-таки на главной работало глобальное описание.
Заключение
Ну вот вроде бы и все. В заключении хочется напомнить, что помимо описанных способов, есть еще один способ управления ключевыми словами на заданной странице (или группе страниц), не требующий модификации ядра Joomla и ее компонентов. Он заключается в использовании функционала шаблонов Joomla. И возможностей у этого пути ничуть не меньше. Например, ведь никто не запрещает нам прописать нужные ключевые слова прямо в шаблоне, и назначить его главной странице сайта. Или добавить в шаблон проверку на текущий компонент (страницу, группу страниц) и в зависимости от этого, выводить тот или иной предустановленный набор ключевых слов.
Источник: http://joomlaportal.ru/content/view/1341/68/