насчет того, что на странице не стоит постить ссылку на эту же самую станицу.
Делать ссылку с логотипа на главную («домашнюю») страницу — хорошо и правильно. Но при этом надо избегать самой часто распространенной ошибки (ради которой и написан этот параграф) — если мы находимся дома, то ссылки «на главную» там быть не должно. Это относится и к другим местам на сайте: любая ссылка подразумевает перемещение.Один из основных законов ориентирования на вебе и гипертекстовой навигации: ничто не должно содержать ссылку на само себя.
Звучит логично и убедительно.
Можно воспользоваться theme_link в template.php своей темы:
<?php
function имя-темы_link($variables) {
$tag_open = '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"';
$tag_title = '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</';
$tag_close = 'a>';
if (isset($variables['options']['attributes']['class'])) {
$classes = $variables['options']['attributes']['class'];
if (in_array('active',$classes)) {
unset($variables['options']['attributes']);
$variables['options']['attributes']['class'] = $classes;
$tag_open = '<span';
$tag_close = 'span>';
}
}
return $tag_open . drupal_attributes($variables['options']['attributes']) . $tag_title . $tag_close;
}
?>
Если у ссылки есть класс 'active'
(т.е. она ссылается на страницу, на которой расположена), то тэг <a>
меняется на тэг <span>
с теми же классами, но без атрибутов rel, title ...
Остается поправить в css a.active
на span.active
и получить профит.
Комментарии
Сам не соблюдаю это правило, но понравился способ скрывать ссылку через... CSS!
http://css-tricks.com/6379-pointer-events-current-nav/
Там потребуется прописать уйму css-правил для каждой страницы, да и сами ссылки никуда не деваются - хотелось бы узнать мнение seo-нистов по поводу внутренней перелинковки (наверное, не имеет значения, раз такая практика переходит из версии в версию)
Никогда не понимал этого принципа.
Чтобы перезагрузить страницу!
а как юзер должне понимать что он на главной, если пришел с поиска? (особо не глядя в адресную)
бред
жирный +
если диз от татьяныча, т.е. трушный, то поймет
я только чту завету Ильича
По-моему, он уже давно стал абсолютно несостоятелен как веб-гуру.
да он и не был гуру, он про прописные истины только всем рассказывал. Но то что рассказывал уже хорошо
ну, вроде есть F5 и кнопка обновить для таких целей
меня наоборот заебывает, когда случайно кликаешь на ссылку - и страница перезагружается
Валер, не понял вопроса
не спорю, но речь сейчас не о нем, а о ссылках
да я как бы и не претендую, попробовал - спросил
Насчет ссылок сам-на-себя, если попадалось такое на глаза и было на желание, то блокировал. Но чаще игнорировал, по-мне, это вообще не проблема.
конечно, не проблема
просто когда таких ссылок нет - оно как-то правильнее по-моему, кайдзен короче
Поисковикам пофигу, имхо. Естественно, что перелинковка тут никакая.
Не ощущал никакого минуса от таких ссылок "на самого себя".
А Лебедев кажется вообще не авторитет. К тому же, вот, например, его детище (не самое захудалое) - http://www.tcsbank.ru/ внизу даже подпись есть "Сделано в Студии Артемия Лебедева" Попробуйте наведитесь на главной на логотип. facepalm. Лебедев (вернее его сайтостроители) нарушают заветы
$(function() {
//__ Location detector
$('selector > a').each(
function() {
var rLoc = document.location.pathname;
var lLoc = $(this).attr('href');
if( rLoc.match(lLoc) ) {
$(this).remove();
$(this).parent('li').remove();
}
}
);
}); // End DOM
но лучше так ...
$(function() {
//__ Location detector
$('selector > a').each(
function() {
var rLoc = document.location.pathname;
var lLoc = $(this).attr('href');
if( rLoc.match(lLoc) ) {
$(this).attr({'href': false, 'title': 'вы тута, однака'});
}
}
);
}); // End DOM
Глядя, какой геморрой сделать это на уровне темизации, понимаешь, что лучше поправить js-скриптом: у ссылок на текущую страницу вырезать параметр href.
К счастью не все это понимают
а ссылка то остается ,хоть и удалить аттрибут
Тогда переделать тег a в тег span.
а как сделать выборку
$("a"на текущую страницу)
?Но как бы там не было. Его книга кововодство, полезное чтиво и многим надо бы ее читать.
А насчет гуру, тут, кто громче скажет, тот и прав. Так он и сделал.
И кстати поисковики не любят ссылки сами на себя.
Получить текущий урл и составить селектор вида $('a[href$="ABC"]')
Валер, не понял вопроса
Ну вот, зашли вы с яндекса на какой то сайт. Как понять что вы попали на главную страницу? Когда есть ссылка на главную в меню - то юзеру легко перейти, и бывает понять, что он уже на главной
А F5 не рулит вообще. бОльшая часть пользователей нета не знают об этой кнопке
А еще они не знают, что кликая по лого, можно перейти на главную
Как то так. друпалеры, не судите по себе. Интернет полон домохозяек
где об этом сказано у самих поисковиков?
а я не чтю тёму. ведь мы нихуя не понимаем. а он знает все. поэтому и не чтю.
Тема - рулит.
Но всем его заветам следовать - глупо, нужно пользоваться своей головой. По поводу ссылок "на себя" он говорит правильно, но это должно быть вписано на уровне дизайна, чтобы человек сразу четко видел, где он находится.
Если честно, то я забиваю на это.
В адресной строке посмотреть
смысл именно в том, что визуально ничего не меняется - в меню была ссылка
<a href="/" class="active">Главная</a>
она заменится на<span class="active">Главная</span>
Если для span.active прописать те же стили, что и для a.active - в меню будет также выглядящий пункт, только по нему кликать не получится, потому что и так открыта главная
То же самое верно и для других страниц
ссылка на главную в лого обычно прописывается в темплейте, что-то вроде
<img src="/logo.png" />
</a>
theme_link тут ничем не поможет, я обычно убираю ссылку в лого с главной на главную в page-front.tpl.php:
<img src="/logo.png" />
</span>
(как правило, такая ссылка имеет дополнительные классы и id, и чтобы не рушить каскадные стили, проще заменить a на span)
а в чем геморрой-то?
15 строк в template.php - и ещё несколько в style.css, тупо поменять a.active на span.active
хорошо что не в код
Можно и в общем шаблоне через:
<?php if ($is_front): ?>
<?php endif; ?>
Молод ты, заветы Ильича чтить. Даже октябренком небось не был
ну кто ж не помнит старика
КрупскогоКарлоса?Если Рамиреса - то я его и так вижу, чо его помнить то
Да поисковики не много говорят вообще.
Пруфа нет. Конечно мои слова не много значат)
Но! Все равно, ссылаться на самого себя, дурной тон.
Возможно, но чисто логически, мне кажется, ничего такого страшного в этом нет.
Скорее уж практически, много сайтов в интернетах этого правила придерживаются? Или у них от этого проблемы с индексацией?
Самый первый код работает и вроде бы все нормально, но вот почему-то при заходе на страницу, которою вьювс сгенерил вылазит ошибка Warning: in_array() [function.in-array]: Wrong datatype for second argument в функции xxx_link() (строка 103 в файле /sites/all/themes/xxx/template.php)
Короче говоря на вот эту строчку ругается.
if (in_array('active',$classes))
ПОМОГИТЕ ПОЖАЛУЙСТА В РЕШЕНИИ ДАННОГО ВОПРОСА
На самом деле вопрос о том ссылается страница сама на себя или нет поднялся давно, кажется еще в 2001г. в книге "Основы юзабилити", автор Jakob Nielsen. На последних семинарах по сео это была очень обсуждаемая тема, т.к. сеошники говорили о том, что программистам впадлу заморачиваться и в основном во всех cms эта проблема не решена. программисты считают это не проблемой.
Поисковики вообще никаких инструкций не дают и не дадут, их алгоритмы в секрете.
Это не бред, это реальная проблема.
Нет не пофигу. У каждой страницы есть свой вес, по алгоритму он делится на страницы на которые ссылается данная страница и у тех страниц тоже получается какой-то вес, естественно учитываются ссылки и внешние и внутренние. Поисковик очень скверно смотрят если страница ссылается сама на себя, таким образом теряется вес страницы, т.к. ссылка ведет практически в никуда.
Все это касается и "Хлебных крошек" на основе которых поисковик делает навигационные цепочки в снипете на странице поисковой выдачи.
Доказательством всего этого является то, что буквально еще месяц назад на главной странице яндекса логотип был ссылкой - это первое. Второе - в интерфейсе вебмастер.яндекс.ру и помощь.яндекс.ру и т.д. буквально на днях в левом меню текущая ссылка стала не активной, более того она имеет фон!!! Вывод следующий, поисковики уже наелись уникального контента, ключевых слов, ссылок, тиц, pagerank и т.д. они теперь хотят индексировать юзабилити...
нет никакой проблемы
Блин... и правда... СЕО - это какая-то адская смесь алхимии,вуду и т.п.-))
Да что там говорить... прямо языческая религия какая-то-))
это смесь школоло и трололо
Если проблемы нет, пожалуйста решить вопрос... У меня знакомых по друпалу нет, а сам в пхп не разбираюсь.
проблемы нет в ссылках, которые ведут на текущую страницу
Созданная страница с помощью вьювс вынесена в главное меню, при переходе на неё она естественно становится текущей,
она не отключается, остаётся ссылкой(пардон) становиться текстом, но вылазит ошибка описанная мной выше. Со всеми остальными страницами типа node/x проблем нет.В простыне про пять лет жизни - был такой персонаж АВ.
У него тоже такая хотелка была, чтобы активная ссылка была неактивна, но он объяснял это тем, что юзеры будут по кругу кликать, а этого не надо.
Как это связано с неактивной ссылкой текущей страницы? По кругу, в смысле перебирая страницы маленького сайта, кликать можно в любом случае. Есть множество схем перелинковки, круг, ромб... Но обязательное условие, чтобы текущая страница не ссылалась на себя.
ого фоннатизм...
Ага, вдруг краулер найдет вашу замыкающуюся на себя страницу и уйдет в бесконечный цикл, тогда и гугл и яндекс и даже бинг поломаются!
А если рассуждать логически, а не сео, поискам на это так же пофиг как и браузерам на не валидный HTML(иначе они нафиг никому не будут нужны), они порой с ним работают лучше чем с валидным
По другому вопросу, не путайте ошибки с предупреждениями, кроме того там понятным языком написано что во 2й аргумент функции in_array попало нечто не имеющее с массивом ничего общего, не видя самого кода могу предположить, что там либо совсем пусто, либо простой текст, однако, если есть нужный конечный результат, значит это дело находится в цикле и в одной из итераций эта переменная оказывается пустой, в этом случае можно либо забить, либо сделать перед этим проверку на является ли оно массивом
на 99.99(9)% сайтов никто не заморачивеатся, что ссылка ведет на текущую страницу..
уверен, разработчики поисковых ботов в курсе этого...
иначе бы бот завис в цикле на первом же сайте-)))
и какой тогда смысл?
Никто не зацикливается. Речь идет о юзабилити, сео и о ссылочном весе уходящего с текущей страницы, на которые она ссылается.
Вот к примеру, если вы читаете книгу и находитесь на 33 странице, чтобы вам ее еще раз открыть вам нужно либо закрыть книгу, либо уйти на другую страницу. На сайте получается можно еще раз открыть ту страницу на которой вы находитесь... У поисковиков сейчас новые фишки, вот одна из них.
эээ... самый мягкий вариант ответа, который приходит на ум - "Проблемы негров шерифа не %бут"
ваш вопрос гуглится с полпинка, если результат гугления вам ни о чем не говорит - см. п. 1
никто за вас его решать не собирается
и да, попробуйте покричать где-нибудь здесь, на правах клиента
Вопрос [РЕШЕН]!!!
Читать всем
http://www.drupal.ru/node/49838
http://www.drupal.ru/node/87008
откуда в книгах гиперссылки? о_О
а это електронная книга
Возможно кому-нибудь будет полезным. Код в стартовом посте у меня (Drupal 7) не совсем корректно работал, а именно в комментариях при переходе по внутристраничным ссылкам выскакивало предупреждение PHP "in_array() expects parameter 2 to be array, string given". Конечно будет работать и с предупреждением, но если нужно его убрать, в код целесообразно добавить условие проверки на массив для $classes, после доработки код выглядит следующим образом:
<?php
function ваша_тема_link($variables) {
$tag_open = '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"';
$tag_title = '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</';
$tag_close = 'a>';
if (isset($variables['options']['attributes']['class'])) {
$classes = $variables['options']['attributes']['class'];
if (is_array($classes)) {
if (in_array('active',$classes)) {
unset($variables['options']['attributes']);
$variables['options']['attributes']['class'] = $classes;
$tag_open = '<span';
$tag_close = 'span>';
}
}
}
return $tag_open . drupal_attributes($variables['options']['attributes']) . $tag_title . $tag_close;
}
?>
Newbишный вопрос, где почитать про массив $variables?
Ну вот откуда Вы знаете что там есть $variables['options']['attributes']['class'] и оно содержит css классы
или например $variables['path'] содержит линк
Ну то есть интуитивно понятно по названиям, что содержит ЧУЖОЙ код, и ни хрена не ясно чем можешь оперировать когда пишешь свой.
Касается любой функции API
Непонятно почему здесь https://api.drupal.org/api/drupal/functions не разъясняется.
Потому что разъясняется в другом месте
print_r($variables);
ой...
а что так быстро тема затихла?
Неужели все стали делать сайты без циклических ссылок?
Вопрос:
Народ, за эти два года как существует топик, у кого поднялся вес страниц на которых убрали циклические ссылки? Если не вес, то что-нибудь поднялось?
ну, я это запиливал не ради сео, а больше для порядка
статистику по тому сайту не знаю - я его сделал и передал заказчику, но сайт живёт, заказчик доволен
в бан пс сайт 100% не попал )
Самого заказчик просит убрать циклические ссылки.
Код работает, но что делать если класс active прописывается не только в основном меню, но и в боковых (многоступенчатых), у которых большая вложенность. За счет модуля menu position не активными становятся пункты, к которым привязаны вложенные меню, ведь в них автоматом прописывается стиль active для подсветки. Как быть в такой ситуации? Кто знает как изменить код что бы можно было гибко настраивать отображение ссылок. Может в коде можно делать привязку по старшему css классу? Может кто подскажет решение для ниже преведенного кода? Сейчас он запиливает все active ссылки.
<?php
function ваша_тема_link($variables) {
$tag_open = '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"';
$tag_title = '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</';
$tag_close = 'a>';
if (isset($variables['options']['attributes']['class'])) {
$classes = $variables['options']['attributes']['class'];
if (is_array($classes)) {
if (in_array('active',$classes)) {
unset($variables['options']['attributes']);
$variables['options']['attributes']['class'] = $classes;
$tag_open = '<span';
$tag_close = 'span>';
}
}
}
return $tag_open . drupal_attributes($variables['options']['attributes']) . $tag_title . $tag_close;
}
?>
Заранее благодарен за помощь.
проблема с модулем: он присваивает класс active ссылкам, таковыми не являющимися
обычно для таких ссылок используют класс active-trail
если модуль позволяет определять классы вручную, то пофиките в его настройках, если нет - я бы подумал насчет смены модуля
если совсем-совсем никак - можно сравнивать в theme_link href ссылки с $_GET['q']
Про весь сайт судить сложно, но проводил эксперимент, взял страницы, которые по определенному запросу были на 2-3ем месте, проставил "циклические ссылки", страница просела за 100+ место, убрал "циклические ссылки" страница вернулась на прежние позиции...