web-dev-qa-db-fra.com

Champs de profil personnalisés, limités à l'administrateur uniquement

Je suis cet exemple ici plugin de profil

créer mon propre plugin de profil. Ce que je ne peux pas comprendre, c'est comment créer un administrateur de champ uniquement?

Dans le profil/client d'origine, il existe des champs tels que la langue ou l'éditeur par défaut. Ils peuvent être désactivés via les "Paramètres utilisateur frontend".

Comment créer un tel champ? Visible uniquement par ADMIN, pas par l'utilisateur.

Il y a des paramètres comme name = "register-require_myfield", est-ce qu'ils peuvent désactiver un champ pour l'enregistrement, ou un profil?

Je ne trouve rien en ligne sur ce problème. Qu'est-ce qui me manque?

Merci

EDIT: Ceci est Joomla 3.2+

5
Andreas

Je ne suis pas tout à fait sûr que cela fonctionnera car je n'ai pas de plugin utilisateur à installer, mais essayez d'ajouter cette fonction à votre plugin. L'intention est de vérifier si l'utilisateur appartient au groupe d'utilisateurs de votre choix et, dans le cas contraire, quitter et ne pas préparer le formulaire.

public function onContentPrepareForm($form, $data)
{
    $groups = $data->groups->getProperties();
    if(!in_array("8",$groups)){    // see table #__usergroups for a complete list to check
        return;
    }
}

Après mûre réflexion (et peut-être que je l'essayerai plus tard), vous devrez peut-être ajuster le contenu de $form en utilisant les méthodes de jForm . Encore une fois, je ne sais pas si cela fonctionnera, mais cela semble être un bon point de départ. Je serais intéressé de savoir si vous résolvez de le mettre dans mon propre petit sac à malice.

2
GDP

Vous pouvez éditer le plugin de profil. Éditez onContentPrepareForm () changez la casse de profil en quelque chose comme ceci:

// Case profile in site         
        elseif ($name == 'com_users.profile')
        {
            // Toggle whether the field is required.
            if ($this->params->get('profile-require_' . $field, 1) > 0)
            {
                $form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile');

                // Remove credits field from the front-end user profile edit page
                if($field == 'usercredits') {
                    $form->removeField('usercredits', 'profile');
                }
            }
            else
            {
            // Case profile in site         
        elseif ($name == 'com_users.profile')
        {
            // Toggle whether the field is required.
            if ($this->params->get('profile-require_' . $field, 1) > 0)
            {
                $form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile');

                // Remove credits field from the front-end user profile edit page
                if($field == 'usercredits') {
                    $form->removeField('usercredits', 'profile');
                }
            }
            else
            {
                $form->removeField($field, 'profile');                  
                // Remove credits field from the front-end user profile edit page
                if($field == 'usercredits') {
                    $form->removeField('usercredits', 'profile');
                }
            }
0
samaras