Куда идем?

В 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”.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
Я один не вижу разници между "было" и "стало"?
1
pro100kalina, видимо да :-) . В "Стало" добавился вывод переменной:

Код:

<?php echo $rel; ?>

0

Цитирую Wedal:

pro100kalina, видимо да :-) . В "Стало" добавился вывод переменной:

Код:

<?php echo $rel; ?>



Код указанный в цитируемом сообщении отфильтровался в моем предыдущем сообщении, в общем разберетесь).
1
большое спасибо! Помогло
1
у вас нет материала по удалению скрытых ссылок? А то много перекопал, многое попробовал, а найти в шаблоне их не смог.
1
zamotin, такого материала нет и быть не может. Это аналитическая работа. В каждом случае алгоритм отличается.
1
А на модуль случайного изображения применимо?
1
Дмитрий, в модулях все еще проще. Нужно переопределить макет вывода модуля в ваш шаблон Joomla и отредактировать его, добавив nofollow для ссылки.
1
Добрый день. У меня в папке html нету mod_menu как быть? Создать?
1
Сергей, да, создать.
1
У меня 2 меню: верхнее и боковое. Боковое выводится с помощью s5 accordion menu. Это не повлияет?
1
Сергей, конечно смотря на что. В статье рассказывается про стандартный модуль меню Joomla (mod_menu). s5 accordion menu - это сторонний модуль. Там всё иначе.