|
Какие основные недостатки Joomla! существуют при работе с ключевыми словами:
1. Глобальные ключевые слова и описание отображаются на всех страницах
2. Дублирование ключевых слов на страницах вроде «блог-раздел» и «блог-категория»
3. Длинные описания (склейки) на страницах «блог-раздел» и «блог-категория»
Это не все недостатки, но очень весомые. Рассмотрим, как возможно решить эти проблемы.
Внимание: перед тем как сделать какие бы то нибыло изменения в файлах вашего сайта сделайте их резервную копию. Для чего это нужно решайте сами :)
Глобальные ключевые слова и описание отображаются на всех страницах
Действительно, при отображении любой страницы, 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!. И возможностей у этого пути ничуть не
меньше. Например, ведь никто не запрещает нам прописать нужные ключевые
слова прямо в шаблоне, и назначить его главной странице сайта. Или
добавить в шаблон проверку на текущий компонент (страницу, группу
страниц) и в зависимости от этого, выводить тот или иной
предустановленный набор ключевых слов.
|
|
|
Проверено
By: rozen (Пользователь) on 30-07-2008 01:17