А вы чтите заветы Лебедева?

Главные вкладки

Аватар пользователя Andruxa Andruxa 7 сентября 2011 в 18:35

насчет того, что на странице не стоит постить ссылку на эту же самую станицу.

Отсюда:

Quote:

Делать ссылку с логотипа на главную («домашнюю») страницу — хорошо и правильно. Но при этом надо избегать самой часто распространенной ошибки (ради которой и написан этот параграф) — если мы находимся дома, то ссылки «на главную» там быть не должно. Это относится и к другим местам на сайте: любая ссылка подразумевает перемещение.

Один из основных законов ориентирования на вебе и гипертекстовой навигации: ничто не должно содержать ссылку на само себя.


Звучит логично и убедительно.

Можно воспользоваться 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 и получить профит.

Комментарии

Аватар пользователя Andruxa Andruxa 7 сентября 2011 в 19:16

Там потребуется прописать уйму css-правил для каждой страницы, да и сами ссылки никуда не деваются - хотелось бы узнать мнение seo-нистов по поводу внутренней перелинковки (наверное, не имеет значения, раз такая практика переходит из версии в версию)

Аватар пользователя Plazik Plazik 7 сентября 2011 в 20:04

Никогда не понимал этого принципа.

"Andruxa" wrote:
нафига нужна ссылка на ту же самую страницу, где она расположена?

Чтобы перезагрузить страницу!

Аватар пользователя Sentrashy@drupal.org Sentrashy@drupal.org 7 сентября 2011 в 20:27

"Plazik" wrote:
Чтобы перезагрузить страницу!

жирный +

"Valeratal" wrote:
а как юзер должне понимать что он на главной, если пришел с поиска? (особо не глядя в адресную)

если диз от татьяныча, т.е. трушный, то поймет Wink

Аватар пользователя alexandr.poddubsky alexandr.poddubsky 7 сентября 2011 в 22:19

"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
По-моему, он уже давно стал абсолютно несостоятелен как веб-гуру.

да он и не был гуру, он про прописные истины только всем рассказывал. Но то что рассказывал уже хорошо

Аватар пользователя Andruxa Andruxa 7 сентября 2011 в 22:23

"Plazik" wrote:
Чтобы перезагрузить страницу!

ну, вроде есть F5 и кнопка обновить для таких целей
меня наоборот заебывает, когда случайно кликаешь на ссылку - и страница перезагружается
"Valeratal" wrote:
а как юзер должне понимать что он на главной, если пришел с поиска?

Валер, не понял вопроса
"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
он уже давно стал абсолютно несостоятелен как веб-гуру

не спорю, но речь сейчас не о нем, а о ссылках
"xxandeadxx" wrote:
бред

да я как бы и не претендую, попробовал - спросил

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 7 сентября 2011 в 22:48

"Andruxa" wrote:
не спорю, но речь сейчас не о нем, а о ссылках

Насчет ссылок сам-на-себя, если попадалось такое на глаза и было на желание, то блокировал. Но чаще игнорировал, по-мне, это вообще не проблема.

Аватар пользователя Andruxa Andruxa 7 сентября 2011 в 23:28

"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
это вообще не проблема.

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

Аватар пользователя liland liland 8 сентября 2011 в 0:18

Не ощущал никакого минуса от таких ссылок "на самого себя".
А Лебедев кажется вообще не авторитет. К тому же, вот, например, его детище (не самое захудалое) - http://www.tcsbank.ru/ внизу даже подпись есть "Сделано в Студии Артемия Лебедева" Попробуйте наведитесь на главной на логотип. facepalm. Лебедев (вернее его сайтостроители) нарушают заветы Smile

