Как отключить отображение даты регистрации и последнего визита в профилях пользователей?

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 28 января 2022 в 09:51

Всем привет, уважаемые Инстантологи. :)

Подскажите, пожалуйста, как ограничить или полностью отключить отображение даты регистрации и последнего визита в профилях пользователей на сайте (шаблон Modern, если что; именно на самом сайте, не отображение этой информации в админке)?

Изображение

Лучше — на уровне настроек админки, если есть возможность.
На странице «Пользователи» > «Настройки» на вкладках «Опции» (и вложенных вкладках), «Доступ» — вроде нет такой опции. 

Или можно и с помощью кода.
Куда копать, какие файлы смотреть?

— — — — — -

P.S.: Вроде простой вопрос, но с помощью Гугла и с помощью интуитивного кликанья в админке и в папочках исходного кода — не нашёл ответа. Надеюсь, что ответ будет полезен не только мне.

Вопрос, думаю, актуальный, поскольку далеко не для всех сайтов корректно отображать даты регистрации, даты последнего захода на сайт всех его пользователей — это нарушает конфиденциальность участников, да и вряд ли кому-то прям интересно. Дату первой и последней активности конкретного пользователя при желании можно отследить в ленте активности. А так, чтобы прям напоказ про каждого пользователя это всем показывать — не всегда это уместно. Имхо!

#2 28 января 2022 в 09:54

Кстати да, такой опции не хватает. Буду рад тоже узнать решение =)

#3 28 января 2022 в 11:50

Display: none

#4 28 января 2022 в 23:32

Display: none

Happy

Я правильно понимаю, Вы предлагаете не лезть в движок, не менять формирование структуры HTTP-ответа, HTML-документа.

А просто отключить её визуальный показ на уровне CSS.

Для 99+% посетителей сайта этого будет достаточно. Но в HTML-структуре документа данные о дате регистрации пользователя, дате его последнего посещения — будут отображаться.

Верно?

Вариант решения на уровне CSS:

  1. /* Отображение строк "Регистрация:", "Последний визит:" и "Последний IP:" в карточке пользователя */
  2. div.f_date_reg, div.f_date_log, div.f_ip {
  3. display: none;
  4. }
  5.  

Простейший вариант решения найден.

Но если подскажете решение на уровне формирования контента страниц, шаблона — думаю, многие также будут признателены.

Тему не закрываю, возможно будут уточнения.

#5 29 января 2022 в 15:03

Но если подскажете решение на уровне формирования контента страниц, шаблона — думаю, многие также будут признателены.

Владимир Переверзев

Ну по хорошему, должна быть опция, которая запрещала бы выводить эти поля :)

#6 29 января 2022 в 15:58

Но если подскажете решение на уровне формирования контента страниц, шаблона — думаю, многие также будут признателены.

Владимир Переверзев

Можно на уровне шаблона решить (только тут не на уровне формирования будет).

https://github.com/instantsoft/icms2/blob/master/templates/modern/controllers/users/profile_view.tpl.php#L77

Можно убрать сразу весь вывод или выставить условия на просмотр. Какое-то отдельное поле убрать можно по разному. К примеру, разрушением элементов массива $sys_fields. Вставьте выше указанной строки:

  1. <?php
  2. /* удаляем из массива дату регистрации и последний визит */
  3. unset($sys_fields['date_reg'], $sys_fields['date_log']);
  4. ?>

Чтобы сделать опциональным, смотрите в сторону хуков.

#7 29 января 2022 в 17:27

 Олег Васильевич я, дайте мне десять минут, и всё будет сделано ;D

Изображение

Не, за 10 минут не выйдет, надо скачать github-овскую cms-ку )

Вот решение.

#8 29 января 2022 в 20:20

Олег Васильевич я, дайте мне десять минут, и всё будет сделано ;D

Panda58dev

Берите 10 лет))

Вот решение.

Panda58dev

Учитывая заинтересованность аж 1-го человека, сомневаюсь, что пулл будет принят. Но, раз уж взялись, дожмите:

1) Там и другие поля не имеют опций на вывод

2) Надо б тогда добавить опции на права просмотра

3) В шаблоне добавить проверку не пустая ли эта $sys_fields (чтобы не перебирать заведомо пустой масив))

....

#9 29 января 2022 в 21:01

заинтересованность аж 1-го

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

Нас, с  Владимиром, уже, как минимум двое :)

