Certains utilisateurs peuvent uniquement avoir la possibilité de modifier l'un des ensembles de champs qui s'affiche dans les onglets verticaux du formulaire de modification de nœud. Dans un tel cas, il semble plutôt idiot d'utiliser des onglets verticaux car il n'y a qu'un seul onglet vertical à choisir. Voir capture d'écran:
Alors, est-il possible de désactiver les onglets verticaux par rôle d'utilisateur? Ou, à moins que cela, les désactiver complètement pour certains types de contenu? Pour mon cas d'utilisation, je veux juste que l'emplacement ne soit pas affiché dans les onglets verticaux.
J'ai essayé Renderable Fields et Field Group ensemble mais ils ont mal géré le formulaire (buggy, je pense). Les champs d'organisation ne peuvent pas séparer les onglets verticaux.
Réponses:
Il existe plusieurs façons de procéder:
Vous pouvez utiliser le module Renderable Elements (comme vous l'avez mentionné ci-dessus). Il vous permet d'enregistrer n'importe quel élément de build sur votre installation et de gérer l'affichage via Field UI. Il mettra à disposition des éléments (supplémentaires) des entités existantes sur les formulaires de gestion / écrans d'affichage ou vous pouvez par exemple enregistrer le formulaire de contact et réorganiser les champs via Field UI. Fonctionne actuellement très bien sur les formulaires, le support des autres arrive dans une deuxième itération.
Ou ajoutez ce qui suit à votre module personnalisé:
Un module sandbox qui désactive les onglets verticaux
Voici ce problème central qui se réfère à cela.
la source
Vous pouvez également utiliser la vérification #access pour empêcher les utilisateurs de voir les onglets verticaux.
Ajoutez simplement cela à un crochet ou modifiez le chargement et le rendu d'un formulaire. Après cela, vous pouvez appeler render ($ form) pour obtenir le balisage.
la source
J'ai écrit une solution possible simple dans le fil déjà mentionné: https://drupal.org/node/1048644#comment-7822687 . Pour plus de commodité, je vais le coller ici.
Il existe un moyen simple de désactiver les onglets verticaux d'un formulaire, en changeant simplement la
$form['additional_settings']['#type']
valeur de la variable en'fieldset'
dans une implémentation de hook_form_alter () ou hook_form_FORM_ID_alter () , si elle est égale à'vertical_tabs'
.Vous n'avez pas besoin de modifier les paramètres d'accès ou de parcourir l'ensemble du
$form
tableau de manière récursive, ce dernier consomme inutilement trop de ressources.(Testé dans Drupal 7.23 .)
C'est tout, bien sûr, remplacer le nom
MYMODULEORTHEMENAME
de votre propre module ou thème (ce dernier dans untemplate.php
fichier), etmy_form_id
l'ID de votre formulaire.Vous pouvez également désactiver les champs verticaux uniquement pour les utilisateurs qui n'ont PAS le rôle d'administrateur :
Au cas où quelqu'un est intéressé, je joint un patch (qui fait la même chose que ci - dessus) pour Dripman module bac à sable de: # 2080739: Simplifier la méthode de désactivation des onglets verticaux avec juste changer le
$form['additional_settings']['#type']
pour'fieldset'
.la source
Les éléments capables de rendu ne sont actuellement pas pris en charge et reconnaissent sur la page du projet qu'ils se heurtent à d'autres modules contribués, donc je ne compterais pas dessus pour les sites de production.
La question de savoir comment désactiver complètement les onglets verticaux est abordée dans ce fil .
Dripman a créé un module sandbox simple pour désactiver complètement les onglets verticaux.
En fonction de votre niveau d'engagement souhaité avec le codage, le module de Dripman devrait être facilement personnalisable pour être sélectif en fonction des champs / rôles.
Toutes mes excuses pour le chevauchement avec une réponse succincte de @nicoz
la source
Vous pouvez utiliser le module Visibilité des onglets verticaux .
Le module est actuellement dans le bac à sable
la source
Pour mon cas d'utilisation, j'essayais de désactiver les onglets verticaux appliqués dans la section Options de publication d'un formulaire de modification de nœud (car c'était le seul jeu de champs auquel un ensemble particulier d'utilisateurs avait accès):
Pour plus de précision, non seulement vous devez définir la
additional_settings
#collapsible
valeur FALSE, mais tous les éléments contenus doivent également avoir l' élément #collapsibleset to
FALSE, in my case that was the
options`.la source