Tout d'abord, désolé si cette réponse est couverte ailleurs. J'ai fait beaucoup de recherches et je ne trouve que des informations sur les fonctions de thème et les crochets.
J'utilise un module qui construit une table de prix pour les articles Drupal Commerce. Il existe une fonction qui formate les en-têtes de table:
/**
* Helper function that takes care of the quantity displayed in the headers of
* the price table.
*/
function commerce_price_table_display_quantity_headers($item) {
// Set the quantity text to unlimited if it's -1.
$max_qty = $item['max_qty'] == -1 ? t('Unlimited') : $item['max_qty'];
// If max and min qtys are the same, only show one.
if ($item['min_qty'] == $max_qty) {
$quantity_text = $item['min_qty'];
}
else {
$quantity_text = $item['min_qty'] . ' - ' . $max_qty;
}
return $quantity_text;
}
Comme vous pouvez le voir, ce n'est pas une fonction de thème où je peux la remplacer dans template.php mais je peux modifier une partie de la sortie.
Évidemment, je ne veux pas éditer le module lui-même au cas où il serait mis à jour à l'avenir, alors, comment puis-je redéfinir cette fonction afin de pouvoir couper et changer quelques choses?
Mon travail jusqu'à présent ...
Jusqu'à présent, j'ai essayé de le créer en tant que module séparé avec quelques modifications subtiles pour montrer s'il fonctionne ou non, mais il ne remplace aucune des sorties.
Fichier d'informations
; $id$
name = Price Table: Tweaked Display
description = A different layout for the price table as shown on the product display nodes
package = Commerce (contrib)
core = 7.x
dependencies[] = commerce_product
dependencies[] = commerce_price
dependencies[] = commerce_price_table
Fichier de module
/**
* Override of the helper function that takes care of the quantity displayed in the headers of
* the price table.
*/
function commerce_table_tweak_display_quantity_headers($item) {
// Set the quantity text to unlimited if it's -1.
$max_qty = $item['max_qty'] == -1 ? t('Unlimited gnhh') : $item['max_qty'];
// If max and min qtys are the same, only show one.
if ($item['min_qty'] == $max_qty) {
$quantity_text = $item['min_qty'];
}
else {
$quantity_text = $item['min_qty'] . ' - this is working - ' . $max_qty;
}
return $quantity_text;
}
Il semble que vous ne puissiez pas remplacer cette fonction car elle n'utilise pas de thème ou de workflow de hook.
La seule façon - est de changer directement de
commerce_price_table_display_quantity_headers()
fonction. Créez ensuite un patch avec vos modifications.Plus tard, si vous mettez à jour le module Commerce - vous devrez appliquer votre correctif.
la source
Je pense que la réponse d'Eugene est correcte: vous ne pouvez pas le faire sans écraser directement.
Cependant, ce que j'ai trouvé utile, c'est que s'il est absolument nécessaire de le faire, déplacez ce module de votre
sites/all/modules/contrib
répertoire verssites/all/modules/custom
dir afin que vous puissiez être conscient et garder une trace du fait que vous avez apporté des modifications personnalisées.la source