Как изменить размер сайдбара – ручной метод и редактура при помощи Visual Sidebar Editor. Меняем местами сайдбар и основное текстовое поле Как сделать левый сайдбар в wordpress

Привет Друзья! Как и обещал, составил тему о сайдбарах WordPress . Это маленькое руководство по использованию и настройке сайдбаров на сайтах WordPress.

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

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

Что такое сайдбар WordPress?

На самом деле термин ‘сайдбар (sidebar)’ может означать два абсолютно не связанных понятия в системе WordPress:

  1. Динамичный сайдбар (Dynamic sidebar) : контейнер для набора виджетов, которые пользователь установить через админ панел -> раздел Виджеты.
  2. Шаблон боковой панели (Sidebar template) : это сайдбар, который отображается шаблоном сайта.

В большинстве случаев, простые шаблоны имеют динамичный сайдбар, которые загружают все размещённые виджеты из админ панели. Этот процесс может проходить и по другому алгоритму, но чаще всего именно по этой схеме. Всё же важно понимать, что динамичный сайдбар и шаблон боковой панели – это две разные вещи. Все премиум , в основном работаю с Sidebar template.

Обычно, термин ‘сайдбар’ используют по отношению к динамичной боковой панели, о которой и пойдет речь в данной статье. Однако я буду затрагивать и шаблон боковой панели.

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

Регистрируем, добавляем и создаём сайдбар WordPress

Многие темы часто не соответствуют стандартам качества, поэтому, если Вы разработчик шаблонов, давайте убедимся, что Вы относитесь к этому вопросу серьёзно. Создание соответствующего динамичного сайдбара WordPress – наиболее важная часть процесса, потому что то, что Вы в нем установите, будет связано со всеми другими функциями боковой панели.

Чтобы создать один или несколько сайдбаров, Вам придёться регистрировать их через файл functions . php Вашей темы, у каждой темы существует свой файл, который содержит все настройки шаблона. В файл functions . php Вы можете дописывать или удалять настройки темы.

Код, представленный ниже, демонстрирует, как можно создать сайдбар в системе WordPress, воспользовавшись функцией register_sidebar () . В данном случае мы будем создавать боковую панель под названием ‘primary’, которая станет примером для дальнейшей работы.

"primary", "name" => __("Primary"), "description" => __("Описание сайдбара (видно в админ панеле)."), "before_widget" => "

", "after_widget" => "
", "before_title" => "

", "after_title" => "

")); /* Вы можете повторить функцию register_sidebar() для других виджетов, поле id должно быть уникальным (primary, secondary, moiwidget и так далее. */ } ?>

add_action ("widgets_init" , "registriruem_sidebari" ) ;

