12 марта 2013 г.

Как отображать виджеты в Blogger на определённых страницах

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

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

 И так давайте проделаем фокус с виджетом или кодом. Перейдите на вкладку Шаблон - Изменить HTML. Так как нам потребуются  “внутренности” виджетов, отмечаем галочкой “Расширить шаблоны виджета”. Как правило, все виджеты в шаблоне Blogger выглядят так:

<b:widget (id, название и тип виджета)/>
<b:includable id='main'>
    (содержимое виджета)
</b:includable>
</b:widget>

 С помощью комбинации клавиш CTRL+F (в правом верхнем углу браузера появится окошко) находим название нашего виджета. Для того, чтобы настроить показ виджета, в его код достаточно добавить теги:

<b:widget (id, название и тип виджета)/>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "тип страницы"'>
    (содержимое виджета)
</b:if>
</b:includable>
</b:widget>

Сам по себе тег <b:if cond='data:blog.pageType == "тип страницы"'>  не имеет функциональности, в данном контексте это условие, обозначающее тип страниц для показа виджета либо для его запрещения и обозначено для примера.

В Blogger существуют следующие типы страниц:

homepageUrl – главная страница
static_page – статичные страницы, например, страница контактов, содержания блога и т.д.
item – страницы сообщений
index – страницы ярлыков
archive – страницы архива

Чтобы вывести или наоборот скрыть виджет на определенной странице вместо открывающего тега <b:if cond='data:blog.pageType == "тип страницы"'> , служащего образцом, воспользуйтесь строкой кода из таблицы ниже:

Условие для определенных страницОбозначение
<b:if cond="data:blog.url == data:blog.homepageUrl"> показ только для главной страницы
<b:if cond='data:blog.pageType == &quot;item&quot;'> показ только для страниц сообщений
<b:if cond='data:blog.pageType == "archive"'> показ только для страниц архива
<b:if cond='data:blog.url != data:blog.homepageUrl'> показ для всех страниц, кроме главной
<b:if cond='data:blog.pageType == &quot;static_page&quot;'> показ только для статичных страниц
<b:if cond='data:blog.pageType == "index"'> показ только для главной и для страниц ярлыков
<b:if cond='data:blog.url == "http://адрес страницы/"'> показ только для определенной пользователем страницы

Если в теге условие равно (==) типу страницы, тогда виджет будет показываться, если не равно (!=), виджет запрещен к показу. На основе этого вы можете регулировать показ виджета на любом типе страниц. Давайте я Вам покажу пример на виджете "Счетчик".

<b:widget id='HTML7' locked='false' title='Счетчик' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
  <!-- only display title if it's non-empty -->
  <b:if cond='data:title != &quot;&quot;'>
    <h2 class='title'><data:title/></h2>
  </b:if>
  <div class='widget-content'>
    <data:content/>
  </div>
</b:if>
  <b:include name='quickedit'/>
</b:includable>
</b:widget>

Теперь виджет "Счетчик" будет показан только на главной странице блога.

Дорогие друзья, тем кому не понятно я поступлю проще. Вот так:

Показ виджета только на главной странице:
<b:if cond='data:blog.url == data:blog.homepageUrl'>
 виджет/код
</b:if>
Показ только для страниц сообщений:
<b:if cond='data:blog.pageType == "item"'>
 виджет/код
</b:if>
Показ только для страниц архива:
<b:if cond='data:blog.pageType == "archive"'>
 виджет/код
</b:if>
Показ для всех страниц, кроме главной:
<b:if cond='data:blog.url != data:blog.homepageUrl'>
 виджет/код
</b:if>
Показ только для статических страниц:
<b:if cond='data:blog.pageType == "static_page"'>
 виджет/код
</b:if>
Показ только для главной и для страниц ярлыков:
<b:if cond='data:blog.pageType == "index"'>
 виджет/код
</b:if>
Показ на всех страницах, кроме указанной:
<b:if cond='data:blog.url != "url_страницы"'>
 виджет/код
</b:if>
Так как в таблице указаны не все правила, приведу дополнительно ещё.

Показ на определённой странице:
<b:if cond='data:blog.url == "url_страницы"'>
 виджет/код 
</b:if>
Показ только на страницах ярлыков:
<b:if cond='data:blog.searchLabel'>
 вижет/код
</b:if>

Вот вроде всё. Если что упустил из виду, прошу писать в комментариях. Всем пока. Удачи.

Ваш Сергей.


Ух ты кнопочки! Понравилась статья? Поделитесь с друзьями:

