Есть виджет «Информация о пользователе»
Нужно вывести поля из профиля.
С некоторыми моментами разобрался, но вот как дальше не пойму.
В файле
system/controllers/board/widgets/author
в 30+ строчке прописал
if (!empty($fields['whatsapp'])){ $shown_fields['whatsapp'] = $fields['whatsapp']; }
в шаблоне виджета где Информация
вставляю
<div class=«field ft_messengers f_whatsapp»>
<div class=«text-secondary title title_left»>Whatsapp: </div><?php echo $user['whatsapp']; ?>
</div>
Но если поле не заполнено, то выводит просто надпись Whatsapp:
Как сделать правильно?
Чтобы если поле не заполнено, то ничего не выводило?
Чтобы если поле не заполнено, то ничего не выводило?
Используйте тернарный оператор. Если проблема только в этом конечно.
<?php echo (empty($вашеполе)) ? 'Тут условие если поле не заполнено' : 'Тут условие если поле заполнено'; ?>
Если бы еще понимать как эти условия прописываются. Поискал по форуму но не очень понятно
Сделал так
<?php echo !empty($item['whatsapp'])? $item['whatsapp']: LANG_WHATSAPP; ?></div>
<?php echo $user['whatsapp']; ?>
Но все равно вывело слово: Whatsapp
Чтобы если поле не заполнено, то ничего не выводило?
Используйте тернарный оператор. Если проблема только в этом конечно.
<?php echo (empty($вашеполе)) ? 'Тут условие если поле не заполнено' : 'Тут условие если поле заполнено'; ?>Если бы еще понимать как эти условия прописываются. Поискал по форуму но не очень понятно
Сделал так
<?php echo !empty($item['whatsapp'])? $item['whatsapp']: LANG_WHATSAPP; ?></div>
<?php echo $user['whatsapp']; ?>
Но все равно вывело слово: Whatsapp
//Так если в HTML коде <div class=«field ft_messengers f_whatsapp»> <div class=«text-secondary title title_left»>Whatsapp: </div><?php echo $user['whatsapp']; ?> </div> <?php } ?> //Так если в PHP if (empty($user['whatsapp'])){ ?> <div class=«field ft_messengers f_whatsapp»> <div class=«text-secondary title title_left»>Whatsapp: </div><?php echo $user['whatsapp']; ?> </div> <?php }
Не опускай руки, не отчаивайся, читай и вникай, сам такой же )))
Sanchez, Дает белый экран
<?php if (empty($user['whatsapp'])){ ?>
<div class=«field ft_messengers f_whatsapp»;>
<div class=«text-secondary title title_left»>Whatsapp: </div> <?php echo $user['whatsapp']; ?>
</div>
<?php }
Если, ваша $user содержит whatsapp, то вроде б всё просто. Пробуйте:
<div class="field ft_messengers f_whatsapp"> <div class="text-secondary title title_left">Whatsapp: </div> <?php echo $user['whatsapp']; ?> </div> <?php } ?>
Если таки не получится, стукните в личку
Если, ваша $user содержит whatsapp, то вроде б всё просто. Пробуйте:
<div class="field ft_messengers f_whatsapp"> <div class="text-secondary title title_left">Whatsapp: </div> <?php echo $user['whatsapp']; ?> </div> <?php } ?>Если таки не получится, стукните в личку
Отлично! Все заработало! Спасибо!
Аналогично сделал для других полей из профиля.
Теперь буду думать как сделать чтобы номер телефона был активен, т.е при клике по нему можно было позвонить. или например перейти в телеграмм
Только вместо echo лучше использовать html();
echo использовать для вывода данных, указанных пользователем, очень небезопасно...
Только вместо echo лучше использовать html();
echo использовать для вывода данных, указанных пользователем, очень небезопасно...
А как тогда это код должен выглядеть?
<?php if (!empty($user['whatsapp'])){ ?>
<div class=«field ft_messengers f_whatsapp»>
<div class=«text-secondary title title_left»>Whatsapp: </div> <?php echo $user['whatsapp']; ?>
</div>
<?php } ?>
Только вместо echo лучше использовать html();
echo использовать для вывода данных, указанных пользователем, очень небезопасно...
Не знал, надо обратить внимание. А можно узнать почему echo не безопасно, это же просто вывод данных!? И почему html() безопаснее, это если правильно понимаю лишний запрос к движку где как раз и можно поймать бреш...
А как тогда это код должен выглядеть?
Замените:
<?php echo $user['whatsapp']; ?>
на:
<?php html($user['whatsapp']); ?>
Теперь буду думать как сделать чтобы номер телефона был активен, т.е при клике по нему можно было позвонить. или например перейти в телеграмм
А зачем думать? Спросите у поисковиков. Только, как минимум, без масок для этих полей тут не обойтись. Возможно, ещё и регулярками эти строки придётся обрабатывать.
Кстати, тут поле под такую задачу предлагают: Динамический список мессенджеров
Динамический список мессенджеров
К сожалению данный компонент не выводит поля из профиля в произвольные виджеты
Спасибо за помощь
. А можно узнать почему echo не безопасно
тут стоит погуглить. Если кратко, то пользователь может указать вместо номера, например, строку подключения скрипта со своего сайта. А в нем уже творить гадости. Или указать ссылку на frame. И кучу всего. Для вывода пользовательских данных в движке есть html(), есть типограф для очистки.
Через echo выводим только то, чему доверяем. А пользователю доверять нельзя.
Причем не стоит доверять разного рода js проверкам, типа скрипт все очистит. Хацкер может изменить данные в момент отправки на сервер.
<?php html($user['whatsapp']); ?>
При замене на <?php html ($user['whatsapp']); ?>
Выдает белый экран