Запрет редактирования или удаление некоторых полей профиля для пользователя в Joomla 1.7-2.5

Есть задача — в форме изменения профиля сделать возможным только изменение пароля. Адреса email, имени и логина необходимо скрыть. В самом профиле пользователь не должен видеть эти поля. А администраторской части joomla должно остаться все прежде.

Поля можно убрать просто в шаблоне, но есть одно но — у нас есть обязательные поля, убрав которые у нас будет вылетать ошибка. К тому же подобрав определенный запрос, можно будет обойти систему и изменить адрес почты через email.

Изменения коснуться всего-лишь двух файлов.

1. Необходимо почистить xml файл с данными о нужных нам полях. Открываем его по адресу /components/com_users/models/forms/profile.xml

Описание поля выглядит так

Удаляем ненужные нам. В моём случае я оставил только поля password1 и password2. Этим действием мы убрали отображение этих полей в форме изменения профиля пользователя на самом сайте, а также эти поля не отображаются в информации о профиле. Не забываем сделать резервную копию этого файла.

Если все-таки редактирование надо запретить, но просмотр информации с этих полей в профиле надо оставить, то тут надо редактировать /components/com_users/view/profile/tmpl/edit.php, ставить там условия. Если надо, могу показать как.

Напомню, что шаблоны из компонентов можно помещать в шаблон. Например, для размещения шаблона указанного выше компонента, необходимо в папке шаблона создать директорию html, в неё создать еще одну с именем компонента (com_users) и внутри создать файл edit.php. В итоге получается путь /путь до шаблона/html/com_users/edit.php. Создать можно так же и свой отдельный layout, например edit_my.php, но выбор альтернативного layout предусмотрен не во всех компонентах.

2. Редактируем файл /components/com_users/models/profile.php

Делать это надо только лишь в том случае, если было убрано поле email.

Просто комментируем строку 228

Тем самым мы просто не передаем параметр email для записи в БД. Если этого не сделать, то будет выводиться ошибка пустого email.

Собственно все. Задача выполнена. Редактировать поля можно в бэкэнде, т.к. изменения делались только в компоненте фронтенда.


  • Сергей!

    Спасибо за статью!
    Очень выручила, работает в 2.5
    😳 Пожалуйста если есть возможность научи как сделать: «Если все-таки редактирование надо запретить, но просмотр информации с этих полей в профиле надо оставить, то тут надо редактировать /components/com_users/view/profile/edit.php, ставить там условия. Если надо, могу показать как.»
    Покажи как! 😯

    • admin

      Ссылка
      Вывел в отдельную статью

  • Денис

    Присоединяюсь к Сергею.
    Покажите, как 😉

  • Олег

    Очень просим! 🙄 Расскажите как запретить редактирование! СПАСИБО!!!

  • anny_ka

    Здравствуйте, подскажите, а как закрыть для редактирования поля?? Т.е. чтобы при регистрации можно было вводить данные, менять. А потом, чтобы в профиле только некоторые можно было менять, а остальные закрыть. joomla 3 и virtuemart 3

    • Stanislav

      Приветствую. Увы, но с Joomla давно не работал, сходу не подскажу. Грязный хак — исправить шаблон редактирования профиля, проставив disabled для запрещенных на редактирование полях. Но нужно понимать, что это ограничение могут обойти, убрав disabled наживую, но с другой стороны — кому это надо?