Redéfinir une fonction autre que theme_

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

je continu mon aprentissage intensif de Drupal et j'ai déjà réussi à comprendre quelques fonctionnalités puissantes comme phptemplate.

Donc les fonctions dans les modules qui commencent par theme_, on peut les redéclarer dans un fichier template.php en remplacant theme_ par phptemplate_ et ca marche parfaitement.

Mais comment redéclarer des fonctions qui ne sont pas theme_. Car certaines d'entre elles dans les modules que j'utilise définissent un peu l'affichage et j'ai donc besoin de les modifier pour personnaliser la chose comme je veux. Je sais qu'il n'est pas conseillé de modifier directement dans le module car j'ai une installation de drupal multisite donc c'est pas top, et plus, mes modifications passeraient à la trappe à la moindre mise à jour du module...

Donc comment modifier une fonction qui n'est pas theme_ ?

Pour l'exemple la fonction à laquelle je pense est la fonction : _cart_review_table du module de ecommerce ubercart. Cette fonction définit l'affichage du panier et j'ai besoin d'ajouter une classe à la première colonne pour lui enlever une bordure...

Merci d'avance

zmove

Version de Drupal : 

Ca n'est pas possible. Il faut essayer de trouver une fonction theme_XX() qui récupère ce que _cart_review_table() renvoie, et d'injecter ta classe en faisant un rechercher/remplacer sur une expression régulière.

Ca n'est pas très élégant, mais je ne vois pas d'autre solution.

boah, ca serait compensé par l'allégement des 100 000 000 de div que drupal et les modules rajoutent alors qu'ils ne servent à rien ^^.

De plus, toutes les fonctions n'ont pas un role d'affichage, c'est dommage que certaines fonctions qui génerent 15 div et 3 tables dégueulasses ne soit pas themable parfois.

Hm... En réalité, c'est pas vraiment ça le pb, mais plutôt "c'est dommage que des fonctions qui n'ont pas un rôle d'affichage contiennent du HTML". En principe, il devrait y avoir une stricte séparation de la présentation (thème) et de la logique applicative, ce qui te permettrait de faire à peu près ce que tu veux au niveau de l'affichage.

Paraît que ça sera le cas avec Drupal 6.