W Drupal 7, jaki jest najlepszy sposób, aby uniemożliwić użytkownikom niebędącym administratorami zmianę pola niestandardowego profilu użytkownika?
Przypadek użycia: Utworzyłem pole użytkownika o nazwie „Identyfikator klienta”, którego nie chcę, aby użytkownik (którykolwiek z moich rzeczywistych klientów) zmienił. Pole istnieje dla mojego własnego odniesienia i do programowania w innych modułach. Nie mam nic przeciwko temu, aby użytkownik zobaczył identyfikator klienta, ale nie powinien mieć możliwości jego edycji.
Czy powinienem zastąpić szablon strony dla strony profilu użytkownika? Jeśli tak, w jaki sposób szablon jest zmieniany, aby pole było tylko do odczytu lub niewidoczne?
Bardzo ci dziękuje za pomoc!
Chris
Field Permissions
działa dobrze z Drupalem 8, ale myślę, że można ukryć tylko pola niestandardowe (musiałem także podać nazwę użytkownika)Aby ukryć pole przed formularzem profilu użytkownika, możesz ustawić
#access
właściwość pola na FAŁSZ za pomocąhook_form_FORMID_alter
.Poniższy fragment
field_organisation
kodu ukrywa pole w formularzu profilu użytkownika dla osób niebędących administratorami:Zobacz także podobne pytanie dotyczące drupalanswers
Możesz także ukryć pole na stronie profilu użytkownika (nie formularz), używając profilu szablon_preprocess_użytkownika_użytkownika
Poniższy fragment
field_organisation
kodu ukrywa pole na stronie użytkownika dla osób niebędących administratorami:źródło
Wygląda na to, że istnieje moduł o nazwie http://drupal.org/project/user_readonly "Moduł pozwala administratorowi zapobiegać modyfikowaniu pól konta / profilu użytkownika. Administrator może wybrać, które pola zostaną niedozwolone, a które pola będą dozwolony."
źródło