Как избавиться element-invisible в навигаторе

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

Комментарии

Аватар пользователя smirn0ff smirn0ff 16 мая 2012 в 5:18

затем что для seo это не есть хорошо:
1. нарушена структура вложенности заголовочных тэгов
2. скрытый элемент от пользователей

Аватар пользователя q2_faith q2_faith 16 мая 2012 в 9:07

"smirn0ff" wrote:
1. нарушена структура вложенности заголовочных тэгов
2. скрытый элемент от пользователей

а вы в курсе для чего он используется?
1. а ПС что думают насчет этого?
2. он и не для пользователей

Аватар пользователя q2_faith q2_faith 16 мая 2012 в 13:18

"smirn0ff" wrote:
2. почему если он не для пользователей он обернут в заголовочный тэг?

просто думал вы что то скажете новое)
этот класс был придуман для скринридеров. ПС об этом знают. h2 это обычный элемент разметки сайта, то есть верстка семантична. смысл удаления?
"smirn0ff" wrote:
спасибо, нашел что искал здесь includes/pager.inc

правильнее не хакать ядро, а переопределять вывод

Аватар пользователя q2_faith q2_faith 16 мая 2012 в 17:47

берете эту функцию, засовываете в template.php и вместо theme в названии пишите название вашей темы, например customtheme_pager. и не забудьте кэш сбросить

Аватар пользователя drupby drupby 16 мая 2012 в 17:50

"smirn0ff" wrote:
так я не знаю английский я просто нашел кусок нужного мне кода в файле pager.inc и заменил его

так найди в своей теме template.php
и туда вставь

function ИМЯ_ТЕМЫ_pager($variables) {
  $tags = $variables['tags'];
  $element = $variables['element'];
  $parameters = $variables['parameters'];
  $quantity = $variables['quantity'];
  global $pager_page_array, $pager_total;

  // Calculate various markers within this pager piece:
  // Middle is used to "center" pages around the current page.
  $pager_middle = ceil($quantity / 2);
  // current is the page we are currently paged to
  $pager_current = $pager_page_array[$element] + 1;
  // first is the first page listed by this pager piece (re quantity)
  $pager_first = $pager_current - $pager_middle + 1;
  // last is the last page listed by this pager piece (re quantity)
  $pager_last = $pager_current + $quantity - $pager_middle;
  // max is the maximum page number
  $pager_max = $pager_total[$element];
  // End of marker calculations.

  // Prepare for generation loop.
  $i = $pager_first;
  if ($pager_last > $pager_max) {
    // Adjust "center" if at end of query.
    $i = $i + ($pager_max - $pager_last);
    $pager_last = $pager_max;
  }
  if ($i <= 0) {
    // Adjust "center" if at start of query.
    $pager_last = $pager_last + (1 - $i);
    $i = 1;
  }
  // End of generation loop preparation.

  $li_first = theme('pager_first', array('text' => (isset($tags[0]) ? $tags[0] : t('« first')), 'element' => $element, 'parameters' => $parameters));
  $li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? $tags[1] : t('‹ previous')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
  $li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : t('next ›')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
  $li_last = theme('pager_last', array('text' => (isset($tags[4]) ? $tags[4] : t('last »')), 'element' => $element, 'parameters' => $parameters));

  if ($pager_total[$element] > 1) {
    if ($li_first) {
      $items[] = array(
        'class' => array('pager-first'),
        'data' => $li_first,
      );
    }
    if ($li_previous) {
      $items[] = array(
        'class' => array('pager-previous'),
        'data' => $li_previous,
      );
    }

    // When there is more than one page, create the pager list.
    if ($i != $pager_max) {
      if ($i > 1) {
        $items[] = array(
          'class' => array('pager-ellipsis'),
          'data' => '…',
        );
      }
      // Now generate the actual pager piece.
      for (; $i <= $pager_last && $i <= $pager_max; $i++) {
        if ($i < $pager_current) {
          $items[] = array(
            'class' => array('pager-item'),
            'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
          );
        }
        if ($i == $pager_current) {
          $items[] = array(
            'class' => array('pager-current'),
            'data' => $i,
          );
        }
        if ($i > $pager_current) {
          $items[] = array(
            'class' => array('pager-item'),
            'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
          );
        }
      }
      if ($i < $pager_max) {
        $items[] = array(
          'class' => array('pager-ellipsis'),
          'data' => '…',
        );
      }
    }
    // End generation.
    if ($li_next) {
      $items[] = array(
        'class' => array('pager-next'),
        'data' => $li_next,
      );
    }
    if ($li_last) {
      $items[] = array(
        'class' => array('pager-last'),
        'data' => $li_last,
      );
    }
    return '<h2 class="element-invisible">' . t('Pages') . '</h2>' . theme('item_list', array(
      'items' => $items,
      'attributes' => array('class' => array('pager')),
    ));
  }
}

