Оформление постбита (под аватаркой) в виде блоков

F

Fly1

#1
Я сделал оформление в мини-профиле в темке и оно отображается, даже если поле не заполнено, но уже пустым. Как сделать так, чтобы оно не отображалось, если нет информации?
 
Н

Ночная странница

#2
Я сделал оформление в мини-профиле в темке и оно отображается, даже если поле не заполнено, но уже пустым. Как сделать так, чтобы оно не отображалось, если нет информации?

Fly, можно поконкретнее? Ты сделал дополнительное поле профиля и добавил его в постбит? Каким образом добавил и какие настройки у этого самого поля?
 
F

Fly1

#3
Ночная странница, <div class="postbit-box alt1" style="padding:5px;text-align:center">код разных кнопок</div>

Мне нужно, чтобы если доп. поле не заполнено - эта рамка, что находится выше не отображалась, а пряталась.
 
Н

Ночная странница

#6
Fly, ну уж мы с тобой - старые знакомые, мог бы мне и права дать, чтобы поглядела, что там и как...
padding - это внутренние отступы (поля) блока, раз не помогло, значит, что-то ещё его держит... что в CSS?
 
F

Fly1

#7
Ночная странница, прости, совсем забыл. Конечно будет проще, чтобы ты сама посмотрела в чём там дело. Права выдал.
 
Н

Ночная странница

#8
Fly, исправила на тестовом. Сам перенесешь на рабочий.

Рассказываю для тех, кто еще столкнется с такой проблемой.
У стиля Fly постбит (мини-профиль под аватаркой) разбит на блоки. Они могут выглядеть по разному, но суть одна: все выводимые поля обрамляются в рамку, подходящую по стилю.
Пример рамок в постбите:



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

Фух :) Проблему обрисовала. Теперь решение.

Если сделать такую схему:

Код:
<div style="стиль рамок">
<if condition="переменная поля">Вывод переменной</if>
</div>

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

Чтобы исправить эту ситуацию, следует поменять местами div и if таким образом:

Код:
<if condition="переменная поля">
<div style="стиль рамок">
Вывод переменной
</div>
</if>

Но как сделать так, чтобы в этом поле выводилось сразу несколько переменных? В этом для меня и была сложность данной ситуации.
А решение на самом деле очень простое, нужно всего лишь добавить в условие if несколько переменных через условие OR (или):

Код:
<if condition="переменная поля1 OR переменная поля2 OR переменная поля3">
<div style="стиль рамок">
Вывод переменной1 Вывод переменной2 Вывод переменной 3
</div>
</if>

Это схематично. Вот как это может выглядеть в шаблоне:

Было:

Код:
<div class="postbit-box alt1" style="text-align:center"><if condition="$post['field15']"><a href="$bbuserinfo[field15]" target="_blank"><img src="http://vash.domen/images/misc/vkontakte.gif" border="0" title="Пользователь на vk.com" alt="Пользователь на vk.com"></a> </if><if condition="$post['field32']"><a href="$bbuserinfo[field32]" target="_blank"><img src="http://vash.domen/images/misc/odnoklassniki.gif" border="0" title="Пользователь на odnoklassniki.ru" alt="Пользователь на odnoklassniki.ru"></if> <if condition="$post['field33']"><a href="$bbuserinfo[field33]" target="blank"><img src="http://vash.domen/images/misc/facebook.gif" title="Пользователь на facebook.ru" alt="Пользователь на facebook.ru"></if></div></div>
<div class="postbit-box alt1" style="padding:5px;text-align:center"><div style="margin:4px 0">$post[icqicon] $post[aimicon] $post[msnicon] $post[yahooicon] $post[skypeicon]</div></div>

Стало:

Код:
<if condition="$post['field15'] OR $post['field32'] OR $post['field33']">
<div class="postbit-box alt1" style="padding:4px;text-align:center">
<a href="$bbuserinfo[field15]" target="_blank"><img src="http://vash.domen/images/misc/vkontakte.gif" border="0" title="Пользователь на vk.com" alt="Пользователь на vk.com"></a>
<a href="$bbuserinfo[field32]" target="_blank"><img src="http://vash.domen/images/misc/odnoklassniki.gif" border="0" title="Пользователь на odnoklassniki.ru" alt="Пользователь на odnoklassniki.ru"></a>
<a href="$bbuserinfo[field33]" target="blank"><img src="http://vash.domen/images/misc/facebook.gif" title="Пользователь на facebook.ru" alt="Пользователь на facebook.ru"></a>
</div></if>
<if condition="$post['icq'] OR $post['aim'] OR $post['msn'] OR $post['yahoo'] OR $post['skype']">
<div class="postbit-box alt1" style="padding:5px;text-align:center">$post[icqicon] $post[aimicon] $post[msnicon] $post[yahooicon] $post[skypeicon]</div></if>

[MOD="Ночная странница"]НО! Именно для ссылок этот код не подходит! (подробности ниже)[/MOD]
 
Н

Ночная странница

#9
Опыт показал, что вышеприведенный код отображается верно, но не совсем рабочий. Возможно, принцип подойдет для каких-то полей без ссылок, но ссылки в нем не заработали, увы. Путем экспериментов он был исправлен на такой:

Код:
<!-- Социальные сети -->
<if condition="$show['member']">
<if condition="$post['field15']|$post['field32']|$post['field33']">
<div class="postbit-box alt1" style="padding:4px;text-align:center">
<if condition="$post['field15']"><a href="$post[field15]" target="_blank"><img src="ссылка на картинку vkontakte.gif" border="0"></a> 
</if>
<if condition="$post['field32']"><a href="$post[field32]" target="_blank"><img src="ссылка на картинку odnoklassniki.gif" border="0"></a> </if>
<if condition="$post['field33']"><a href="$post[field33]" target="_blank"><img src="ссылка на картинку facebook.gif" border="0"></a> </if>
</div>
</if>
</if>
<!-- /социальные сети -->

Теперь работают и ссылки и блоки в постбите отображаются, когда нужно. Вся соль в двойном условии - сначала идет проверка, имеются ли заполненные поля (if condition="$post['field15']|$post['field32']|$post['field33']"), а затем, если условие выполняется, начинается сам блок со ссылками, каждая из которых так же проверяется отдельным условием.
 
Get involved!

Here you can only see a limited number of comments. On СЕО Форум Вебмастеров you see all comments and all functions are available to you. To the thread