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:
$primary_local_task){ if(strpos($primary_local_task['#link']['path'], 'node/%/node_export/') !== FALSE){ // 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; unset($secondary_local_task['#active']); $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! unset($vars['primary_local_tasks'][$key]); } } } if($active && !empty($secondary_local_tasks_prepared)){ // Display subtasks! We're on a subpage of export. if(empty($vars['secondary_local_tasks'])){ $vars['secondary_local_tasks'] = array(); } $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.