Во-первых, извините, если этот ответ рассматривается в другом месте. Я много занимался поиском и могу найти информацию только о перехватывающих функциях темы и хуках.
Я использую модуль, который строит таблицу цен для предметов Drupal Commerce. Существует функция, которая форматирует заголовки таблицы:
/**
* 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;
}
Как видите, это не функция темы, где я могу переопределить ее в template.php, но я могу настроить некоторые результаты.
Очевидно, что я не хочу редактировать сам модуль в случае, если он будет обновлен в будущем, поэтому, как я могу переопределить эту функцию, чтобы я мог нарезать и изменить несколько вещей?
Моя работа до сих пор ...
До сих пор я пытался создать его как отдельный модуль с несколькими тонкими изменениями, чтобы показать, работает он или нет, но он не перекрывает какой-либо вывод.
Инфо файл
; $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
Файл модуля
/**
* 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;
}
Кажется, вы не можете переопределить эту функцию, потому что она не использует тему или рабочий процесс подключения.
Единственный способ - это напрямую изменить
commerce_price_table_display_quantity_headers()
функцию. Затем создайте патч с вашими изменениями.Позже, если вы обновите модуль Commerce - вам нужно будет применить ваш патч.
источник
Я думаю, что ответ Евгения правильный, что вы не можете сделать это без перезаписи напрямую.
Однако, что я нашел полезным, так это то, что, если это абсолютно необходимо, переместите этот модуль из своего
sites/all/modules/contrib
каталога в каталог,sites/all/modules/custom
чтобы вы могли быть в курсе и отслеживать тот факт, что вы сделали пользовательские изменения.источник