Использование условных тегов в Blogger

Условные теги позволяют отображать элементы только на определённых веб-страницах, не задействовав весь блог в целом. И в отличии от свойства display: none;, не просто их скрывают, а удаляют из исходного кода.

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

<b:if cond='погода == дождливая'>
  я остаюсь дома
<b:else/>
  иду гулять
</b:if>
Что можно интерпретировать как: "Если (b:if cond) погода дождливая, то я остаюсь дома, иначе (b:else) иду гулять".

Когда мы вместо равенства указываем !=, то получается наоборот:
<b:if cond='погода != дождливая'>
  я остаюсь дома
<b:else/>
  иду гулять
</b:if>
"Если погода недождливая, то я остаюсь дома, иначе иду гулять".

Может быть только один результат:
<b:if cond='погода == дождливая'>
  я остаюсь дома
</b:if>
"Если погода дождливая, то я остаюсь дома".

Обязательно должно присутствовать окончание условия </b:if>.

Наиболее полезные условия Blogger

Для Blogger есть много разных условий, но наиболее интересными является тип групп страниц (data:blog.pageType). Он может принимать пять значений:

  • Cтраницы
    <b:if cond='data:blog.pageType == &quot;static_page&quot;'>
  • Сообщения
    <b:if cond='data:blog.pageType == &quot;item&quot;'>
  • архив
    <b:if cond='data:blog.pageType == "archive"'>
  • 404 ошибка
    <b:if cond='data:blog.pageType == &quot;error_page&quot;'>
  • остальные страницы, в том числе Главная, ярлыки и навигация
    <b:if cond='data:blog.pageType == "index"'>
    • отдельно для ярлыков
      <b:if cond="data:blog.searchLabel" >
    • отдельно для Главной
      <b:if cond='data:blog.url == data:blog.homepageUrl'>

Чтобы задать условие одной конкретной странице используем data:blog.url:

<b:if cond='data:blog.url == "http://адрес_вашей_строницы/"'>
При этом http://адрес_вашей_строницы/ должен быть с доменом .com (см. про региональные домены в Blogger):
http://zarabotokiinternet.blogspot.ru/2011/02/uslovnye-tegi-v-blogger.html
http://zarabotokiinternet.blogspot.com/2011/02/uslovnye-tegi-v-blogger.html

Другие более сложные выражения приведены на этой странице. Если вы справитесь и с ними, то можно смело изучать JavaScript :)

Разный фон на разных страницах

Рассмотрим как сделать фон статистических страниц отличный от основного.

В шаблоне перед </head> добавляем:

<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<style>
body {
background: url(адрес_изображения); 
}

.body-fauxcolumns .cap-top {
background: transparent;
}

.widget ul li, .widget #ArchiveList ul.flat li {
border-top: none;
}
</style>
</b:if>
Строку .widget ul li, .widget #ArchiveList ul.flat li {border-top: none;} нужно указывать не для всех шаблонов, а только для тех, у кого есть пунктирные линии - разделители в гаджетах.

Как убрать с Главной конкретную страницу в Blogspot

Каждое сообщение имеет свой id. Его можно узнать на странице публикации поста в строке браузера

id сообщения blogger
В шаблоне есть такой участок кода:
<b:includable id='post' var='post'>
........содержание........
</b:includable>
его мы заменяем на
<b:includable id='post' var='post'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<b:if cond='data:post.id != &quot;1873004851645451173&quot;'>
........содержание........
</b:if>
<b:else/>
........содержание........
</b:if>
</b:includable>
1873004851645451173 - это id из скриншота выше.

Поскольку мы поставили условие data:blog.url == data:blog.homepageUrl, то страница, уйдя с Главной, будет видна по ссылке "Предыдущие". Если определить условие как data:blog.pageType == "index", то мы не увидим сообщение ни на Главной, ни по ссылке "Предыдущие", ни на страницах ярлыка, таких как http://shpargalkablog.ru/search/label/feed. А если — data:blog.pageType != "item", то пост найдём лишь по его адресу, например, http://shpargalkablog.ru/2011/02/uslovnye-tegi-v-blogger.html.

в f t
наверх ↑

68 комментариев:

PANIC
Спасибо!!!
а что означает следующее:

