На WebOnLife, как и на многих других сайтах, в форме комментариев есть поле сайт. Редко кто оставляет это поле не заполненным и внешних ссылок накопилось достаточно много. Ссылки были закрыты в nofollow, но есть мнение что это не спасает от потери веса. Ещё меня не устраивало то что ссылки открывались в этом же окне, а не в новом.
Обе проблемы решаются одной строчкой кода на Javascript. Вместо старого доброго тега <a> нужно вставить
<span onclick="window.open('URL сайта')">комментатор</span>
или если хотите чтобы ссылка открывалась в этом же окне
<span onclick = "location.href = 'URL сайта'">комментатор</span>
Теперь всё это нужно вставить в тему. Для этого берём файл comment.tpl.php. Если его нет в папке с темой, скопируйте его туда из папки с модулем comment. В дефолтном шаблоне за вывод имени комментатора и даты отвечает переменная $submitted. Она содержит данные из переменных $author и $created. В $created - дата создания комментария. В $author храниться имя комментатора. Проблема в том, что $author выводит или текст или ссылку, если было заполнено поле сайт. А нам нужно получить отдельно имя и URL. Поэтому создадим свои переменные, а нужные нам данные получим следующим образом.
/*URL*/
$content['comment_body']['#object']->homepage
/*Имя*/
$content['comment_body']['#object']->name
Не забываем о пользователях не заполнивших поле сайт. Для них, используя конструкцию elseif, будем выводить стандартную переменную $author. Приведённый ниже код нужно вставить вместо
<?php print $submitted; ?>
Как я уже говорил в переменной $submitted, кроме имени содержится дата, поэтому не забываем про $created. В итоге получается такой код
<?php $commenter_url = $content['comment_body']['#object']->homepage;
$comment_author = $content['comment_body']['#object']->name;
if ($commenter_url) : ?>
<span class="commenter_url" onclick = "window.open('<?php print $commenter_url; ?>')" title="<?php print $commenter_url; ?>"><?php print $comment_author; ?></span>
<?php else : ?>
<?php print $author; ?>
<?php endif; ?>
<?php print $created?>
Для комментаторов без сайта можно использовать созданную нами переменную $commenter_author. Для простого блога разницы не заметна. Другое дело когда у вас сайт на котором есть зарегистрированные пользователи и ссылки ведут на их профиль. В этом случае только $author.
UPD Если у вас стоит модуль gravatar, то аватарка также будет ссылкой на сайт комментатора. Пока не нашол ничего лучше чем удалить из файла gravatar.module
elseif (!empty($account->homepage)) {
// If user is anonymous, create link to the commenter's homepage.
$attributes = array(
'title' => t('View user website.'),
'rel' => 'external nofollow',
);
$variables['user_picture'] = l($variables['user_picture'], $account->homepage, array('attributes' => $attributes, 'html' => TRUE));
}
- Войдите, чтобы оставлять комментарии
У себя сделал проще, просто
У себя сделал проще, просто под комментарием вывел адрес блога в виде текста. Кому интересен автор, тот скопирует и перейдет по ссылке. Таким образом быстро решился вопрос с внешними ссылками из комментариев.
Оказалось поисковики понимают
Оказалось поисковики понимают JS. Если они ссылки через JS будут признавать как обычные тоже буду выводить текстом.
Ну и как результаты?
Ну и как результаты?
Я вот тоже слышал что поисковики (по крайней мере гугль) научились хавать js, но пока заспамленности с сайта не вижу. Вот тоже подумывал сделать просто текстом, интересно бы найти какое-нибудь исследование по этому поводу.
Олег, Вы никаких данных пока не подбивали?
Данных не подбивал. Пару дней
Данных не подбивал. Пару дней назад обнаружил что модуль gravatar делает аватарку ссылкой в итоге колво ссылок с сайта не уменьшилось. Только вчера исправил
Добрый день, Олег. Научите,
Добрый день, Олег. Научите, как выводить адрес текстом. Буду признательна.
вместо кода из статьи юзаем
вместо кода из статьи юзаем это
Благодарю, попробую.
Благодарю, попробую.