it-swarm-eu.dev

Sostituzione del componente com_users

Ho problemi a ignorare il componente di registrazione dell'utente.

Il mio obiettivo è che non devo visualizzare il campo Nome perché il nome è diviso in tre campi: Nome, Secondo e Cognome e viene compilato nella sezione Profilo utente (che è un plugin ignorato e viene distribuito di conseguenza).

L'override non deve avvenire mediante l'override del modello per noi per supportare la scalabilità e rendere l'applicazione a prova di aggiornamento dei file core.

Finora, quello che ho testato è che ho provato a caricare il clone modificato del componente com_users, in cui ho rimosso l'elemento Name nel com_users\models\forms, ho creato un file Zip e caricato tramite Extension Manager.
Ma l'override non ha funzionato.

Qualche idea?

2
Ju-chan

Puoi farlo più facilmente da un plugin in realtà. Nessun file core viene modificato, quindi dovrebbe essere completamente a prova di aggiornamento. Probabilmente hai già un plugin per il sistema di profili che sta aggiungendo i campi al modulo. Potrebbe non essere necessario modificarlo, ma dovrebbe essere semplice copiare il plug-in utente e impostare la seguente funzione in questo:

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

Se si introducono modifiche nei file dei componenti, verranno sostituite nel prossimo Joomla! aggiornare.

Queste sono le sostituzioni di output che consentono la personalizzazione:

Comprensione delle sostituzioni di output - http://docs.joomla.org/Understanding_Output_Overrides

  • Tipi di output dei componenti e sostituzioni del layout
    • 3.1 Tipi di output
    • 3.2 Layout
    • 3.3 Copia o creazione di file di layout
    • 3.4 Sostituzione dei sotto-layout

Se non sono sufficienti per risolvere le tue esigenze, devi creare un nuovo componente (invece di modificare i file di un componente principale).

2
Anibal