Что-то для Joomla проставляющее nofollow на меню

tedvlee
На сайте с 07.04.2010
Offline
38
2314

CMS Joomla 1.5.22

Подскажите пожалуйста плагин или компонент позволяющий задать например для определенного пункта меню атрибут nofollow.

Хочу закрыть некоторые ссылки с той целью чтобы не перетекал вес на внутряки.

trem
На сайте с 23.07.2009
Offline
117
#1

А чем "внутряки" так провинились то? О_о

xlife
На сайте с 10.08.2009
Offline
47
#2

Правка pageNav для всех пунктов меню и модуль Nofollow menu links

П.С. на нужных мне страницах, вывожу вместо стандартного меню - модуль с параметром - noffolow у внутренних ссылок.

DiAksID
На сайте с 02.08.2008
Offline
236
#3

в директории шаблона надо создать или отредактировать файл /html/modules.php и в нём дописать свою функцию вывода модуля меню. в ней отлавливать ссылки (например по классу) и ставить им rel= "nofollow". это не сложно, заодно можно отловить "ссылки на себя" и заменить на span-ы...

show must go on !!!...
tedvlee
На сайте с 07.04.2010
Offline
38
#4
DiAksID:
в директории шаблона надо создать или отредактировать файл /html/modules.php и в нём дописать свою функцию вывода модуля меню. ...

В файле modules.php в моем случае явно отрабатываются несколько модулей специфических для используемого шаблона. А вот вывод пунктов меню обрабатывается стандартным

/modules/mod_mainmenu/helper.php

там есть такой блок и строчка в коде:


default:
case 0:
// _top
$data = '<a rel="nofollow" href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
break;
case 1:
// _blank
$data = '<a href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>';
break;
case 2:
// window.open
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$this->_params->get('window_open');

// hrm...this is a bit dickey
$link = str_replace('index.php', 'index2.php', $tmp->url);
$data = '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\');return false;">'.$image.$tmp->name.'</a>';
break;

Я не использую в меню нигде ссылки "выводить в отдельном окне" и подумал что в общем то можно было бы поменять строку

$data = '<a href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>';

на

$data = '<a href="'.$tmp->url.'" rel="nofollow">'.$image.$tmp->name.'</a>';

и для одного из пунктов меню через админку Joomla поставил "выводить в новом окне". Поскольку я убрал target="_blank" то, естетсвенно ссфлка открылась в текущем окне, то есть я правлю правильную строку! Но - атрибут rel="nofollow" не появился! 😕

Есть какие-то мысли по этому поводу ?

Radioactive
На сайте с 20.10.2008
Offline
52
#5

Решение проблемы с добавлением атрибута rel="nofollow" в пункты меню.

1. Обработка и вывод меню как правильно заметил tedvlee происходит в файле: /modules/mod_mainmenu/helper.php, участок кода начинается примерно с 357 строки:

switch ($tmp->browserNav)

{
default:
case 0:
// _top
$data = '<a href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
break;
case 1:
// _blank
$data = '<a href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>';
break;
case 2:
// window.open
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$this->_params->get('window_open');

// hrm...this is a bit dickey
$link = str_replace('index.php', 'index2.php', $tmp->url);
$data = '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\');return false;">'.$image.$tmp->name.'</a>';
break;
}

Для // _top добавляем необходимый атрибут rel="nofollow" и сохраняем файл с заменой. Для ссылок которые будут открываться в новых окнах нужно добавить атрибуты в: // _blank (новое окно с навигацией) и // window.open (новое окно без навигации).

2. Следующий этап заключается в предотвращении урезания атрибута 'rel' в файле: \modules\mod_mainmenu\tmpl\default.php

На 75 строке необходимо закомментировать условие:

До:

$node->removeAttribute('rel');

После:

// $node->removeAttribute('rel');

После этих действий все пункты меню приобретут нужный атрибут rel="nofollow".

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий