Читайте:

Специальное предложение для санаториев, пансионатов и отелей: CMS Bookhouse :: Управление заявками. Встраивается в существующий сайт в течении одного рабочего дня. Учет заявок, история обработки заявок, история результата закрытия заявок, настраиваемость, статистика. Для наших клиентов скидка 33%.

Заказать сайт
 
 
Баннер
Баннер
Баннер
Баннер
 
Зачем нужен сайт?
 

Как избавиться от сквозных ссылок в меню Joomla?

В СЕО сфере существует правильное мнение, что ПС Яндекс на сайтах не жалует сквозные ссылки. А что делать, если сайт построен на CMS и навигация организована с помощью блоков меню присутствующих на всех страницах? Как раз в этом случае владелец имеет большое количество "сквозняков" от которых лучше избавиться.

Что делать - не секрет. На первой странице остается все как есть, а вот блоки меню на остальных страницах надо закрыть от индексации.

Яндекс предлагает использовать для этой цели служебный тег-контейнер:

<noindex>закрываемый от индексации блок</noindex>

Однако, этот тег не валидный и для сохранения валидации страницы Яндекс рекомендует использовать конструкцию:

<!--noindex-->закрываемый от индексации блок<!--/noindex-->

Но этого мало, в код самой ссылки необходимо добавить атрибут rel="nofollow", чтобы ссылки в меню выглядели примерно так:

<a href="//poisk-po-sajtu.html" rel="nofollow">Поиск по сайту</a>

Вот теперь рассмотрим второй по порядку, но не по важности вопрос. Так как я в основном работаю с CMS Joomla 1.5, то вопрос будет такой:

Как на практике избавиться от сквозных ссылок в меню в CMS Joomla?

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

Начнем с шаблона (темплейта).

Открываем индексный файл вашего шаблона /templates/[имя шаблона]/index.php и смотрим его код. Как правило на сайте бывает от одного до четырех модулей меню. Каждую позицию, в которой выводится меню, нужно обернуть таким кодом. Предложим, что было так:

<jdoc:include type="modules" name="top" style="raw" />

а должно стать так:

<?php
if (strlen ($_SERVER['REQUEST_URI']) > 1 )
{ echo "<!--noindex-->";}
?>

<jdoc:include type="modules" name="top" style="raw" />

<?php
if (strlen ($_SERVER['REQUEST_URI']) > 1 )
{ echo "<!--/noindex-->";}
?>

Вставки на PHP проверяют URI и если он длиннее одного символа, то вставляется тег <!--noindex--> ... <!--/noindex-->. То есть, если это не первая страница, то вставить тег, если нет - не вставлять. Почему проверяется длина больше одного, а не больше нуля? Потому что URI первой страницы сайта обозначается наклонной чертой (один символ).

Изменяем модуль меню

Файлы модуля меню лежат по адресу: /modules/mod_mainmenu/. Открываем в этой папке файл helper.php (в том случае, если используется стиль меню "список") и находим код:

switch ($tmp->browserNav)
{
default:
case 0:
// _top

Чуть ниже находим код:

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

и заменяем ее на:

$data = '<a href="'.$tmp->url.'"';
if (strlen ($_SERVER['REQUEST_URI']) > 1)
{ $data .= ' rel="nofollow" '; }
$data .= '>'.$image.$tmp->name.'</a>';

еще чуть ниже:

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

и меняем на:

$data = '<a href="'.$tmp->url.'" target="_blank"';
if (strlen ($_SERVER['REQUEST_URI']) > 1)
{ $data .= ' rel="nofollow" '; }
$data .= '>'.$image.$tmp->name.'</a>';

Сохраняем и закрываем файл. Переходим в подпапку tmpl и открываем файл default.php в котором надо закомментировать строку:

$node->removeAttribute('rel');

Сохраняем и закрываем файл. Это все.

 

Комментарии  

 
0 # Николай 08.04.2012 21:45
Привет! Сделал вышеописанные изменения, тег заработал, а вот атрибут rel="nofollow" так и не стал добавляться к ссылкам меню. Помогите разобраться, очень нужно добавить этот атрибут!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Андрей Москалюков 09.04.2012 09:27
Проверьте еще раз весь порядок действий. Возможно вы забыли сделать последний пункт
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Николай 10.04.2012 02:01
Несколько раз подряд пробовал, не выводит и всё.. :sad:

пробовал вставлять кусок кода
if (strlen ($_SERVER['REQUEST_URI']) > 1)
{ $data .= ' rel="nofollow" '; }
В файл legasy.php
в этот участок:
case 1 :
// open in a new window
$txt = 'url . '" target="_blank" class="' . $menuclass . '" ' . $id . '>' . $mitem->name . '';
break;

Но таким образом добавил атрибут на все страницы, даже на главную. Куда смотреть, даже не знаю теперь..
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Николай 13.04.2012 00:32
Вроде получилось! Только на главной также прописывается атрибут rel="nofollow", хотя не должен благодаря:
if (strlen ($_SERVER['REQUEST_URI']) > 1 )
с тегом в самом шаблоне это же работает! Подскажите пожалуйста, в чем может быть причина?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Андрей Москалюков 13.04.2012 10:46
Обратите внимание на такой нюанс
http://moskalukov.org/ - главная страница;
http://moskalukov.org/index.php - НЕ главная страница. У нас отслеживается главная страница именно в таком понимании
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Николай 13.04.2012 11:02
Андрей, у меня главная в формате: http://moskalukov.org/
И тег "noindex" по такой схеме: if (strlen ($_SERVER['REQUEST_URI']) > 1 )
прописанной в самом шаблоне работает на ура! Т.е. выводится везде, кроме главной. А вот атрибут "nofollow" добавляется к ссылкам меню и на главной в том числе! На сайте ЧПУ. Подскажите, очень надо. Заранее спасибо!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Андрей Москалюков 13.04.2012 11:10
Тогда проверяйте, что написали в файле helper.php Видимо там ошибка. Если все правильно- пришлите мне письмо из формы обратной связи http://moskalukov.org/napishite-nam.html
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий


Защитный код
Обновить

 

CMS Bookhouse

 

Контактные данные

Skype: amoskalukov

ICQ: 63302130

Телефоны:

  • +38 (095) 561-35-97
  • +38 (067) 183-44-10
 

Последние комментарии