2009-12-15 5 views
0

J'utilise Ubercart et j'essaye de remplacer la fonction de thème suivante theme_address_pane() qui est dans uc_cart_checkout_pane.inc. Donc, je l'ai écrit la fonction suivante dans template.php:La fonction de thème Drupal n'est pas surchargée

function mytheme_address_pane($form) { 
    return "asdf"; 
} 

Cependant, il ne remplace pas quoi que ce soit avec « asdf ». Que pourrais-je faire de mal?

Édition: Le module devel signale la fonction appelée theme_address_pane, et non ma fonction surchargée.

+2

Avez-vous vidé le cache? Les fonctions de thème ne sont détectées que lorsque le registre de thème est créé, ce qui se produit après la suppression du cache. – jhedstrom

Répondre

2

Chaque fois que vous travaillez avec le système de thème, vous devez souvent vider le cache pour le voir arriver à effet. Pas tout le cache, juste le registre des thèmes. Ici, drupal stocke les informations sur la fonction thématique et le modèle à utiliser. Donc, chaque fois que vous voulez changer la fonction ou le modèle à utiliser, vous devez vider le cache.

Lors de la modification directe d'une fonction ou d'un modèle, il n'est pas nécessaire de vider le cache. Drupal ne mettra pas en cache la fonction ou le modèle, lui-même, mais uniquement l'emplacement/le nom. Vous pouvez donc modifier votre fonction de thème une fois que vous avez vérifié que drupal l'a enregistré.

2

Si vous mettez les éléments suivants en haut de votre fichier template.php (dans la balise php):

drupal_flush_all_caches();

Il effacera le cache à chaque fois que la page se charge. De cette façon, vous n'aurez pas à vider les caches manuellement. Cependant, soyez SÛR de le SUPPRIMER avant que le thème ne soit publié, ou vous verrez un ÉNORME succès de performance sur chaque chargement de page!

Questions connexes