Запрет редактирования полей пользователей Joomla 1.7-2.5 с возможностью вывода их пользователю

Ранее я писал про возможность полного сокрытия полей профиля для пользователей Joomla 1.7-2.5. В комментариях попросили рассказать о том, как можно убрать редактирование некоторых полей, но оставить их отображение при просмотре профиля. Как помним — эти поля заполняются при регистрации.

1. Как писал в прошлой статье, правки мы будем делать в скрипте /components/com_users/view/profile/tmpl/edit.php

Для начала найдем цикл

В нем перебираются наши поля.

Названия всех выводимых полей мы можем найти в файле /components/com_users/models/forms/profile.xml, о котором писал ранее.

2. Нам надо написать код, который будет фильтровать поля и выводить только нужные нам. В качестве небольшого дополнения сделаем еще одну настройку, которая позволит вывести только значение поля в форме редактирования. На некоторых сайтах можно увидеть в таком виде поле «логин», которое невозможно поменять, но можно увидеть в процессе редактирования.

Заменяем кусок кода

На такой

3. Если мы скрыли поля, которые должен быть обязательным к заполнению, то нам надо убрать эту проверку, т.к. будет выводиться ошибка. Посмотрим на примере полей email1 и email2. Править будем файл /components/com_users/models/forms/profile.xml.

Находим записи, относящиеся к этим полям.

Мы видим в них такие параметры как

required=»true» — обязательный к заполнению
unique=»true» — уникальный
validate=»equals» — проверка на совпадение с другим полем

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

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

В итоге у нас должна получиться такая картина

Результат изменения вывода редактируемых полей joomla


  • Сергей!

    😛 СПАСИБО!!!!

  • Сергей!

    Проверил, работает в 2.5 Спасибо! 😀
    Только вот поле required=»true» нужно наверно оставить, а то появляется рядом с названием поля слово «необязательный» 😯
    Типа поле-то не редактируемое и одновременно не обязательное 😉

  • Сергей!

    Ну в случае автора «optional» 😎 без него логичнее.

  • Сергей!

    🙁 ай-ай! вот те на! Автор прав! нельзя поле required=»true» оставлять — ошибка вылетает!
    Что же делать не хочется там надпись «optional» 🙄

  • admin

    За вывод этой надписи отвечает код

    < ?php echo JText::_('COM_USERS_OPTIONAL'); ?>

    В принципе можно его убрать или поставить нужное условие.

    Это в edit.php