Joomla и SEO: оптимизация ключевых слов в Joomla 1.0

  • Среда, 11 апреля 2007

Довольно часто можно услышать от оптимизаторов, что Joomla недостаточно функциональна для решения задач поисковой оптимизации сайтов. Другие же, говорят, что все нормально и нужно просто чуть «подработать ее напильником». В этой статье, я хочу описать несколько модификаций, позволяющих улучшить работу Joomla с ключевыми словами и тем самым повысить ее возможности с точки зрения SEO.

Небольшая выдержка из Wikipedia по термину SEO:

Поисковая оптимизация (англ. search engine optimization, SEO) — оптимизация HTML-кода, текста, структуры и внешних факторов сайта с целью поднятия его в выдаче поисковой системы.

Для начала, давайте перечислим основные недостатки Joomla при работе с ключевыми словами:

Это конечно не единственные недостатки, но достаточно весомые. Теперь рассмотрим, какие существуют решения этих проблем.

ВАЖНО: перед внесением любых изменений настоятельно рекомендую сделать резервные копии модифицируемых файлов. Это позволит вам без труда отменить внесенные изменения.

Глобальные ключевые слова и описание отображаются на всех страницах

Действительно, при отображении любой страницы, Joomla «приклеивает» к списку ключевых слов страницы слова, заданные в глобальной конфигурации Joomla. И надо сказать, что пользы от этого весьма мало: с одной стороны список становиться слишком большой, с другой стороны — не все слова из глобального списка могут быть релевантны текущей страницы. И наконец, в этих списках возможно повторение одного и того же слова, а это дублирование, которое тоже пользы не приносит.

Какие могут быть варианты решения описанных проблем? В принципе, их два: использовать в глобальных ключевых словах одно-два слова, которые были бы релевантны всему сайту или отображать эти ключевые слова только на тех страницах, для которых не заданы персональные ключевые слова и описание. Второй вариант, как мне кажется, более интересен. Для его реализации необходимо сделать небольшую модификацию:

  1. Открываем файл /includes/frontend.php
  2. Находим в нем строчки:
    	$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 );
    	}
  3. Сохраняем изменения в файле

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

Дублирование ключевых слов на страницах типа «блог-раздел» и «блог-категория»

При формировании страниц типа «блог-раздел» или «блог-категория», 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;
	}

Таким образом, мы избавимся от дублирования ключевых слов на страницах типа «блог-раздел» и «блог-категория».

Длинные описания на страницах «блог-раздел» и «блог-категория»

При формировании страниц типа «блог-раздел» или «блог-категория», помимо суммирования ключевых слов, происходит суммирование и всех описаний материалов, что приводит к разрастанию поля описания страницы. Тут можно пойти разными путями:

  1. использовать глобальное описание;
  2. формировать описание из заголовков материалов.

Реализация обоих вариантов предполагает небольшую модификацию исходного кода стандартного компонента com_content.

Для использования на таких страницах глобальных ключевых слов, необходимо выполнить следующую модификацию:

  1. Открываем файл /components/com_content/content.html.php
  2. Находим в нем строчку:
    		$mainframe->appendMetaTag( 'description', $row->metadesc );
    и заменяем ее на:
    		global $option, $task;
    		if ( $task == 'view' ) {
    			$mainframe->appendMetaTag( 'description', $row->metadesc );
    		}
  3. Сохраняем изменения в файле

В результате данной модификации, описание материала будет добавляться в мета только в том случае, если в данный момент открыта страница с полным текстом материала. В противном случае, описание не добавится, а модификация, внесенная нами в самом начале статьи, добавит на страницу глобальное описание.

Для реализации третьего варианта (генерация мета-описания для страниц типа «блог-раздел» или «блог-категория» из заголовков материалов) необходимо выполнить следующую модификацию:

  1. Открываем файл /components/com_content/content.html.php
  2. Находим в нем строчку:
    		$mainframe->appendMetaTag( 'description', $row->metadesc );
    и заменяем ее на:
    		global $option, $task;
    		if ( $option != 'com_frontpage' && $task != 'view' ) {
    			$mainframe->appendMetaTag( 'description', $row->title );
    		}
  3. Сохраняем изменения в файле

Надо заметить, что в этом случае мы отключаем наш механизм формирования описания не только на странице просмотра материала, но и на главной странице. Это сделано для того, чтобы все-таки на главной работало глобальное описание.

Заключение

Ну вот вроде бы и все. В заключении хочется напомнить, что помимо описанных способов, есть еще один способ управления ключевыми словами на заданной странице (или группе страниц), не требующий модификации ядра Joomla и ее компонентов. Он заключается в использовании функционала шаблонов Joomla. И возможностей у этого пути ничуть не меньше. Например, ведь никто не запрещает нам прописать нужные ключевые слова прямо в шаблоне, и назначить его главной странице сайта. Или добавить в шаблон проверку на текущий компонент (страницу, группу страниц) и в зависимости от этого, выводить тот или иной предустановленный набор ключевых слов.

Обсудить данную статью, высказать замечания и предложить свои варианты по улучшению Joomla для SEO-оптимизации можно у нас на форуме, в разделе SEO.

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla