Запрет редактирования или удаление некоторых полей профиля для пользователя в Joomla 1.7-2.5
Есть задача — в форме изменения профиля сделать возможным только изменение пароля. Адреса email, имени и логина необходимо скрыть. В самом профиле пользователь не должен видеть эти поля. А администраторской части joomla должно остаться все прежде.
Поля можно убрать просто в шаблоне, но есть одно но — у нас есть обязательные поля, убрав которые у нас будет вылетать ошибка. К тому же подобрав определенный запрос, можно будет обойти систему и изменить адрес почты через email.
Изменения коснуться всего-лишь двух файлов.
1. Необходимо почистить xml файл с данными о нужных нам полях. Открываем его по адресу /components/com_users/models/forms/profile.xml
Описание поля выглядит так
1 2 3 4 5 6 7 8 9 10 11 | <field name="password1" type="password" autocomplete="off" class="validate-password" description="COM_USERS_DESIRED_PASSWORD" field="password2" filter="raw" label="COM_USERS_PROFILE_PASSWORD1_LABEL" message="COM_USERS_PROFILE_PASSWORD1_MESSAGE" size="30" validate="equals" /> |
Удаляем ненужные нам. В моём случае я оставил только поля password1 и password2. Этим действием мы убрали отображение этих полей в форме изменения профиля пользователя на самом сайте, а также эти поля не отображаются в информации о профиле. Не забываем сделать резервную копию этого файла.
Если все-таки редактирование надо запретить, но просмотр информации с этих полей в профиле надо оставить, то тут надо редактировать /components/com_users/view/profile/tmpl/edit.php, ставить там условия. Если надо, могу показать как.
2. Редактируем файл /components/com_users/models/profile.php
Делать это надо только лишь в том случае, если было убрано поле email.
Просто комментируем строку 228
1 | //$data['email'] = $data['email1']; |
Тем самым мы просто не передаем параметр email для записи в БД. Если этого не сделать, то будет выводиться ошибка пустого email.
Собственно все. Задача выполнена. Редактировать поля можно в бэкэнде, т.к. изменения делались только в компоненте фронтенда.
Комментарии к Запрет редактирования или удаление некоторых полей профиля для пользователя в Joomla 1.7-2.5 (6)
Сергей!
Спасибо за статью!
Очень выручила, работает в 2.5
😳 Пожалуйста если есть возможность научи как сделать: «Если все-таки редактирование надо запретить, но просмотр информации с этих полей в профиле надо оставить, то тут надо редактировать /components/com_users/view/profile/edit.php, ставить там условия. Если надо, могу показать как.»
Покажи как! 😯
admin Post author
Ссылка
Вывел в отдельную статью
Денис
Присоединяюсь к Сергею.
Покажите, как 😉
Олег
Очень просим! 🙄 Расскажите как запретить редактирование! СПАСИБО!!!
anny_ka
Здравствуйте, подскажите, а как закрыть для редактирования поля?? Т.е. чтобы при регистрации можно было вводить данные, менять. А потом, чтобы в профиле только некоторые можно было менять, а остальные закрыть. joomla 3 и virtuemart 3
Stanislav
Приветствую. Увы, но с Joomla давно не работал, сходу не подскажу. Грязный хак — исправить шаблон редактирования профиля, проставив disabled для запрещенных на редактирование полях. Но нужно понимать, что это ограничение могут обойти, убрав disabled наживую, но с другой стороны — кому это надо?