Userprofil bearbeiten im Frontend einschränken

  • Joomla Version
    4.4.1
    PHP Version
    PHP 8.1.x
    Hoster
    Lokal

    Ich möchte die Funktion gerne eingeschränkt nutzen, ich möchte nur die Passwortänderung ermöglichen.
    Die Änderung des Namens und der Email-Adresse soll nicht möglich sein, entweder nicht anzeigen oder wie beim Benutzernamen eine Änderung nicht zulassen.
    Die bisherige Suche im Netz hat bis jetzt kein passendes Ergebnis gebracht.
    Die Darstellung wird m. E. über die edit.php aus com_users > profile in einer foreach-Schleife erzeugt.

    Da bin ich dann leider mit meinen php- und Joomla-Kenntnissen am Ende.

    Auf meinen "Wunschzettel" stände dann, dass über den Button "Abbrechen" nicht nur das Formular geleert, sondern auch zu einer anderen Seite weitergeleitet wird.


    Christian

  • Hallo Christian,


    ich habe mein damaliges Override für J3 auch auf J4 umgestellt. Das könnte ein Ansatz sein. Eigentlich ist es recht simpel mit zusätzlichen JS, welches die Felder ausblendet.


    Mein JS für Joomla 4



    Die Custom Fields kannst Du natürlich weg lassen. Im Endeffekt nur die Zeilen zum Namen-Feld und die anderen entsprechend ergänzen.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Alternativ übrigens z.B. einfach auch möglich per Template-Override von

    github.com/joomla/joomla-cms/blob/4.4.1/components/com_users/tmpl/profile/edit.php#L29


    dort z.B. ab der Zeile 29 nachfolgendes einfügen:

    Zitat

    $this->form->setFieldAttribute('name', 'readonly', 'true' );

    $this->form->setFieldAttribute('email1', 'readonly', 'true' );

    // $this->form->setFieldAttribute('name', 'type', 'hidden' );

    // $this->form->setFieldAttribute('email1', 'type', 'hidden' );

    falls gewünscht zusätzlich die "hidden-Zeilen" verwenden damit die entsprechenden Felder auch nicht angezeigt werden.

    Dann funktioniert es auch ohne Javascript beim Benutzer.

  • Zusätzlich als Beispiel auch noch möglich falls nicht "hidden":


    Code
     $this->form->setFieldAttribute('name', 'description', ' Die Änderung des Namens kann nur durch einen Administrator erfolgen.' );

    entsprechendes natürlich auch für email1 möglich und ebenso die Benutzung von Sprachschlüsseln:


    Code
     $this->form->setFieldAttribute('name', 'description', 'COM_USERS_PROFILE_NAME_LABEL' );