Drupal 7 Modul "Node Export": Tabs in einen gemeinsamen Reiter
Node Export ist ein großartiges Modul, um im Drupal CMS Inhalte zu exportieren und einfach wieder zu importieren.
Sei es für
- Seitenumzug
- Entwicklung
- Features
- oder andere Zwecke!
Es stellt verschiedene Exportformate (Serialisierer, Array, CSV, XML, ...) bereit und bietet damit einen großen Umfang an Möglichkeiten. Diese Exportfunktion wird über die Tabs des entsprechenden Nodes angeboten.
Genau hier liegt ein großer Schwachpunkt des Moduls. Für jedes Exportformat wird ein separater Reiter hinzugefügt, wie ihr auf dem Bild im Anhang sehen könnt:
Besser wären sekundäre Tabs zu nutzen, wie ich nun in diesem Beitrag vorgeschlagen habe (Feature request):
drupal.org/node/1807428
Bis dahin habe ich das Problem über einen Hook in der Template.php gelöst, den ich euch gerne hier als Snippet ohne jede Garantie bereitstelle:
- function MYTHEME_preprocess_page(&$vars) {
- $tab_parent_href = null;
- $keep_as_parent = FALSE;
- $active = FALSE;
- foreach($vars['primary_local_tasks'] as $key => $primary_local_task){
- // This is an export tab.
- if($tab_parent_href === null){
- // Create parent task from first found element. Copy and convert it.
- $vars['primary_local_tasks'][$key]['#link']['title'] = t('Node Export');
- $tab_parent = $primary_local_task['#link']['path'];
- $tab_parent_href = $primary_local_task['#link']['tab_parent_href'] . '/node_export/json';
- $keep_as_parent = TRUE;
- } else {
- // We don't need the rest as parent!
- $keep_as_parent = FALSE;
- }
- // Only show if an export item is #active
- if($primary_local_task['#active']){
- $active = TRUE;
- }
- // Create subtask from this item.
- $secondary_local_task = $primary_local_task;
- $secondary_local_task['#link']['tab_parent'] = $tab_parent;
- $secondary_local_task['#link']['tab_parent_href'] = $tab_parent_href;
- $secondary_local_tasks_prepared[] = $secondary_local_task;
- if(!$keep_as_parent){
- // Delete this tab. It's no parent!
- }
- }
- }
- // Display subtasks! We're on a subpage of export.
- }
- $vars['secondary_local_tasks'] = array_merge($vars['secondary_local_tasks'], $secondary_local_tasks_prepared);
- }
- }
- }
Ich hoffe, dass euch dieser etwas hilft, falls ihr ein ähnliches Problem mit zu vielen Tabs habt.
- Login to post comments
Julian Pustkuchen, M. Sc. Wirtschaftsinformatik ist passionierter Software- & Webentwickler mit den Schwerpunkten Softwaredesign, Objektorientierung sowie Usability- & Ablaufoptimierung bei webks. Ein weiterer Schwerpunkt ist die Entwicklung im CMS Drupal.
Entwickelt Julian gerade keine Software, fährt er Ski, Mountainbike, spielt Badminton, segelt oder verbringt Zeit mit Freunden.
Dieser Blog dient als sein "öffentlicher Notizblo(ck/g)".
Webbasierte Lösungen? Machen wir!
webks: websolutions kept simple
http://www.webks.de
Dir hat dieser Beitrag viel Zeit und Nerven gespart?
Dann freue ich mich über jede kleine Anerkennung:
Oder du suchst weitere professionelle Unterstützung?
Dann bietet dir unser webks.de Softwareentwickler-Team professionelle Dienstleistungen im Web-Development und der Drupal CMS Entwicklung!