.body-fauxcolumns .cap-top {
background: transparent;
}
NMitra
Фон линии заголовка задаём прозрачным. Иначе не очень хорошо получится.
PANIC
мне хочется, чтобы вместе со сменой фона на некоторых страницах убирался полупрозрачный фон из-под картинки в заголовке (фон в шаблоне Корпорация "Чудеса", розовый). как это можно реализовать?

я поняла, что полностью сей элемент удалятся в таком месте

.header-outer {
margin: $(header.margin.top) 0 $(header.margin.bottom) 0;
background: $(header.background.color) $(header.background.gradient) repeat scroll 0 0;
}

просто удалением background.

в указанную Вами конструкции надо вписать .header-outer {} с убранным там background? у меня не выходит :(
NMitra
В правильном направлении мыслите:

.header-outer {
background: transparent;
}
PANIC
Спасибо! всё получилось))
vikki1000
фон получается - замостить а мне надо
на одной странице -слева
а на другой - справа
NMitra
Не поняла вас.
vikki1000
я нашла вот здесь ответ
http://design-mania.ru/web-design/html-css/css-background/

оказывается это называется настройки для background

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

2) <b:if cond='data:blog.pageType != &quot;static_page&quot;'><b:if cond='data:blog.url != data:blog.homepageUrl'>.....</b:if></b:if>
vikki1000
спасибо,помогло)
And-rz
Какая разница между data:blog.pageType и data:blog.pageType == "index"
And-rz
Какая разница между data:blog.pageType != "item" и data:blog.pageType == "index"
NMitra
data:blog.pageType может принимать несколько значений, одно из которых index.
NMitra
== только, скажем, Главная
!= все, кроме Главной
temasey
а возможно на любых страницах менять фон?
NMitra
Не поняла вопроса. Первый вариант для конкретной страницы, либо группы страниц показан в статье. По нажатию на кнопку - http://shpargalkablog.ru/2011/08/fon-dlya-saita-html.html#c6318980539857451449 , в зависимости от времени суток - http://shpargalkablog.ru/2010/07/kartinku-v-zagolovok-bloga.html#vremya (там про заголовок, но и для фона всего блога скрипт будет тот же).
temasey
ааа...просто полностью статью не прочитал, а вырвал кусок. с эти разобрался, но есть одно но. можно сделать так чтобы фон не разделялся как мозайка еще несколько раз, а был один единственный?
NMitra
http://shpargalkablog.ru/2011/08/fon-dlya-saita-html.html

background: green url(....) fixed;
temasey
нет-нет...как чтобы не прокручивалась картинка, а чтобы была единственная ну, а дальше можно просто черный фон
NMitra
Там же "no-repeat".
Анонимный
у меня купили рекламу, но гаджет adsense в правой и верхней колонке все портит. можно ли его убрать только с одной страницы где написано это сообщение.
Но я все равно не понимаю как это сделать.
NMitra
Ваш URL блога
RWJ
Извините, но я боюсь за свою конфиденциальность. :(
Шаблон simple.
условно url: prdeved.blogspot.com
похожая строка:
http://s017.radikal.ru/i443/1305/3a/641d9f7d8646.jpg
NMitra
Как я по вашему должна вам помогать? Ищите что-то похожее

        <b:if cond='data:post.includeAd'>
          <b:if cond='data:post.isFirstPost'>
            <data:defaultAdEnd/>
          <b:else/>
            <data:adEnd/>
          </b:if>
          <div class='inline-ad'>
            <data:adCode/>
          </div>
          <data:adStart/>
        </b:if>

и окружайте его кодом

<b:if cond='data:blog.url != "http://адрес_вашей_строницы/"'>
................
</b:if>
Анонимный
если бзе url не сможете помочь, тогда извините за беспокойство.
Азазаз
верхний кусок кода нужно окружать этим?


большой кусок код.


Азазаз
<b:if cond='data:blog.url != "http://адрес_вашей_строницы/"'
большой кусок код.
</b:if
Азазаз
спасибо разобрался.
со скриншотом проще
http://4.bp.blogspot.com/-E2YlixWv5V0/Ts38O5I1vGI/AAAAAAAAHOo/2xciE3KWQ4M/s1600/template-editor-blogger2.jpe
NMitra
Вот и хорошо :)

