Вывести поля из профиля в виджете

InstantCMS 2.X
#1 21 августа 2021 в 15:34

Есть виджет «Информация о пользователе»
Нужно вывести поля из профиля.
С некоторыми моментами разобрался, но вот как дальше не пойму.
В файле
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: 

Как сделать правильно?
Чтобы если поле не заполнено, то ничего не выводило?

#2 21 августа 2021 в 15:45

Чтобы если поле не заполнено, то ничего не выводило?

Capitan

Используйте тернарный оператор. Если проблема только в этом конечно.

  1. <?php echo (empty($вашеполе)) ? 'Тут условие если поле не заполнено' : 'Тут условие если поле заполнено'; ?>
#3 21 августа 2021 в 16:13

Чтобы если поле не заполнено, то ничего не выводило?

Capitan

Используйте тернарный оператор. Если проблема только в этом конечно.

  1. <?php echo (empty($вашеполе)) ? 'Тут условие если поле не заполнено' : 'Тут условие если поле заполнено'; ?>
Make

Если бы еще понимать как эти условия прописываются. Поискал по форуму но не очень понятно
Сделал так
<?php echo !empty($item['whatsapp'])? $item['whatsapp']: LANG_WHATSAPP; ?></div>
  <?php echo $user['whatsapp']; ?>
Но все равно вывело слово: Whatsapp

#4 21 августа 2021 в 17:35

Чтобы если поле не заполнено, то ничего не выводило?

Capitan

Используйте тернарный оператор. Если проблема только в этом конечно.

  1. <?php echo (empty($вашеполе)) ? 'Тут условие если поле не заполнено' : 'Тут условие если поле заполнено'; ?>
Make

Если бы еще понимать как эти условия прописываются. Поискал по форуму но не очень понятно
Сделал так
<?php echo !empty($item['whatsapp'])? $item['whatsapp']: LANG_WHATSAPP; ?></div>
  <?php echo $user['whatsapp']; ?>
Но все равно вывело слово: Whatsapp

Capitan

 

  1. //Так если в HTML коде
  2. <?php if (empty($user['whatsapp'])){ ?>
  3. <div class=&laquo;field ft_messengers f_whatsapp&raquo;>
  4. <div class=&laquo;text-secondary title title_left&raquo;>Whatsapp: </div><?php echo $user['whatsapp']; ?>
  5. </div>
  6. <?php } ?>
  7.  
  8. //Так если в PHP
  9. if (empty($user['whatsapp'])){ ?>
  10. <div class=&laquo;field ft_messengers f_whatsapp&raquo;>
  11. <div class=&laquo;text-secondary title title_left&raquo;>Whatsapp: </div><?php echo $user['whatsapp']; ?>
  12. </div>
  13. <?php }

 

Не опускай руки, не отчаивайся, читай и вникай, сам такой же )))

 

#5 21 августа 2021 в 18:01

 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 }

#6 21 августа 2021 в 21:02

Если, ваша $user содержит whatsapp, то вроде б всё просто. Пробуйте:

  1. <?php if (!empty($user['whatsapp'])){ ?>
  2. <div class="field ft_messengers f_whatsapp">
  3. <div class="text-secondary title title_left">Whatsapp: </div> <?php echo $user['whatsapp']; ?>
  4. </div>
  5. <?php } ?>

Если таки не получится, стукните в личку

#7 21 августа 2021 в 22:55

Если, ваша $user содержит whatsapp, то вроде б всё просто. Пробуйте:

  1. <?php if (!empty($user['whatsapp'])){ ?>
  2. <div class="field ft_messengers f_whatsapp">
  3. <div class="text-secondary title title_left">Whatsapp: </div> <?php echo $user['whatsapp']; ?>
  4. </div>
  5. <?php } ?>

Если таки не получится, стукните в личку

Олег Васильевич я

Отлично! Все заработало! Спасибо!
Аналогично сделал для других полей из профиля.
Теперь буду думать как сделать чтобы номер телефона был активен, т.е при клике по нему можно было позвонить. или например перейти в телеграмм

#8 21 августа 2021 в 23:22

Только вместо echo лучше использовать html();

echo использовать для вывода данных, указанных пользователем, очень небезопасно...

#9 21 августа 2021 в 23:29

Только вместо echo лучше использовать html();

echo использовать для вывода данных, указанных пользователем, очень небезопасно...

Zau4man

А как тогда это код должен выглядеть?

<?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 } ?>

#10 22 августа 2021 в 07:41

Только вместо echo лучше использовать html();

echo использовать для вывода данных, указанных пользователем, очень небезопасно...

Zau4man

Не знал, надо обратить внимание. А можно узнать почему echo не безопасно, это же просто вывод данных!?  И почему html() безопаснее, это если правильно понимаю лишний запрос к движку где как раз и можно поймать бреш...

#11 22 августа 2021 в 11:16

А как тогда это код должен выглядеть?

Capitan

Замените:

  1. <?php echo $user['whatsapp']; ?>

на:

  1. <?php html($user['whatsapp']); ?>

Теперь буду думать как сделать чтобы номер телефона был активен, т.е при клике по нему можно было позвонить. или например перейти в телеграмм

Capitan

А зачем думать? Спросите  у поисковиков. Только, как минимум, без масок для этих полей тут не обойтись. Возможно, ещё и регулярками эти строки придётся обрабатывать.

Кстати, тут поле под такую задачу предлагают: Динамический список мессенджеров

#12 22 августа 2021 в 11:27

Динамический список мессенджеров

Олег Васильевич я

К сожалению данный компонент не выводит поля из профиля в произвольные виджеты
Спасибо за помощь

#13 22 августа 2021 в 11:59

. А можно узнать почему echo не безопасно

Sanchez

тут стоит погуглить. Если кратко, то пользователь может указать вместо номера, например, строку подключения скрипта со своего сайта. А в нем уже творить гадости. Или указать ссылку на frame. И кучу всего. Для вывода пользовательских данных в движке есть html(), есть типограф для очистки.

Через echo выводим только то, чему доверяем. А пользователю доверять нельзя.

Причем не стоит доверять разного рода js проверкам, типа скрипт все очистит. Хацкер может изменить данные в момент отправки на сервер. 

#14 22 августа 2021 в 12:14

<?php html($user['whatsapp']); ?>

Олег Васильевич я

При замене на <?php html ($user['whatsapp']); ?>
Выдает белый экран

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.