Там и другие поля не имеют опций на вывод

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

Другие — это которые?
Изображение

На группы опция уже есть, а IP виден только администраторам:

Изображение

В шаблоне добавить проверку не пустая ли эта $sys_fields (чтобы не перебирать заведомо пустой масив))

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

Перебрать «пустой» массив невозможно — массив создаётся только с вставкой в него данных, если данных нет, то и массива не будет, следовательно, вызов перебора просто выдаст ошибку. Типа того :)

Надо б тогда добавить опции на права просмотра

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

Да, наверное, управляться должно пользователем в «настройках профиля»=>«приватность». Надо будет замутить как-нибудь. 

#10 29 января 2022 в 21:31

Другие — это которые?

Panda58dev

К примеру, это: Изображение

Перебрать «пустой» массив невозможно — массив создаётся только с вставкой в него данных, если данных нет, то и массива не будет, следовательно, вызов перебора просто выдаст ошибку. Типа того :)

Panda58dev

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

#11 29 января 2022 в 23:31

Перебрать «пустой» массив невозможно — массив создаётся только с вставкой в него данных, если данных нет, то и массива не будет, следовательно, вызов перебора просто выдаст ошибку. Типа того :)

Panda58dev

Конечно нет.

  1. $array = []; // Создание пустого массива
  2. $array = array(); // Тоже будет создан пустой массив

Просто можно проверять наличие элементов массива при переборе.

  1. foreach ($array as $ar){
  2. if (!empty($ar['some_element '])){
  3. $some_element = $ar['some_element'];
  4. }
  5. }

С помощью тернарного оператора еще проще

  1. foreach ($array as $ar) {
  2.  
  3. $some_element[] = !empty[$ar['some_element']] ? $ar['some_element'] : NULL;
  4.  
  5. }

Установите опенсервер и потренируйтесь на нём с массивами. Я так и делал. 

#12 30 января 2022 в 00:10
  1. <?php
  2.  
  3. $a = [];
  4.  
  5. foreach ($a as $value) {
  6. echo "in foreach";
  7. }
  8.  
  9. echo "out foreach";
#13 30 января 2022 в 09:45

К примеру, это:

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

А кто должен настраивать отображение этого поля: пользователь, или админ сайта (для всех пользователей)?

Просто можно проверять наличие элементов массива при переборе

Ris

Всё верно. Я бы сказал — "нужно".

С помощью тернарного оператора еще проще

Ris

А вот тернарники осуждаю 😏

Установите опенсервер и потренируйтесь на нём с массивами

Ris

Во-первых: я использую xampp; во-вторых: я таки знаю php, не в идеале, конечно, но тему про массивы знаю)
 IamB, Вы — определили массив $a, а я говорил про случай, когда он не определён.

Ещё раз говорю алгоритм (в код cms, как я понял, никто не лез :D ):

------------------------------------------------------

если (условие) => массив наполняется
если (условие) => массив наполняется

перебор массива (условие) => действие

------------------------------------------------------

В этом случае, если ни одно условие не выполнено, то массив даже не будет создан, из чего выходит, что любой перебор, несуществующего массива выдаёт ошибку. Сначала «уведомление»: Undefined variable, потом «предупреждение»: Invalid argument supplied for foreach()

#14 30 января 2022 в 10:23

А кто должен настраивать отображение этого поля: пользователь, или админ сайта (для всех пользователей)?

Panda58dev

 Panda58dev, в данном контексте — почему или/или?

В идеале — и админ может отключить для всех пользователей.
И пользователь (если сисадмин не отключил опцию целиком) — может отключить её для своего профиля.

Второй вариант — имеет место быть для сайтов с продвинутой аудиторией.
Первый — для сайтов с массовой аудиторией.

Добавлено спустя 2 минуты

А вот тернарники осуждаю 😏

Panda58dev

Вы про то, что они дают компактность кода, но иногда они снижают читательность, редактируемость кода, а также его отладку. трасировку.

Верно?

#15 30 января 2022 в 10:25

 Владимир Переверзев, Вы правы :)

Добавлено спустя 1 минуту

Верно?

Владимир Переверзев

Ага. Я очень не люблю нечитабельный код, а если кто-то хочет, что бы код занимал меньше места — лучше минимизировать весь файл.

Но, опять же, иногда встречаются случаи, когда тернарники более уместны, чем полные условия. 

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