b:include тоже в условие можно добавить, а то болтается ни к тому, ни к сему.
TURTLE
Я не совсем понял , можно ли задать условие, чтобы определенный виджет отображался только с определенным сообщением. Если это возможно, то как задать это условие?
TURTLE
Извините, не дочитал. Все уже получилось.Большое спасибо!
Ivan Ozarov
Огромное спасибо! :))
Артём Ерёмин
Не срабатывает условие

вывод 1-ого значения

вывод 2-ого значения


Отдельно вывожу dir='ltr'>().

При переходе на "http://ereminartem.blogspot.ru/search/label/drawing" всегда выводит "2". Подскажите, пожалуйста, в чём может быть ошибка
Артём Ерёмин
b:if cond='data:blog.url != "http://ereminartem.blogspot.ru/search/label/drawing"'>
1

2
</b:if
NMitra
Я потеряла ход обсуждений и не помню что нужно сделать :((( Комментарии пишите так http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html
Ирина
Очень и очень полезная статья) Спасибо за Ваш труд! Скрыла футер постов там, где он мне не нужен буквально в 2 клика.
NMitra
Спасибо, у меня есть статьи "рабочие лошадки", к которым я сама без конца обращаюсь - эта из их числа
Юлия Алешкина
Здравствуйте! Помогите, пожалуйста, реализовать условный тег для Linkwithin - на страницах ярлыков он у меня вылезает в самом низу страницы (например, вот тут http://www.altoys.ru/search/label/%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D0%BD%D0%BE%D0%B6%D0%BA%D0%B8)
Поняла, что нужно именно к нему сделать этот тег, но не поняла как...
NMitra
Здравствуйте. Если хотите его вовсе убрать, то код Linkwithin (уже имеющийся, а не добавленный вновь) в шаблоне нужно окружить (не точно, моё предположение):

<b:if cond="data:blog.searchLabel == ''" >
код Linkwithin
</b:if>
Юлия Алешкина
Большое спасибо за ответ! Я пробую разные способы. Пока не получается ) уже думаю его вовсе убрать...
KrisTina
добрый день,
подскажите, а можно ли установить linkedwithin и на статичных страницах блога ??
на главной странице у меня будут посты по двум темам, а на статичных каждая тема имеет свою страницу и вот я бы хотела избавить читателей от прокрутки ползунка вниз если он зайдёт не на главную, где есть всё, а в статичную страницу по теме!
Если я правильно объяснила, подскажите пжл, это можно сделать???
Буду благодарна за ответ)
NMitra
Здравствуйте, не знаю, никогда не имела дела с linkedwithin
Возможно, вы имеете ввиду:
1) http://shpargalkablog.ru/2011/04/krasivoe-oglavlenie-blogger.html
2) http://shpargalkablog.ru/2011/03/soderzhanie-bloga-na-blogger.html
Red Baron
Здравствуйте, подскажите пожалуйста, можно ли сделать полупрозрачным фон сообщений?
Если он стоит transparent то выглядит красиво картинка под ним, но текст читать тяжело, а в настройках шаблона можно выбрать только или определенный цвет без прозрачности или полностью прозрачный. Искал в интернете решения, пробовал их применять, но ничего не получилось, блог отображается только по настройкам шаблона.
NMitra
Здравствуйте. В шаблоне в стилях прописать вместо

.post-outer {
background-color: #44444c;
border: solid 1px #666666;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
-goog-ms-border-radius: 0;
padding: 15px 20px;
margin: 0 -20px 20px;
}

.post-outer {
background-color: rgba(68,68,76,.8);
border: solid 1px #666666;
border-radius: 0;
padding: 15px 20px;
margin: 0 -20px 20px;
}

Теория http://shpargalkablog.ru/2013/02/opacity-css.html
Red Baron
Огромное спасибо!
walter white
У меня такая дилемма, сделал ярлыки для каждой новости, но в настройках установил чтобы на главной странице показывалось 0 сообщений. То есть каждый ярлык сделал как ссылкой на новости. Теперь на главной странице пустота. Как мне поместить туда лишь один ярлык или одну новость которую я захочу?
NMitra
http://shpargalkablog.ru/2011/03/yarlyki-blogger.html только с условием <b:if cond='data:label.name == &quot;название_ярлыка&quot;'>