и там меняй то что надо

Аватар пользователя Jean-Claude Jean-Claude 17 мая 2012 в 20:36

согласен, для пс это не очень хорошо display: none, но и не так уж важное, можно закрыть глаза, дык там в коде куча таких инвисиблов, в примари и секондари и тд

Аватар пользователя q2_faith q2_faith 17 мая 2012 в 21:01

"Заводской раб" wrote:
согласен, для пс это не очень хорошо display: none

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

Аватар пользователя KinDaZa KinDaZa 25 августа 2013 в 23:59

Хм. После переопределения theme_pager - пропали "Предыдущая" и "Следующая"... т.е. внутри стало пусто

  • Странно

    Аватар пользователя KinDaZa KinDaZa 26 августа 2013 в 9:26

    Хм. После переопределения theme_pager - пропали "Предыдущая" и "Следующая"... т.е. внутри стало пусто <li class="pager-next"><a href="xxx?page=1"></a></li>
    Странно

    Аватар пользователя PVasili PVasili 24 декабря 2013 в 1:11

    Ешё раз:
    Маразм с H2 invisible - изобретение каким то гуру drupal. Мотивируется аксесебилити. Что это далеко не так, мало кто знает, и мало кого волнует.
    А что всё остальное не аксесебилити - всем пофигу.
    Но это drupal, и все несложно решаемо.

    Убирается маразм так:
    1) в template.php
    навигационная линейка было:

    <?php    
    $output 
    '<h2 class="element-invisible">' t('You are here') . '</h2>';
    $output .= '<div class="breadcrumb">' implode(' › '$breadcrumb) . '</div>';
    ?>

    делаем:

    <?php    
    $output 
    '<div class="breadcrumb">' implode(' › '$breadcrumb) . '</div>';
    ?>

    2) Меню (если гарланд):

    <?php
    function garland_preprocess_page(&$vars) {
    ...
          
    'heading' => array(
            
    'text' => t('Main menu'),
            
    'level' => 'h2',
            
    'class' => array('element-invisible'),
    ....
          
    'heading' => array(
            
    'text' => t('Secondary menu'),
            
    'level' => 'h2',
            
    'class' => array('element-invisible'),
    ?>

    убираем куски

    3)по желанию: /modules/system/html.tpl.php
    копируем к себе в тему, чистим кэш
    удаляем:

    <?php
      
    <div id="skip-link">
        <
    a href="#main-content" class="element-invisible element-focusable"><?php print t('Skip to main content'); ?></a>
      </div>
    ?>

    кто ещё где встретит - пишите что и где встретилось.

    Аватар пользователя Augustus Augustus 7 января 2014 в 21:18

    Столько комментариев от ГУРУ и никто так и не написал ответ на вопрос темы - что прописать в template.php, чтобы избавиться от <h2 class="element-invisible">Страницы</h2>
    ? Не уж то предлагаете весь код pager туда заносить? Можно лишь как-то от h2 избавиться?

    Аватар пользователя PVasili PVasili 16 января 2014 в 13:02

    "drupby" wrote:
    что по спецификации так положено

    Странно, ни разу не видел.
    Возможно, если читать заветы Тёмы Лебедева, или послушать большого сертифицированного специалиста SEO - Витю RxB то оно так и есть :).

    "Augustus" wrote:
    Можно лишь как-то от h2 избавиться?

    Вам же Витя сказал: перенести function theme_pager($variables) из /includes/pager.inc к себе, переименовав соответствующе. Ну не советовать же вам прямо в ядре править Smile

    Аватар пользователя q2_faith q2_faith 16 января 2014 в 13:19

    "PVasili" wrote:

    Помню мне так и не ответил никто на то, как сильно понижает сайт в выдаче наличие этих элементов)

    Аватар пользователя drupby drupby 16 января 2014 в 13:47

    "q2_faith" wrote:
    как сильно понижает сайт в выдаче наличие этих элементов)

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

    Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 16 января 2014 в 15:37

    "PVasili" wrote:
    Возможно, если читать заветы Тёмы Лебедева, или послушать большого сертифицированного специалиста SEO - Витю RxB то оно так и есть :).

    Да уж всяко не виндузятника-1сника слушать

    Аватар пользователя baklanaft baklanaft 23 декабря 2014 в 0:24

    Вроде как вопрос решен
    но у меня после вставки в template
    <?php
    $output = '

    ';
    ?>
    H2 invisible в крошках не пропадает.
    Возможна причина в выводе крошек через node.tpl
    <?php
    print theme('breadcrumb', array('breadcrumb'=>drupal_get_breadcrumb()));
    ?>
    drupal7