Есть много разных кодов по выводу полей профиля.
Но я не нашел как вывести
Категорию профиля (Личная информация, интересы)
И что бы выводилось при условии что хотя бы одно поле заполнено тогда выводится заголовок...
Не хочется ручками оформлять и что бы оставалось в профиле пустые строки типа:
Интересы:
[и пусто все тут ибо не заполнены поля]
Комментарии
например
<?php if( $account->profile_city ):
$profield = check_plain($account->profile_city);?>
<?php print t('Город: ')?><?php print l($profield, 'profile/profile_city/'.$profield) ?>
<?php endif; ?>
вот так у меня сделано в шаблоне профиля юзера (user-profile.tpl.php).
profile_intereses - это название поля, куда пользователь вбивает свои интересы:
<i><b>не указаны</b></i>
<?php else: ?>
<b><i><?php print $account->profile_intereses ?></i></b>
<?php endif ?>
нет, это все понятно. я не об этом.
Интересы
Кино: лалалалаа
Музыка: лалалалаа
если не заполнены поля - категорию не выводить...
(всякие надписи типа - не заполнено, нет ---- не подходит).
многострочное поле интересы, например так
<?php if( $account->profile_interest):
$fieldname='profile_interest'?>
<?php print t('Интересы:')?>
<ul>
<?php
$temp_array = split ( "[\n,]" , $account->$fieldname );
$count_total = count ( $temp_array );
for( $counter = 0 ; $counter < $count_total ; $counter ++): ?>
<?php $link = each ( $temp_array ) ?>
<li> <?php print l ( $link [ value ], 'profile/' . $fieldname . '/' . preg_replace ( '[\s]' , '+' , trim ( $link [ value ]))) ?> </li>
<?php endfor ?>
</ul>
<?php endif ?>
если поле интересы не заполнено, то ничего и не отображается
еще раз. я про КАТЕГОРИИ полей профиля а не про название полей (город, страна, вебсайт, обо мне)
а об ИНТЕРЕСАХ (музыка, кино, хобби) , об ЛИЧНАЯ ИНФОРМАЦыЯ (пол, имя, др, обо мне), об МЕСТОЖИТЕЛЬСТВО (куда входят поля город, страна)
с поля все понятно весь инет расписан что и как. Мне же нужны категории которые забиты в модуле Профиль. Ну или хотя бы ручная прописка категорий профиля, ну что бы они выводились только тогда когда хотя бы одно поле профиля из этой категории заполнено.
и такой вопрос
<?php if( $account->profile_movie):
$fieldname='profile_movie'?>
<?php print t('Movie:')?>
<?php
$temp_array = split ( "[\n,]" , $account->$fieldname );
$count_total = count ( $temp_array );
for( $counter = 0 ; $counter < $count_total ; $counter ++): ?>
<?php $link = each ( $temp_array ) ?>
<?php print l ( $link [ value ], 'profile/' . $fieldname . '/' . preg_replace ( '[\s]' , '+' , trim ( $link [ value ]))) ?>
<?php endfor ?>
<?php endif ?>
выводит список фильмов не через запятую и слипшиеся названия
подскажите как - что бы через запятую и у последнего названия не было в конце запятой...
И еще. Если пользователь не заполняет поля то на выводе остается пустое место (ДЫРКА) до ближайшего поля профиля... как с этим бороться?
Или кастомна кроме как напротви каждого поля писать - нет/не заполнено и выводить эту пустую ненужную инфу?
Можно ли как то переделать код
$profield = check_plain($account->profile_icq);?>
<?php print t('ICQ:')?>
<?php print ($profield) ?>
<?php endif; ?>
что бы при не заполнении поля, не оставалось пустое место
а то сейчас если не заполнить остается не строка вместо которой должен был вывестись значения поля
Пример был выше:
<?php
Интересы: <?php if (empty ($account->profile_intereses)): ?>
<i><b>не указаны</b></i>
<?php else: ?>
<b><i><?php print $account->profile_intereses ?></i></b>
<?php endif ?>
Оператор if как раз отвечает за вывод. Этот пример нужно модифицировать так:
<?php if ($account->profile_intereses): ?>Интересы:
<b><i><?php print $account->profile_intereses ?></i></b>
<?php endif ?>
Это значит, что блок с информацией по этому полю профиля будет выведен только в том случае, если он заполнен.
А вообще вы конечно очень грубо обращаетесь за помощью, потому что это ясли - базовые операторы PHP.
еще раз повторюсь что если человек НЕ ЗАПОЛНЯЕТ - остаются пустые поля
как можно сделать так что бы эти полей не было.
с If я уже разобрался.
Пиздец,Инферно, ну неужели не понятно?
<?php
if ($любая_переменная) {
print $любая_переменная;
} else {
print '';
}
?>
Если $поле = 0, т.е пусто, нифига не будет выводится
Установи Devel, там вкладка появится, в которой можно просмотреть весь объект $account
Сорри, iNFerNo, респект вам и уважуха за вашу настойчивость.
Глядишь что-то хорошее у вас и вправду выйдет.
Слышь (нервы надо беречь), если бы так работало - не спрашивал бы...
По вашему примеру пустая строка все равно остается. если поле не заполнено.
if ($account->profile_music) {
print t('Music:');
print $account->profile_music;
}
else {
print '';
}
?>
можно и без девала увидеть объект $account
Кончено ясли, если людям говорят одно (что поле вместо не заполненного поля выводится пустая строка), а они все долбят if if else else, которые не решают проблемы...
крутой будет профиль у того кто не заполняет поля (если не решится вопрос)
реальное имя: не задано
пол: не задано
город: не задано
веб: не задано
iд вконтакте: не задано
ICQ: 4564575678
Интересы: не задано
и еще загвоздка в следующем.
если поля профиля мьюзик заполнено
выводим заголовок (я люблю музыку)
в противном случае
не выводим заголовок
<?php if ($account->profile_Music == "1") {print "Я люблю слушать музыку:" ;};
else {
print '';
}
?>
но что то не работает
Инферно, только полный идиот не сообразит, что если выводится то, что между фигурными скобками, то условие не выполняется и $account->profile_music почему то не равно нулю
А почему оно не равно нулю, нужно смотреть.
цифры в ПХП в условии не обрамляются никакими кавычками
решил своими силами покапавшись 3 часа в голове и перебирая разные варианты (многое наугад)
решение такое :
if (($account->profile_hobby) == ""): ?>
<?php endif; ?>
<?php if ($account->profile_hobby): ?>
Хобби:
<?php print $account->profile_hobby ?> <br />
<?php endif; ?>
Осталось решить вопрос с заголовками к полям (Интересы, Личная инфа, Доп. Инфа и тд и тп).
Подскажите структуру кода что бы выполнялось следующее...
Если поля profile_hobby, profile_music, profile_movie не заполнены
То заголовок (Интересы, Личная инфа, Доп. Инфа и тд и тп) не выводится.
В противном случае - выводится.
Решил задачу. Уфффффффф
<br />
<h3>Интересы</h3>
<br />
<?php endif; ?>
Только вопрос
& - что делает?
мне нужно что бы выполнялось условия такое , ХОТЯ БЫ одно поле заполнено тога выводим заголовок.
оно это решает?
или выводит заголовок когда все три поля из условия заполнены?
Поигравшись с профилем своим понял что это обязательное условие что бы все три были заполнены...
подскажите какое условие прописать что бы было хотя бы одно из набора полей...
каким условием оператором можно объединить все варианты что бы вывод был один на всех...
т.е.
если (1 и 2 и 3) или (1 и 2) или (2 и 3) или (1 и 3) или (1) или (2) или (3) имеют заполненное поле, то выводить заголовок
Решил все что хотел вчера. Всем спасибо.
<br />
<h3>Интересы</h3>
<br />
<?php endif; ?>
Гы. Да Вам похоже сюда - http://www.php.net/manual/en/language.operators.logical.php
еще почитайте про "===" и "&" - это не "логическое и", а побитовое.
ну когда нужно как раз туда и лазию, спасибочки.