В Joomla существует удивительное упущение. В настройках пункта меню нет опции, позволяющей закрыть внешнюю ссылку от индексации при помощи атрибута rel=”nofollow”. В этом кейсе я расскажу, как можно исправить эту проблему без использования дополнительных расширений и хаков ядра.
Часто бывает так, что меню Joomla содержит пункты типа «Внешняя ссылка». Это может быть ссылка на скачивание или партнерская ссылка, либо какая-то еще. Иногда таких ссылок на сайте может быть много. Чтобы не терять ссылочный вес, а также участвовать в различных системах монетизации сайта, желательно свести количество сквозных внешних ссылок к минимуму, либо закрыть их от индексации через nofollow. Стандартной опции, позволяющей это сделать, в настройках Joomla нет. Есть опция «Мета-тег Robots», но она дает совсем не такой результат, который нужен.
На самом деле, эта проблема встала передо мной уже довольно давно. Но лишь недавно я наткнулся на изящное решение, которое не потребует затрагивать ядро или устанавливать плагин. Вот оно:
1. Копируем файл default_url.php из modules/mod_menu/tmpl/ в templates/ВАШ_ШАБЛОН/html/mod_menu/
2. В скопированном файле находим строчку:
defined('_JEXEC') or die;
и вставляем после нее:
$linkhost = JURI::getInstance( $item->flink )->getHost(); //хост вашей ссылки
$basehost = JURI::getInstance( JURI::base() )->getHost(); //хост вашего сайта
/*сравниваем:*/
if ($linkhost !== $basehost) {
$rel = 'rel="nofollow"';
}
3. Ниже в этом же файле находим вывод ссылок (сразу за case 0, case 1, case 2) и вставляем в них переменную $rel.
Было:
<a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?> ><?php echo $linktype; ?></a>
Стало:
<a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?> <?php echo $rel; ?>><?php echo $linktype; ?></a>
Делаем по аналогии для всех трех ссылок.
Вот и всё. Теперь все внешние ссылки, являющиеся пунктами меню Joomla, будут иметь атрибут rel=”nofollow”.
Код указанный в цитируемом сообщении отфильтровался в моем предыдущем сообщении, в общем разберетесь).