Einige Benutzer haben möglicherweise nur die Möglichkeit, einen der Feldsätze zu bearbeiten, die in vertikalen Registerkarten im Knotenbearbeitungsformular angezeigt werden. In einem solchen Fall sieht es ziemlich albern aus, vertikale Registerkarten zu verwenden, da nur eine vertikale Registerkarte zur Auswahl steht. Siehe Screenshot:
Ist es also möglich, vertikale Registerkarten nach Benutzerrolle zu deaktivieren? Oder, abgesehen davon, deaktivieren Sie sie für bestimmte Inhaltstypen vollständig? Für meinen Anwendungsfall möchte ich nur, dass der Standort nicht in vertikalen Registerkarten angezeigt wird.
Ich habe Renderable Fields und Field Group zusammen ausprobiert, aber sie haben das Formular falsch verwaltet (fehlerhaft, glaube ich). Felder anordnen können vertikale Registerkarten nicht trennen.
Antworten:
Es gibt nur wenige Möglichkeiten, dies zu tun:
Sie können das Renderable Elements- Modul verwenden (wie oben erwähnt). Sie können jeden Build Ihrer Installation registrieren und die Anzeige über die Feld-Benutzeroberfläche verwalten. Es werden (zusätzliche) Elemente vorhandener Entitäten auf den Verwaltungsformularen / Anzeigebildschirmen verfügbar gemacht, oder Sie können beispielsweise das Kontaktformular registrieren und die Felder über die Feldbenutzeroberfläche neu anordnen. Funktioniert derzeit einwandfrei für Formulare, die Unterstützung für andere erfolgt in einer zweiten Iteration.
Oder fügen Sie Ihrem benutzerdefinierten Modul Folgendes hinzu:
Ein Sandbox-Modul , das vertikale Registerkarten deaktiviert
Hier ist dieses Kernthema, das sich darauf bezieht.
quelle
Sie können auch die Prüfung #access verwenden, um zu verhindern, dass Personen die vertikalen Registerkarten sehen.
Fügen Sie dies einfach einem Hook-Formular hinzu, oder zwischen dem Laden und dem Rendern eines Formulars. Danach können Sie render ($ form) aufrufen, um das Markup zu erhalten.
quelle
Ich habe eine einfache mögliche Lösung in den bereits erwähnten Thread geschrieben: https://drupal.org/node/1048644#comment-7822687 . Der Einfachheit halber werde ich es hier einfügen.
Es gibt eine einfache Möglichkeit, vertikale Registerkarten in einem Formular zu deaktivieren, indem Sie einfach den
$form['additional_settings']['#type']
Wert der Variablen'fieldset'
in einer Implementierung von hook_form_alter () oder hook_form_FORM_ID_alter () ändern , wenn er gleich ist'vertical_tabs'
.Sie müssen die Zugriffseinstellungen nicht ändern oder das gesamte
$form
Array rekursiv durchlaufen. Letzteres verbraucht unnötig zu viel Ressourcen.(Getestet in Drupal 7.23 .)
Das ist alles, natürlich, Ersatz
MYMODULEORTHEMENAME
zu Ihrem eigenen Moduls oder das Thema Namen (letztere in einertemplate.php
Datei), undmy_form_id
auf Ihre Form von id.Sie können die vertikalen Felder auch nur für Benutzer deaktivieren , die NICHT die Administratorrolle haben :
Falls jemand daran interessiert ist, einen Patch angebracht I (die die gleichen wie oben hat) zu Dripman ‚s Sandbox - Modul: # 2.080.739: vereinfacht das Verfahren zur Deaktivierung Vertical Laschen nur mit dem Wechsel
$form['additional_settings']['#type']
auf'fieldset'
.quelle
Renderfähige Elemente werden derzeit nicht unterstützt und bestätigen auf der Projektseite, dass sie mit einigen anderen bereitgestellten Modulen kollidieren, sodass ich mich bei Produktionsstandorten nicht darauf verlassen würde.
Die Frage, wie vertikale Registerkarten vollständig deaktiviert werden können, wird in diesem Thread behandelt .
Dripman hat ein einfaches Sandbox-Modul erstellt , um vertikale Registerkarten vollständig zu deaktivieren.
Abhängig von Ihrem gewünschten Grad an Engagement für die Codierung sollte das Dripman-Modul leicht anpassbar sein, um anhand von Feldern / Rollen selektiv zu sein.
Entschuldigung für die Überschneidung mit der prägnanten Antwort von @nicoz
quelle
Sie können das Modul Sichtbarkeit vertikaler Registerkarten verwenden .
Derzeit befindet sich das Modul in der Sandbox
quelle
Für meinen Anwendungsfall habe ich versucht, die vertikalen Registerkarten zu deaktivieren, die im Abschnitt Veröffentlichungsoptionen in einem Knotenbearbeitungsformular angewendet werden (da dies die einzige Feldgruppe war, auf die eine bestimmte Gruppe von Benutzern Zugriff hat):
Zur Verdeutlichung müssen Sie nicht nur
additional_settings
#collapsible
auf FALSE setzen, sondern alle Elemente in müssen auch das Element #collapsibleset to
FALSE, in my case that was the
options` enthalten.quelle