Question

J'ai construit un menu à onglets dans mon module Drupal 6 personnalisé. Je souhaite placer une liste déroulante HTML à droite du menu à onglets en haut de la page de mon module. La liste déclenchera certains événements ajax lors d’un changement, par exemple. changer la clause LIMIT sur une requête SQL en spécifiant 10,20,50,100 résultats. Comment puis-je atteindre cet objectif dans Drupal sans piratage des modèles?

Merci,

Était-ce utile?

La solution

Vous pouvez le faire en remplaçant theme_menu_local_tasks () dans votre thème:

function yourTheme_menu_local_tasks() {
  // Prepare empty dropdown to allow for unconditional addition to output below
  $dropdown = '';
  // Check if the dropdown should be added to this menu
  $inject_dropdown = TRUE; // TODO: Add checking logic according to your needs, e.g. by inspecting the path via arg()
  // Injection wanted?
  if ($inject_dropdown) {
    // Yes, build the dropdown using Forms API
    $select = array(
      '#type' => 'select',
      '#title' => t('Number of results:'),
      '#options' => array('10', '20', '50', '100'),
    );
    // Wrap rendered select in <li> tag to fit within the rest of the tabs list
    $dropdown = '<li>' . drupal_render($select) . '</li>';
  }

  // NOTE: The following is just a copy of the default theme_menu_local_tasks(),
  // with the addition of the (possibly empty) $dropdown variable output
  $output = '';
  if ($primary = menu_primary_local_tasks()) {
    $output .= "<ul class=\"tabs primary\">\n". $primary . $dropdown . "</ul>\n";
  }
  if ($secondary = menu_secondary_local_tasks()) {
    $output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
  }

  return $output;
}

(REMARQUE: code non testé - erreurs typographiques potentielles)

Autres conseils

Comme vous vous référez au code à mettre dans un module, le module doit implémenter hook_theme_registry_alter () , ce qui permettrait au module de remplacer la fonction theme_menu_local_tasks () . Le module devrait stocker la valeur du rappel précédent, de sorte qu'il puisse toujours l'appeler dans le cas où la page ne serait pas modifiée.
L'implémentation d'un hook dans le module vous permet d'avoir les onglets de menu normaux, une fois le module désactivé. Si vous modifiez le thème actuel, vous devrez le modifier à nouveau lorsque vous souhaitez utiliser la fonctionnalité. Si vous utilisez un thème créé par une autre personne, vous devez le modifier chaque fois que vous téléchargez une nouvelle version. Si vous utilisez plusieurs thèmes, vous devez modifier chacun des thèmes utilisés.
En général, une modification à un thème requise à partir d'un module doit être effectuée à l'intérieur d'un module.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top