29 коммент. :

  1. Спасибо, за удобно и доходчиво изложенную информацию, было очень полезно.

    ОтветитьУдалить
    Ответы
    1. Спасибо Вам, за приятные слова.Буду и дальше стараться.

      Удалить
  2. хочу вставить часы на определенную страницу - установились - но теперь двое часов и на всех страницах есть- подскажите пожалуйста что сделал не так ?

    ОтветитьУдалить
    Ответы
    1. Владимир,Вы установили часы через гаджет HTML/JavaScript или нет?Мне нужно знать, что Вы сделали и какое правило установили.

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
    Ответы
    1. да я так устанавливал - гаджет- HTML/JavaScript - потом вставил тег для показа на определенной странице - отображает двое часов

      Удалить
    2. ВСЕ ПОЛУЧИЛОСЬ !!! моя ошибка была в том, что я вставлял еще раз код гаджета после нужного тега и получалось двое часов :) Спасибо за полезную информацию !

      Удалить
    3. Владимир,я всегда всё новое испытываю в блоге с одинаковым шаблоном.Советую завести тоже блог для тренировок. 8-)

      Удалить
  4. Спасибо за подробное описание добавим в закладки!

    ОтветитьУдалить
    Ответы
    1. Пожалуйста.Я во всех своих блогах подробно всё объясняю.

      Удалить
  5. Спасибо за хорошую статью. ...а если нужно показать виджет на нескольких (произвольных) страницах. Как поступить?

    ОтветитьУдалить
  6. Спасибо за полезную информацию!
    И еще хотелось бы знать как поставить рекламу Adsece внутри постов чтобы потом на главной странице конфликтов не было ?

    ОтветитьУдалить
    Ответы
    1. http://shkolablogger.ru/sposobyi-vstavki-kontekstnoy-reklamyi-adsense-v-postyi-blogger.html

      Удалить
  7. Сергей Вы очень крутой !
    Спасибо!

    ОтветитьУдалить
  8. Круче не куда все же не поленился и разобрался, как то давно не мог времени не было. Спасибо прекрасная статья. :p

    ОтветитьУдалить
    Ответы
    1. Привет, Илья!Да,сначала трудновато понять,но потом проще пареной репы. 8-)

      Удалить
  9. Этот комментарий был удален автором.

    ОтветитьУдалить
  10. Спасибо! Отличная публикация.
    Но - вопрос. Нельзя ли это применить к секции? То есть, например, какие изменения внести в запись вида:
    b:section class='tabs' id='crosscol-over' showaddelement='no' *

    * знаки < > убраны, как нечитаемые в окне комментария

    ОтветитьУдалить
  11. Отличная стаья!!! Сделал все по ней, все работает, показывает там где надо. Но есть маленькое "но"
    Вот мой сайт: http://www.pc-aio.ru убрав виджет от него осталась полоска, это видно прокрутив сайт в низ. как от нее избавиться?
    И еще хотелось бы узнать, а как виджет скрыть на всех страницах сразу?

    ОтветитьУдалить
  12. Подскажите, если я хочу запретить к показу сразу несколько страниц:

    ( ) как правильно написать?

    ОтветитьУдалить
    Ответы
    1. Только для всех страниц или только на для одной. Для выборочных не получится.

      Удалить
  13. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  14. Здравствуйте, статья просто класс!!! Все понятно написано. Многое сделал по этой статье и все было норм. Но у меня есть проблемка одна:(
    Вот мой сайт: http://www.pc-technologies.ru мне надо чтобы в разделе "планшеты" был текст. Я все сделал как описано у Вас.
    Вот что у меня получилось:

    виджет/код

    Но текст не отображается на нужной мне странице. Что я делаю не так?
    Заранее благодарен за ответ.

    ОтветитьУдалить
  15. Добрый день, Сергей!
    У меня почему-то не получается отразить виджет для отдельной страницы.
    То есть вида:
    Показ на определённой странице:
    1

    2
    виджет/код
    3


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

    ОтветитьУдалить
    Ответы
    1. Данная фича не работает. Подтверждаю. Тоже пытался настроить отображение на странице с конретным url (или не отображение). Но не удалось. Остальные правила работают. Это видимо баг в гугле.

      Удалить
  16. Проблема в том, что статья не актуальна на 2015 год. Уберите или обновите статью, чтобы не вводить людей в заблуждения. В Гугле много что изменилось, усовершенствовалось. Лично у меня ваше описание не прокатило.

    ОтветитьУдалить
    Ответы
    1. Статья будет актуальна всегда и Google здесь, не причём. Шаблон Blogger остаётся такой же. Проблема в вас, а не в статье и не вводите в заблуждение читателей.

      Удалить

 
Яндекс.Метрика