En primer lugar, lo siento si esta respuesta está cubierta en otra parte. He buscado mucho y solo puedo encontrar información sobre cómo anular funciones de tema y ganchos.
Estoy usando un módulo que crea una tabla de precios para los artículos de Drupal Commerce. Hay una función que formatea los encabezados de la tabla:
/**
* 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;
}
Como puede ver, esta no es una función de tema donde puedo anularla en template.php pero puedo modificar algunos de los resultados.
Obviamente no quiero editar el módulo en sí mismo en caso de que se actualice en el futuro, entonces, ¿cómo puedo redefinir esta función para poder cortar y cambiar algunas cosas?
Mi trabajo hasta ahora ...
Hasta ahora, he intentado crearlo como un módulo separado con algunos cambios sutiles para mostrar si funciona o no, pero no anula ninguna de las salidas.
Archivo de información
; $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
Archivo de módulo
/**
* 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;
}
Parece que no puede anular esta función porque no usa flujo de trabajo de tema o gancho.
La única forma es cambiar directamente la
commerce_price_table_display_quantity_headers()
función. Luego crea un parche con tus cambios.Más adelante, si actualiza el módulo de Comercio , deberá aplicar su parche.
fuente
Creo que la respuesta de Eugene es correcta: no puedes hacerlo sin sobrescribir directamente.
Sin embargo, lo que he encontrado útil es que si es absolutamente necesario hacer esto, mueva este módulo de su
sites/all/modules/contrib
directorio alsites/all/modules/custom
directorio para que pueda conocer y realizar un seguimiento del hecho de que realizó cambios personalizados.fuente