Reply to comment

Drupal 7 Modul "Node Export": Tabs in einen gemeinsamen Reiter

Node export Tabs nach dem Umbau

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:
Drupal CMS Node export Modul separate tabs

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:

  1. function MYTHEME_preprocess_page(&$vars) {
  2.   if(!empty($vars['primary_local_tasks'])){
  3.     $tab_parent_href = null;
  4.     $keep_as_parent = FALSE;
  5.     $active = FALSE;
  6.     $secondary_local_tasks_prepared = array();
  7.     foreach($vars['primary_local_tasks'] as $key => $primary_local_task){
  8.       if(strpos($primary_local_task['#link']['path'], 'node/%/node_export/') !== FALSE){
  9.         // This is an export tab.
  10.         if($tab_parent_href === null){
  11.           // Create parent task from first found element. Copy and convert it.
  12.           $vars['primary_local_tasks'][$key]['#link']['title'] = t('Node Export');
  13.           $tab_parent = $primary_local_task['#link']['path'];
  14.           $tab_parent_href = $primary_local_task['#link']['tab_parent_href'] . '/node_export/json';
  15.           $keep_as_parent = TRUE;
  16.         } else {
  17.           // We don't need the rest as parent!
  18.           $keep_as_parent = FALSE;
  19.         }
  20.         // Only show if an export item is #active
  21.         if($primary_local_task['#active']){
  22.           $active = TRUE;
  23.         }
  24.  
  25.         // Create subtask from this item.
  26.         $secondary_local_task = $primary_local_task;
  27.         unset($secondary_local_task['#active']);
  28.         $secondary_local_task['#link']['tab_parent'] = $tab_parent;
  29.         $secondary_local_task['#link']['tab_parent_href'] = $tab_parent_href;
  30.         $secondary_local_tasks_prepared[] = $secondary_local_task;
  31.         if(!$keep_as_parent){
  32.           // Delete this tab. It's no parent!
  33.           unset($vars['primary_local_tasks'][$key]);
  34.         }
  35.       }
  36.     }
  37.     if($active && !empty($secondary_local_tasks_prepared)){
  38.       // Display subtasks! We're on a subpage of export.
  39.       if(empty($vars['secondary_local_tasks'])){
  40.         $vars['secondary_local_tasks'] = array();
  41.       }
  42.       $vars['secondary_local_tasks'] = array_merge($vars['secondary_local_tasks'], $secondary_local_tasks_prepared);
  43.     }
  44.   }
  45. }

Ich hoffe, dass euch dieser etwas hilft, falls ihr ein ähnliches Problem mit zu vielen Tabs habt.

Reply

The content of this field is kept private and will not be shown publicly.

More information about formatting options