Как переопределить нетемизируемую функцию

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 26 июля 2010 в 21:46

Есть в модуле uc_store функция function uc_store_get_icon(), которая отвечает за вывод иконок в дашборде (admin/store)

Если появляются новые пункты и соответственно иконки под них, сами иконки нужно добавлять в эту функцию вручную, т.е хак. Я бы хотел переопределить её в template.php, чтобы поменьше головняка при обновлении

Как малой кровью сделать эту функцию темизируемой в template.php?

Комментарии

Аватар пользователя Xermit Xermit 26 июля 2010 в 22:00

Думаю по правильному так, вам на самом еделе надо темизировать функцию (т.е. найти ту функцию темизированную, которая использует вашу не темизированную), в вашем случае это йскорей всего
theme_uc_admin_dashboard
скоопировав ее код и в ней вместо вызова uc_store_get_icon вызовите свою какую душе угодно Biggrin

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 26 июля 2010 в 22:29

theme_uc_admin_dashboard() я уже оттемизировал по самые помидоры Smile

Там названия иконок никак нельзя поменять. А тут они есть

<?php

function uc_store_get_icon($path$small FALSE$class 'uc-store-icon'$alt NULL) {
  
$file FALSE;

  switch (

$path) {
    case 
'admin/store':
      
$file 'store_monitor';
      break;
    case 
'admin/store/orders':
      
$file 'menu_orders';
      break;
    case 
'admin/store/customers':
      
$file 'menu_customers';
      break;
    case 
'admin/store/products':
      
$file 'menu_products';
      break;
    case 
'admin/store/reports':
      
$file 'menu_reports';
      break;
    case 
'admin/store/settings':
      
$file 'menu_store_settings';
      break;
    case 
'admin/store/help':
      
$file 'menu_help';
      break;
    case 
'admin/store/attributes':
      
$file 'menu_attributes';
      break;
  }
}

?>
Аватар пользователя Xermit Xermit 27 июля 2010 в 0:10

Так вызови сначала эту функцию, а потом свою (если стандартная в возвращаемом значении вернет '')
В твоей функции switch только по твоим константам работать должен.