Аватар пользователя Cyber Cyber 8 сентября 2011 в 2:06
/* Main DOM Prepare */
$(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   

но лучше так ...

/* Main DOM Prepare */
$(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   
Аватар пользователя kyky kyky 8 сентября 2011 в 2:30

Глядя, какой геморрой сделать это на уровне темизации, понимаешь, что лучше поправить js-скриптом: у ссылок на текущую страницу вырезать параметр href.

Аватар пользователя Cyber Cyber 8 сентября 2011 в 2:45

"kyky" wrote:
Глядя, какой геморрой сделать это на уровне темизации, понимаешь, что лучше поправить js-скриптом: у ссылок на текущую страницу вырезать параметр href.

К счастью не все это понимают Wink

Аватар пользователя drupby drupby 8 сентября 2011 в 2:59

"kyky" wrote:
Глядя, какой геморрой сделать это на уровне темизации, понимаешь, что лучше поправить js-скриптом: у ссылок на текущую страницу вырезать параметр href.

а ссылка то остается ,хоть и удалить аттрибут

Аватар пользователя ihappy ihappy 8 сентября 2011 в 3:58

"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
По-моему, он уже давно стал абсолютно несостоятелен как веб-гуру.

Но как бы там не было. Его книга кововодство, полезное чтиво и многим надо бы ее читать.
А насчет гуру, тут, кто громче скажет, тот и прав. Так он и сделал.
И кстати поисковики не любят ссылки сами на себя.

Аватар пользователя kyky kyky 8 сентября 2011 в 8:59

"drupby" wrote:
а как сделать выборку $("a"на текущую страницу)?

Получить текущий урл и составить селектор вида $('a[href$="ABC"]')

Аватар пользователя Valeratal Valeratal 8 сентября 2011 в 9:48

Валер, не понял вопроса

Ну вот, зашли вы с яндекса на какой то сайт. Как понять что вы попали на главную страницу? Когда есть ссылка на главную в меню - то юзеру легко перейти, и бывает понять, что он уже на главной

А F5 не рулит вообще. бОльшая часть пользователей нета не знают об этой кнопке
А еще они не знают, что кликая по лого, можно перейти на главную

Как то так. друпалеры, не судите по себе. Интернет полон домохозяек

Аватар пользователя Cyber Cyber 8 сентября 2011 в 9:57

"iHappy" wrote:
И кстати поисковики не любят ссылки сами на себя.

где об этом сказано у самих поисковиков?

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 8 сентября 2011 в 10:25

Тема - рулит.
Но всем его заветам следовать - глупо, нужно пользоваться своей головой. По поводу ссылок "на себя" он говорит правильно, но это должно быть вписано на уровне дизайна, чтобы человек сразу четко видел, где он находится.

Если честно, то я забиваю на это.

Аватар пользователя Andruxa Andruxa 8 сентября 2011 в 10:46

"Valeratal" wrote:
Когда есть ссылка на главную в меню - то юзеру легко перейти, и бывает понять, что он уже на главной

смысл именно в том, что визуально ничего не меняется - в меню была ссылка <a href="/" class="active">Главная</a> она заменится на <span class="active">Главная</span>
Если для span.active прописать те же стили, что и для a.active - в меню будет также выглядящий пункт, только по нему кликать не получится, потому что и так открыта главная
То же самое верно и для других страниц

"Valeratal" wrote:
кликая по лого, можно перейти на главную

ссылка на главную в лого обычно прописывается в темплейте, что-то вроде

<a href="/">
  <img src="/logo.png" />
</a>

theme_link тут ничем не поможет, я обычно убираю ссылку в лого с главной на главную в page-front.tpl.php:

<span href="/">
  <img src="/logo.png" />
</span>

(как правило, такая ссылка имеет дополнительные классы и id, и чтобы не рушить каскадные стили, проще заменить a на span)

"kyky" wrote:
какой геморрой сделать это на уровне темизации

а в чем геморрой-то?
15 строк в template.php - и ещё несколько в style.css, тупо поменять a.active на span.active

Аватар пользователя Plazik Plazik 8 сентября 2011 в 13:37

"Andruxa" wrote:
я обычно убираю ссылку в лого с главной на главную в page-front.tpl.php:

Можно и в общем шаблоне через:

<?php if ($is_front): ?>
<?php 
endif; ?>
Аватар пользователя ihappy ihappy 11 сентября 2011 в 4:48

"Cyber" wrote:
где об этом сказано у самих поисковиков?

Да поисковики не много говорят вообще.
Пруфа нет. Конечно мои слова не много значат)
Но! Все равно, ссылаться на самого себя, дурной тон.

Аватар пользователя Cyber Cyber 11 сентября 2011 в 12:26

"iHappy" wrote:
Пруфа нет. Конечно мои слова не много значат)
Но! Все равно, ссылаться на самого себя, дурной тон.

Возможно, но чисто логически, мне кажется, ничего такого страшного в этом нет.

Аватар пользователя sg85 sg85 30 августа 2012 в 17:48

Скорее уж практически, много сайтов в интернетах этого правила придерживаются? Или у них от этого проблемы с индексацией?

Аватар пользователя vitaboss vitaboss 30 августа 2012 в 22:08

Самый первый код работает и вроде бы все нормально, но вот почему-то при заходе на страницу, которою вьювс сгенерил вылазит ошибка 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))
ПОМОГИТЕ ПОЖАЛУЙСТА В РЕШЕНИИ ДАННОГО ВОПРОСА

"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
по-мне, это вообще не проблема.

На самом деле вопрос о том ссылается страница сама на себя или нет поднялся давно, кажется еще в 2001г. в книге "Основы юзабилити", автор Jakob Nielsen. На последних семинарах по сео это была очень обсуждаемая тема, т.к. сеошники говорили о том, что программистам впадлу заморачиваться и в основном во всех cms эта проблема не решена. программисты считают это не проблемой.