В настройках установить 1 сообщение, с Главной убрать ссылку на "Предыдущие записи".
NMitra
Или посмотрите http://shpargalkablog.ru/2010/07/vsegda-sverhu.html
Oxana Zolotnitsyna
Может не в ту тему пишу. Сориентируйте плиз. Можно ли изменить код шаблона таким образом, чтобы при нажатии на стрелку предыдущей страницы превьюшки статей отображались также как на главной (с фото и кратким текстом)? Или это шаблон такой и его уже никак не поменять? http://www.easy-going.ru
Alexander Bogomolov
Здравствуйте, как сделать так, чтобы показывалось Только на главной и в сообщениях? Заранее благодарен.
NMitra
Здравствуйте, Blogger не даёт такого тега, только URL. Скриптом из RSS летны предполагаю можно выцепить недостающую информацию.
NMitra
Эм, предыдущий комментарий для Oxana Zolotnitsyna

Alexander Bogomolov,

<b:if cond='data:blog.url == data:blog.homepageUrl'> код </b:if>
<b:if cond='data:blog.pageType == &quot;item&quot;'> код </b:if>

или перечислить список, на которых не должно показываться
Kliwi Ru
Как постоить условие, действующее на несколько конкретных страниц? Мне нужно применить одинаковые стили к ним.
Так не работает:

b:if cond='data:blog.url == "http://адрес_1/"'
b:if cond='data:blog.url == "http://адрес_2/"
стили
/b:if
/b:if

Приходится для каждой отдельно прописывать.


NMitra
<b:if cond='data:blog.url == "http://адрес_1/" or data:blog.url == "http://адрес_2/"'>
Kliwi Ru
Спасибо!
guest
Подскажите, пожалуйста, что и как нужно сделать, чтобы на следующих страницах блога:

- labels;
- archive;
- Newer Posts /Older Posts (search?updated-max=),

выводилось определённое заданное пользователем количество сообщений, например одно, или два?

И, заодно, такой вопрос. Чтобы не ошибиться в кодах CSS, можно ли добавлять сверху этих кодов какие-то свои записи (пару слов). Если - да, то как это можно сделать?
NMitra
В вашем случае не нужно менять шаблон: "Настройки"-"Сообщения и комментарии"-"Показать не более"-ваша цифра

Это тот же самый CSS ( http://shpargalkablog.ru/2012/10/kommentarii-html-css-javascript-php.html ):

/* ваш комментарий */
.selector {
color: green;
}
guest
В настройках блога есть только - "Show at most *** posts on the main page. " Больше ничего нет, поэтому и задан такой вопрос.
NMitra
У меня так (см скриншот) http://4.bp.blogspot.com/-m1ZJVZzTGUI/VmBlyPAl1jI/AAAAAAAAFak/tjM7VKHrcCQ/s1600/kolichestvo-soobschenii-blogger.png
guest
То же самое, только на русском языке - "показать *** сообщений на главной странице", ничего другого на скрине нет.
NMitra
Поменяйте значение: не только на Главной количество сообщений уменьшится, но и в ярлыках, архиве и т.п.
guest
При чём тут " уменьшение"? Вопрос прочитайте.
NMitra
"например, одно или два"
guest
Чтобы везде на всех страницах, показывались по 2 (два) сообщения.
NMitra
В том поле цифру 2 установите
guest
Я понять не могу, какая необходимость так откровенно спамить в собственном блоге? Никаких дивидентов это не принесёт - ни посетителей, ни доверия. Очевидно, что ответ вы не знаете. Так же, как и на сотни других вопросов. Тем не менее, продолжаете спамить в комментариях.

Назовите блог СПАМ блог, это будет соответствовать истине.
NMitra
Я не понимаю вас. Другие читатели показывают скрины, вот что я хочу сделать, вот что получилось, когда сделал то, что вы посоветовали. Дают адрес блога, а не ("профиль недоступен"), сообщают стандартный это шаблон или нет и т.д. То есть активно участвуют в дискуссии. Извините, каков вопрос, таков ответ.

По Blogger я могу сделать многое, но это многое требует времени. Я знаю как тех, кто продолжает вести блог, как и тех, кто бросает его спустя короткое время. Я не готова тратить время на последних. А первые, как правило, начинают со статей. И когда ко мне обращаются уже имеют некоторое число посетителей.

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