web-dev-qa-db-fra.com

Remplacer le composant com_users

Je ne parviens pas à remplacer le composant d'enregistrement d'utilisateur.

Mon objectif est que je ne doive pas afficher le champ Nom car le nom est divisé en trois champs: Prénom, Prénom et Nom et est renseigné dans la section Profil utilisateur (qui est un plugin surchargé et traité en conséquence).

Le remplacement ne doit pas se faire par remplacement de modèle pour que nous puissions prendre en charge l'évolutivité et rendre l'application compatible avec la mise à niveau des fichiers principaux.

Jusqu’à présent, j’ai essayé de télécharger le clone modifié du composant com_users, dans lequel j’ai supprimé l’élément Name dans le com_users\models\forms, créé un fichier Zip et téléchargé via Extension Manager.
Mais encore, la dérogation n'a pas fonctionné.

Des pensées?

2
Ju-chan

Vous pouvez le faire plus facilement depuis un plugin. Aucun fichier de base n'est modifié, il devrait donc être complètement mis à jour. Vous avez probablement déjà un plugin pour le système de profil qui ajoute les champs au formulaire. Vous ne voudrez peut-être pas modifier cela non plus, mais il devrait être simple de copier le plug-in utilisateur et de configurer la fonction suivante:

function onContentPrepareForm($form, $data)
{
    if (!($form instanceof JForm))
    {
        $this->_subject->setError('JERROR_NOT_A_FORM');
        return false;
    }

    // Check we are manipulating a valid form.
    $name = $form->getName();
    if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration')))
    {
        return true;
    }

    $form->removeField('name');

    // you can also do checks to just remove fields on the front end or backend
    // if that makes more sense for your application
    if (JFactory::getApplication()->isAdmin()) {
        $form->removeField('captcha');
        $form->removeField('email2');
    }

    return true;
}
4
David Fritsch

Si vous introduisez des modifications dans les fichiers de composant, elles seront remplacées dans le prochain fichier Joomla! mise à jour.

Ce sont les remplacements de sortie qui permettent la personnalisation:

Comprendre les substitutions de sortie - http://docs.joomla.org/Understanding_Output_Overrides

  • Types de sortie de composant et substitutions de présentation
    • 3.1 Types de sortie
    • 3.2 Layouts
    • 3.3 Copier ou créer des fichiers de mise en page
    • 3.4 Remplacement de sous-schémas

S'ils ne sont pas suffisants pour répondre à vos besoins, vous devez créer un nouveau composant (au lieu de modifier un fichier de composant principal).

2
Anibal