Question

J'ai un thème drupal appelé Wellington situé dans \ Sites \ Tous \ Themes \ Wellington.Je souhaite remplacer la fonction Menu_Item et suivi les instructions de http://drupal.org/node/310356.

Je veux ajouter une classe à la LI comme décrit.

J'ai essayé de nommer la fonction wellington_menu_item et essayé Phptemplate_menu_item mais pas de chance.Je peux mettre des déclarations d'impression dans la fonction et ceux-ci sont affichés à l'écran.

En outre, je peux imprimer la chaîne de retour juste avant son retour et son correct, mais lorsque le menu est rendu, aucune différence, c'est la principale normale montrant, c'est-à-dire pas de remplacement.

Le thème lui-même fonctionne bien et je peux voir le CSS et HTML.

je suis soulevé, des idées?

<?php
/**
* Theme override for theme_menu_item()
*/
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
  $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
  if (!empty($extra_class)) {
    $class .= ' '. $extra_class;
  }
  if ($in_active_trail) {
    $class .= ' active-trail';
  }

  // Add unique identifier
  static $item_id = 0;
  $item_id += 1;
  $id .= ' ' . 'menu-item-custom-id-' . $item_id;
  // Add semi-unique class
  $class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));

  return '<li class="'. $class .'" id="' . $id . '">'. $link . $menu ."</li>\n";
}
?>

on appelle dans la page.tpl.php en utilisant

<?php print theme('links', $primary_links); ?>

Était-ce utile?

La solution

Comme vous le mentionnez de pouvoir imprimer la chaîne de résultat avant de le renvoyer, les substituts fonctionnent.Ce que je soupçonne, c'est que le résultat de votre fonction n'est pas réellement utilisé lors du rendu.Peut-être parce qu'il est stocké dans une variable de modèle qui est ensuite remplacée avec une autre valeur dans une fonction de préprocession appelée plus tard.

Je suggère d'utiliser Développeur de thème Module pour vérifier quel modèle / fonction est utilisé pour rendre votreélément de menu.

Autres conseils

N'oubliez pas de vider le cache de votre navigateur et du cache Drupal lorsque vous avez ajouté la fonction au template.php.La compensation du cache du navigateur ne doit pas être nécessaire, mais parfois utile pour d'autres changements.

(Configuration du site - Performance - Données mises en cache transparentes)

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