function registriruem_sidebari () {

/* Регистрируем "primary" сайдбар. */

register_sidebar (

array (

"id" = > "primary" ,

"name" = > __ ("Primary" ) ,

"description" = > __ ("Описание сайдбара (видно в админ панеле)." ) ,

"before_widget" = > "

" ,

"after_widget" = > "

" ,

"before_title" = > "

" ,

"after_title" = > "

"

/* Вы можете повторить функцию register_sidebar() для других виджетов, поле id должно быть уникальным (primary, secondary, moiwidget и так далее. */

Как Вы видите регистрация сайдбара очень простая задача, если есть информация как это делать.

Аргументы для создания динамичной боковой панели dynamic_sidebar ()

Функция register_sidebar () признает только один параметр, он называется $ args и содержит множество аргументов, определяющих, каким образом боковая панель с её виджетами должна быть обработана. Далее рассмотрим примеры как использовать аргументы вручную.

Id

Аргумент id , возможно, один из самых важных аргументов, который необходимо прописать (посмотрите пример некачественно написанного кода ниже и поймете, почему Вы обязательно должны прописать его). WordPress будет использовать id , чтобы назначить виджеты для определенного сайдбара, а Вам понадобится id , чтобы в дальнейшем заполнить боковую панель – сайдбар.

Каждый id должен быть уникальным. WordPress, по умолчанию, пропишет его для sidebar - $ i (где $ i

//наш id виджета, который назначается только один раз "id" => "primary",

Name

Вы можете прописать любое имя, которое, на Ваш взгляд, наилучшим образом представит Ваш сайдбар WordPress . Чаще всего сайдбарам присваивают имена, по которым пользователь сможет определить, какие аспекты темы, он затрагивает (например левый или правый сайдбар). Этот аргумент может быть интернационализирован (т.е. локализован для других языков). Поэтому удостоверьтесь, что Вы прописали правильный текстовый домен во время подготовки темы для перевода. Аргумент, по умолчанию, прописывается как Sidebar $ i (где $ i – это порядковое число созданного сайдбара).

//name виджета, в примере использую Primary, как название id виджета "name" => "Primary",

description

Аргумент description впервые был представлен в версии WordPress 2.9. Этот аргумент позволяет описать Ваш виджет, описание отображается в админ панеле в разделе Виджеты. Этот аргумент, по умолчанию, прописывается в пустой строке. Он также может быть интернационализирован (т.е. писать кирилицой или другими языками).

//description будет видно в разделе виджеты "description" => __("Виджет для левой колонки на сайте"),

before_widget

Аргумент before_widget это открывающий элемент виджета, назначенного для сайдбара. Это также должен быть элемент уровня блока HTML разметки (например, тег < li > , < p > , < div > и т. д.). У этого аргумента есть пара особенностей, которые Вы можете прописывать например в id = "" или class = "" : атрибуты id = "" прописываются так: (% 1 $ s ) и атрибуты class = "" так: (% 2 $ s ) .

По умолчанию, WordPress пропишет их как элемент списка: < li id = "%1$s" > . Я не сторонник создавать элементы списка виджетов сайдбара. Я всегда использую < div > . Я не сторонник создавать элементы списка виджетов сайдбара. Последнее время я использую, так как в случае отсутствия виджета на сайте у Вас не будут отображаться лишние HTML теги, впрочем далее мы рассмотрим как от них избавиться.

after_widget

Аргумент after_widget довольно просто создать. Это закрывающий элемент для виджета, назначенного для сайдбара. Вам просто необходимо закрыть элемент, прописанный для аргумента before_widget . По умолчанию, WordPress пропишет его, как < li > .

"after_widget" => "

",

[ crayon - 5e1ff7d787fb8042608178 inline = "true" ] "after_widget" = > "" ,

before_title

Большинство виджетов отображают заголовок, если пользователь заносит его. Аргумент before_title это открывающий элемент заголовка виджета. По умолчанию, WordPress прописывает его как < h2 > . Для использовать теги < h2 > не стоит, в данном случае подойдут теги < h3 > и < h4 > . Для интуитивности и читабельности кода не делайте названия классов без дефисов, чтобы Вам самим было удобнее прочитать название, очень актуально, если не работали с сайтом некоторое время.

after_title

Аргумент after_title это закрывающий элемент, прописанный в аргументе before_title . По умолчанию, WordPress прописывает его как < / h2 > .

Необходимо удостовериться, что его значение совпадает со значением, прописанным в аргументе before_title .

"after_title" => ""

"after_title" = > ""

Отображение динамичного сайдбара dynamic_sidebar()

Когда создание сайдбара завершено, можно заняться его отображением внутри темы. В системе WordPress для этого создана функция под названием < a title = "Codex Wordpress функция dynamic_sidebar()" href = "http://codex.wordpress.org/Function_Reference/dynamic_sidebar" target = "_blank" rel = "nofollow" > dynamic_sidebar () < / a > . Данная функция всегда запрашивает параметр $ index , который может одновременно располагаться как в аргументе id , так и в аргументе name (прописанный во время создания сайдбара). Несмотря на то, что технически возможно использование обоих, гораздо безопаснее использовать прописанный Вами id .

Используя в одном из Ваших шаблонов код, представленным ниже, Вы можете расположить сайдбар primary , описанный чуть выше. Обратите внимание, что div с class и id Вы можете поменять на своё усмотрение и прикрутить к ним различные css стили .

// вызываем функцию отображения сайт бара

< div id = "id-vidgeta-primary" class = "moi-saidbar" >

// вызываем функцию отображения сайт бара

< / div >

Обычно этот код располагается в файле sidebar - primary . php , о котором Вы узнаете чуть позже, когда мы будем говорить о шаблонах боковой панели. Однако dynamic_sidebar () может быть вызван в любом месте Вашей темы.

  • Делаем и

Отображение контента по умолчанию (default content)

Некоторые разработчики тем отображают собственный контент, если пользователь не закрепил ни одного виджета в конкретном сайдбаре. Чтобы проверить наличие виджетов в сайдбаре, воспользуемся условным тегом is_active_sidebar () .

Точно так же, как функция dynamic_sidebar () , использующаяся для наполнения сайдбара, функция is_active_sidebar () всегда запрашивает параметр $ index , который должен являться ID сайдбара, который Вы проверяете.

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

< div id = "id-vidgeta-primary" class = "moi-saidbar" >

< / div >

Не отображаем боковую панель без виджетов

В предыдущем разделе показано, как расположить недостающий контент, когда определенный сайдбар не активен, но у Вас также есть возможность полностью свернуть (ничего не отображать) сайдбар, если боковая панель не активна.

Мы снова будем использовать, функцию is_active_sidebar () , чтобы проверить сайдбар primary на наличие виджетов.

< div id = "id-vidgeta-primary" class = "moi-saidbar" >

< / div >

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

Шаблоны боковой панели – сайдбара

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

Шаблон сайдбара используется для размещения кода динамичного сайдбара (посмотрите ‘Отображение динамичного сайдбара’ выше). В среднем, все темы WordPress имеют один шаблон под названием sidebar . php . Если Ваша тема имеет одну боковую панель – этого шаблона достаточно.

Шаблоны сайдбара заполняются внутри темы при помощи функции get_sidebar () .Представленный ниже код я обычно использую, чтобы заполнить файл sidebar . php .

[ crayon - 5e1ff7d788042260898923 inline = "true" ]

get_sidebar () также всегда запрашивает параметр $ name , который позволит заполнить более конкретные шаблоны. Например, код, представленный ниже, запрашивает файл шаблон sidebar - primary . php .

[ crayon - 5e1ff7d788051693571425 inline = "true" ]

Для наведения полного порядка в Вашей теме и разделения кода необходимо создать конкретный шаблон для каждого динамичного сайдбара. Я предполагаю, чтобы для начала Вы создали два динамичных сайдбара с уникальными id : primary и secondary . Для лучшей организации создайте два файла: sidebar - primary . php и sidebar - secondary . php .

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

[ crayon - 5e1ff7d788066428860015 inline = "true" ]

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

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

Неудачный код сайдбара

Существует ряд повторяющихся от кода к коду недочетов, которые я не приемлемы на хороших сайтах. Не все они, конечно, технически неправильны, но могут привести к неисправностям или просто являются лишней нагрузкой кода.

Проблема 1: беспорядочный код, сброшенный в functions . php

Если Вы разрабатываете темы, необходимо знать, что WordPress built-in hooks , работает с помощью hooks. Необходимо не просто хорошо знать их, важно их использовать. Самая большая проблема, которую я обнаружил, заключается в том, что код попросту сбрасывается в functions . php . Вам следует создавать функцию регистрации сайдбара, а затем прикреплять её к widgets_init. Вы можете посмотреть пример того, как это сделать выше, в разделе ‘Регистрация и создание динамичного сайдбара’.

В качестве заметки: Вы должны забыть о том, что можно просто сбрасывать код в functions . php . Всегда используйте функцию hooks в WordPress, это обеспечит стопроцентное выполнение Ваших функций.

Проблема 2: отсутствие прописанных ID

Важно понимать, если неясно прописывают id, это обязательно повлечет за собой определенные последствия. Когда Вы используете register_sidebar () или register_sidebars () , не прописывая индивидуальный id , WordPress автоматически создает индикаторы id , подсчитывая количество уже созданных сайдбаров. И, казалось бы, всё замечательно. Но это большая ошибка. Ведь когда плагин или child theme создает новый сайдбар, боковой панели присваивается id 1 (если она первая в потоке), что приводит к изменению id всех других сайдбаров. Когда пользователь обратится к сайдбару, он увидит, что все его виджеты закреплены за другим сайдбаром.

Виджеты закреплены за динамичным сайдбаром, в соответствии с его id . Если id меняется, виджеты также перемещаются. Вот почему так важно надлежащим образом прописывать id во время создания сайдбара. Выше, в разделе ‘Регистрация и создание динамичного сайдбара’, Вы можете посмотреть, как сделать это правильно.

Ещё одним преимуществом четкого прописания id является то, что Вы точно знаете, что id предназначен для использования в других функциях, таких как dynamic_sidebar () и is_active_sidebar function_exists () нет никакой необходимости. Как упоминалось ранее в этой статье, динамичные сайдбары существуют примерно с 2007 года. Использовать такой тип проверки можно только для обеспечения обратной совместимости. Однако большинство тем не имеют обратной совместимости, да и я не рекомендую использовать её со времен появления предыдущей версии.

Один из распространенных типов проверки на существование функции register_sidebar () представлен ниже. Забудьте об этом типе проверки и просто создайте сайдбар.

if (function_exists("register_sidebar")) dynamic_sidebar include (TEMPLATEPATH . "/sidebar.php" ) ;

Это не лучший способ отображения сайдбара в теме. В системе WordPress есть функция get_sidebar () , с помощью которой можно легко это сделать. Всегда пользуйтесь ей, как это показано в образце выше, в разделе ‘Шаблоны боковой панели – сайдбара’. Вам стоит использовать эту функцию, потому что хук

Сайдбаром (sidebar) называется специальное поле на сайте, куда встраиваются виджеты. Иными словами — это колонка с динамическим содержимым. Практически все шаблоны имеют такие колонки и их количество может быть различным. Зачастую используется от 1 до 4 колонки.

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

Смена расположения сайдбара и основного текста

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

Пусть колонка с виджетами располагается справа, а нам нужно переместить её влево до самого края. Соответственно колонка с основным текстовым содержимым переместиться вправо до самого края.

Чтобы всё это сделать, нужно немного изменить стили. Текстовое содержимое зачастую имеет стиль #content, а содержимое с виджетами — #sidebar. Всё что нужно — это сменить свойства у первого с float: left; на float: right; и в другой последовательности для второго.

Смена расположения сайдбара в теме Twenty Twelwe

Рассмотрим всё вышесказанное на примере стандартной адаптивной темы для Вордпресс.

Для добавления необходимых плагинов и дополнений на страницу в WordPress необходимо просто перетащить в админке интересующий вас виджет на sidebar. Таким образом, даже новички в движке WordPress могут без осложнений видоизменить свою боковую панель (и не только её).

Порой разработчики темы предоставляют на выбор несколько возможных сайдбаров, куда вы можете перетащить widget . Но бывают и темы, где сайдбаров 1-2, и они используются чисто для нужд самой темы (то есть новые виджеты вы туда запихнуть не сможете).

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

Для начала необходимо зарегистрировать ваш сайдбар. Это можно сделать в файле functions.php в папке с шаблоном. Некоторые разработчики шаблонов создают спец. функцию по регистрации сайдбаров. К примеру, function twentyten_widgets_init() {} . Это не принципиально. Просто найди то место в коде, где происходит регистрация. Выглядит это примерно так:

Register_sidebar(array("name"=>"Site description", "before_widget" => "

", "after_widget" => "
"));

Как добавить свой сайдбар?

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

Register_sidebar(array("name" =>"Second sidebar", "id" => "secondary-widget-area", "before_widget" => "

  • ", "after_widget" => "
  • ", "before_title" => "

    ", "after_title" => "

    ",));

    Name — название вашего sidebar. оно будет отображаться в админке.

    id — уникальный идентификатор. Он вам понадобиться при добавлении на страницу (об этом ниже).

    before_widget — код/текст, который будет вставлен перед каждый виджетом.

    after_widget — соответственно, код/текст, который будет вставлен после каждого виджеа.

    before_title — код/текст, который будет вставлен перед заголовком виджетов.

    after_title — код/текст, который будет вставлен после заголовком виджетов.

    После добавления выше приведённого кода в файл, сохраните его и зайдите на страницу виджетов в административной панели. Теперь точно так же, как и с остальными сайдбарами, вы можете перетаскивать на новый необходимые виджеты. Чтобы этот сайдбар отобразился на вашем веб-сайте, вам нужно открыть соответствующий файл шаблона, а именно sidebar.php , и найти код:

    Вам необходимо в том месте, где вы хотите видеть свой сайдбар, добавить его между открывающим и закрывающими тегами. Будет примерно так:

    Для красивого вывода, можете включить этот код в блок:

    Как вы уже наверно заметили secondary-widget-area при выводе на странице — это имя сайдбара. Оно должно быть точно таким же, как имя указанное при регистрации в файле functions.php . Теперь, редактируя файл style.css придать сайдбару нужный вид.

    Выводит на экран первую активную панель виджетов (сайдбар - панель в которой есть хотя бы один виджет). Можно указать ID или номер панели, какую именно выводить, если на сайте большее одной панели виджетов.

    dynamic_sidebar() возвращает true или false, с возвращаемым результатом, также выводит на экран панель виджетов. Возвращаемое значение можно использовать, например, чтобы определить нужно ли обрабатывать код заменяющий виджеты, когда в панели нет виджетов (см. пример #1).

    Возвращает

    true, если панель с виджетами была найдена. false, если панели нет, или в ней нет виджетов.

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

    $index(строка/число) Идентификатор панели, указанный в параметре id функции register_sidebar(), при регистрации панели. Если указано число, то будет искаться панель с ID sidebar-$index .
    По умолчанию: 1 (sidebar-1)

    Примеры

    #1 Выводим сайдбар, если он есть.

    Этот пример показывает как вывести первый не пустой сайдбар (при регистрации id сайдара не был указан) или если он не найден обработать указанный код:

    #2 Выводим нужный сайдбар.

    #3 Проверяем наличие панели и выводим её

    В примере 2 мы не проверяли наличие панели и виджетов в ней. В этом примере мы проверим наличие панели, чтобы не выводить лишние HTML теги (