"Cyber" wrote:
где об этом сказано у самих поисковиков?

Поисковики вообще никаких инструкций не дают и не дадут, их алгоритмы в секрете.

"xxandeadxx" wrote:
бред

Это не бред, это реальная проблема.

"Айдар" wrote:
Поисковикам пофигу, имхо. Естественно, что перелинковка тут никакая.

Нет не пофигу. У каждой страницы есть свой вес, по алгоритму он делится на страницы на которые ссылается данная страница и у тех страниц тоже получается какой-то вес, естественно учитываются ссылки и внешние и внутренние. Поисковик очень скверно смотрят если страница ссылается сама на себя, таким образом теряется вес страницы, т.к. ссылка ведет практически в никуда.

Все это касается и "Хлебных крошек" на основе которых поисковик делает навигационные цепочки в снипете на странице поисковой выдачи.

Доказательством всего этого является то, что буквально еще месяц назад на главной странице яндекса логотип был ссылкой - это первое. Второе - в интерфейсе вебмастер.яндекс.ру и помощь.яндекс.ру и т.д. буквально на днях в левом меню текущая ссылка стала не активной, более того она имеет фон!!! Вывод следующий, поисковики уже наелись уникального контента, ключевых слов, ссылок, тиц, pagerank и т.д. они теперь хотят индексировать юзабилити...

Аватар пользователя Orion76 Orion76 30 августа 2012 в 22:41

Блин... и правда... СЕО - это какая-то адская смесь алхимии,вуду и т.п.-))
Да что там говорить... прямо языческая религия какая-то-))

Аватар пользователя vitaboss vitaboss 30 августа 2012 в 22:53

"xxandeadxx" wrote:
нет никакой проблемы

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

"vitaboss" wrote:
Самый первый код работает и вроде бы все нормально, но вот почему-то при заходе на страницу, которою вьювс сгенерил вылазит ошибка 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))
ПОМОГИТЕ ПОЖАЛУЙСТА В РЕШЕНИИ ДАННОГО ВОПРОСА

Аватар пользователя vitaboss vitaboss 30 августа 2012 в 23:05

Созданная страница с помощью вьювс вынесена в главное меню, при переходе на неё она естественно становится текущей, она не отключается, остаётся ссылкой (пардон) становиться текстом, но вылазит ошибка описанная мной выше. Со всеми остальными страницами типа node/x проблем нет.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 30 августа 2012 в 23:04

"xxandeadxx" wrote:

нет никакой проблемы


В простыне про пять лет жизни - был такой персонаж АВ.
У него тоже такая хотелка была, чтобы активная ссылка была неактивна, но он объяснял это тем, что юзеры будут по кругу кликать, а этого не надо.

Аватар пользователя vitaboss vitaboss 30 августа 2012 в 23:13

"RxB" wrote:
активная ссылка была неактивна, но он объяснял это тем, что юзеры будут по кругу кликать

Как это связано с неактивной ссылкой текущей страницы? По кругу, в смысле перебирая страницы маленького сайта, кликать можно в любом случае. Есть множество схем перелинковки, круг, ромб... Но обязательное условие, чтобы текущая страница не ссылалась на себя.

Аватар пользователя sg85 sg85 31 августа 2012 в 1:22

Ага, вдруг краулер найдет вашу замыкающуюся на себя страницу и уйдет в бесконечный цикл, тогда и гугл и яндекс и даже бинг поломаются!
А если рассуждать логически, а не сео, поискам на это так же пофиг как и браузерам на не валидный HTML(иначе они нафиг никому не будут нужны), они порой с ним работают лучше чем с валидным

По другому вопросу, не путайте ошибки с предупреждениями, кроме того там понятным языком написано что во 2й аргумент функции in_array попало нечто не имеющее с массивом ничего общего, не видя самого кода могу предположить, что там либо совсем пусто, либо простой текст, однако, если есть нужный конечный результат, значит это дело находится в цикле и в одной из итераций эта переменная оказывается пустой, в этом случае можно либо забить, либо сделать перед этим проверку на является ли оно массивом

Аватар пользователя Orion76 Orion76 31 августа 2012 в 1:47

на 99.99(9)% сайтов никто не заморачивеатся, что ссылка ведет на текущую страницу..
уверен, разработчики поисковых ботов в курсе этого...
иначе бы бот завис в цикле на первом же сайте-)))

и какой тогда смысл?

Аватар пользователя vitaboss vitaboss 31 августа 2012 в 2:08

