it-swarm.com.de

Wie überschreibe ich eine XML-Datei in einer Joomla-Komponente?

Ich möchte einige Dateien (.php und .xml) in /components/com_users/models überschreiben. Kann das überhaupt gemacht werden? Oder sollte ich versuchen, eine modifizierte/umbenannte Kopie von com_users zu erstellen?

Ich versuche Folgendes zu tun: Entfernen Sie das Feld name aus dem Benutzerprofil und den Registrierungsformularen und ersetzen Sie es durch . Vorname und Nachname . Ich muss auch register.php und profile.php ändern, also dass sie einen Namen aus $firstname . ' ' . $lastname, weil Joomla sich darauf verlässt, dass der Name auf etwas Sinnvolles gesetzt wird.

Dies funktioniert tatsächlich, wenn ich die entsprechenden Dateien direkt bearbeite, aber meine Änderungen gehen mit einem Upgrade auf Joomla verloren. Wie kann ich das vermeiden?

1
Joe Völker

Sie sollten Joomla Plugins und Ereignisse überprüfen.

Es gibt solche Ereignisse wie onContentPrepareForm($form, $data) und (vielleicht möchten Sie onContentPrepareData($context, $data) verwenden, aber Sie sollten mit dem ersten in Ordnung sein), wo Sie bekommen können $data Und $form Und ändern Sie das Formular dort mit Ihrem eigenen XML, wie:

    /** @var JForm $form */
    $form->loadFile(dirname(__FILE__).'/custom/form.xml',true);

Es wird überschreiben, was Sie brauchen.

Und wenn Sie tief graben, finden Sie einige Trigger im User Store-Algorithmus wie onUserBeforeSave($user, $isnew, $data), mit denen Sie aktuelle Daten anpassen können, indem Sie Daten aus der Anforderung abrufen.

Aber wenn Sie nicht mit user arbeiten, kann es eine Lösung sein, zwei verwenden Sie einfach ein Systemereignis wie onAfterRoute wie folgt:

JFactory::getApplication()->input->set('name',JFactory::getApplication()->input->get('firstname').' '.JFactory::getApplication()->input->get('lastname'));
2
Alexandr