346

Плагин для WordPress: Q2W3 Fixed (Sticky) Widget. Фикисируем виджеты при вертикальной прокрутке.

Пример использования прямо на этом сайте: рекламный блок Яндекса в правой колонке.


Страница плагина: http://wordpress.org/extend/plugins/q2w3-fixed-widget

Скачать последнюю версию: http://downloads.wordpress.org/plugin/q2w3-fixed-widget.zip

Установка

В панели управления WordPress переходим на страницу Плагины -> Добавить новый. Ищем плагин по названию: Q2W3 Fixed Widget. Устанавливаем.

Использование

После установки переходим на страницу Внешний вид -> Виджеты.

У активных виджетов появится дополнительная опция «Зафиксировать виджет»:

Зафиксировать виджет

Зафиксировать виджет

Отмечаем, сохраняем, проверяем результат.

Дополнительные настройки

На странице Внешний вид -> Фикс. Виджеты есть две дополнительные настройки: верхний отступ и нижний.

Верхний определяет расстояние (в пикселах) между верхней границей окна браузера и верхней границей первого зафиксированного виджета (в режиме фиксации).

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

Плагин не работает. Причины:

  1. Основная причина. В некоторых шаблонах у виджетов отсутствуют уникальные идентификаторы (html-атрибут id).
    Как проверить. Поместите в сайдбар два одинаковых текстовых виджета. Посмотрите html-код страницы. Если у виджетов атрибут id одинаковый или вовсе отсутствует, то вы нашли корень проблемы.
    Как исправить. Необходимо внести изменения в текущий шаблон. Открываем functions.php, ищем функцию register_sidebar (функция может располагаться и в других файлах, подключаемых к functions.php через include и require). По умолчанию register_sidebar выглядит так:

    $args = array(
     'name' => __( 'Sidebar name', 'theme_text_domain' ),
     'id' => 'unique-sidebar-id',
     'description' => '',
     'class' => '',
     'before_widget' => '<li id="%1$s">',
     'after_widget' => '</li>',
     'before_title' => '<h2>',
     'after_title' => '</h2>' );
    register_sidebar($args);

    Нас интересует параметр before_widget. В проблемном случае атрибут id отсутствует или имеет значение отличное от:

    id="%1$s"

    Восстанавливаем id. Тип контейнера при этом не меняем, оставляем как есть (li, div и т.п.). Проверяем результат.

  2. Наличие на странице ошибок JavaScript. Другие плагины могут поставить палки в колеса. Смотрим в консоль ошибок браузера. Если ошибки есть, вычисляем сбойный плагин, деактивируем.
  3. В шаблоне отсутствуют функции wp_head и wp_footer (см. header.php и footer.php). Случай совсем запущенный, маловероятный, но встречал и такое.