Никто не зацикливается. Речь идет о юзабилити, сео и о ссылочном весе уходящего с текущей страницы, на которые она ссылается.
Вот к примеру, если вы читаете книгу и находитесь на 33 странице, чтобы вам ее еще раз открыть вам нужно либо закрыть книгу, либо уйти на другую страницу. На сайте получается можно еще раз открыть ту страницу на которой вы находитесь... У поисковиков сейчас новые фишки, вот одна из них.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 31 августа 2012 в 2:11

"vitaboss" wrote:
Вот к примеру, если вы читаете книгу и находитесь на 33 странице, чтобы вам ее еще раз открыть вам нужно либо закрыть книгу, либо уйти на другую страницу. На сайте получается можно еще раз открыть ту страницу на которой вы находитесь... У поисковиков сейчас новые фишки, вот одна из них.

Аватар пользователя Andruxa Andruxa 31 августа 2012 в 2:55

"vitaboss" wrote:
У меня знакомых по друпалу нет, а сам в пхп не разбираюсь.

эээ... самый мягкий вариант ответа, который приходит на ум - "Проблемы негров шерифа не %бут"

ваш вопрос гуглится с полпинка, если результат гугления вам ни о чем не говорит - см. п. 1

никто за вас его решать не собирается

и да, попробуйте покричать где-нибудь здесь, на правах клиента

Аватар пользователя xxandeadxx xxandeadxx 31 августа 2012 в 11:10

"vitaboss" wrote:
Вот к примеру, если вы читаете книгу и находитесь на 33 странице, чтобы вам ее еще раз открыть вам нужно либо закрыть книгу, либо уйти на другую страницу.

откуда в книгах гиперссылки? о_О

Аватар пользователя yustnip yustnip 4 мая 2013 в 0:25

Возможно кому-нибудь будет полезным. Код в стартовом посте у меня (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;
}
?>
Аватар пользователя u10root u10root 8 июня 2013 в 22:27

Newbишный вопрос, где почитать про массив $variables?
Ну вот откуда Вы знаете что там есть $variables['options']['attributes']['class'] и оно содержит css классы
или например $variables['path'] содержит линк
Ну то есть интуитивно понятно по названиям, что содержит ЧУЖОЙ код, и ни хрена не ясно чем можешь оперировать когда пишешь свой.
Касается любой функции API
Непонятно почему здесь https://api.drupal.org/api/drupal/functions не разъясняется.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 8 июня 2013 в 23:18

"RxB" wrote:
Потому что разъясняется в другом месте

Smile

"u10root" wrote:
Ну то есть интуитивно понятно по названиям, что содержит ЧУЖОЙ код, и ни хрена не ясно чем можешь оперировать когда пишешь свой

print_r($variables);

Аватар пользователя Goodseeker Goodseeker 18 сентября 2013 в 16:05

ой...
а что так быстро тема затихла?
Неужели все стали делать сайты без циклических ссылок?

Вопрос:
Народ, за эти два года как существует топик, у кого поднялся вес страниц на которых убрали циклические ссылки? Если не вес, то что-нибудь поднялось?

Аватар пользователя Andruxa Andruxa 18 сентября 2013 в 16:59

ну, я это запиливал не ради сео, а больше для порядка
статистику по тому сайту не знаю - я его сделал и передал заказчику, но сайт живёт, заказчик доволен

в бан пс сайт 100% не попал )

Аватар пользователя Goodseeker Goodseeker 19 сентября 2013 в 13:41

Andruxa wrote:
ну, я это запиливал не ради сео, а больше для порядка
статистику по тому сайту не знаю - я его сделал и передал заказчику, но сайт живёт, заказчик доволен

в бан пс сайт 100% не попал )


Самого заказчик просит убрать циклические ссылки.

Аватар пользователя Users681 Users681 5 октября 2013 в 0:06

Код работает, но что делать если класс 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;
}
?>

Заранее благодарен за помощь.

Аватар пользователя Andruxa Andruxa 7 октября 2013 в 11:15

проблема с модулем: он присваивает класс active ссылкам, таковыми не являющимися

обычно для таких ссылок используют класс active-trail

если модуль позволяет определять классы вручную, то пофиките в его настройках, если нет - я бы подумал насчет смены модуля

если совсем-совсем никак - можно сравнивать в theme_link href ссылки с $_GET['q']

Аватар пользователя k_dmitry k_dmitry 7 октября 2013 в 13:06

"Goodseeker" wrote:
Народ, за эти два года как существует топик, у кого поднялся вес страниц на которых убрали циклические ссылки? Если не вес, то что-нибудь поднялось?

Про весь сайт судить сложно, но проводил эксперимент, взял страницы, которые по определенному запросу были на 2-3ем месте, проставил "циклические ссылки", страница просела за 100+ место, убрал "циклические ссылки" страница вернулась на прежние позиции...