Функция Drupal не переопределяется - PullRequest
0 голосов
/ 15 декабря 2009

Я использую Ubercart и пытаюсь переопределить следующую функцию темы theme_address_pane(), которая находится в uc_cart_checkout_pane.inc. Поэтому я написал следующую функцию в template.php:

function mytheme_address_pane($form) {
    return "asdf";
}

Тем не менее, он ничего не заменяет на «asdf». Что я могу делать не так?

Редактировать: модуль devel сообщает, что функция вызывается как theme_address_pane, а не моя переопределенная.

Ответы [ 3 ]

2 голосов
/ 16 декабря 2009

Если вы поместите следующее в начало файла template.php (внутри тега php):

drupal_flush_all_caches();

Он очищает кеш при каждой загрузке страницы. Таким образом, вам не придется очищать кэши вручную. Однако НЕОБХОДИМО УДАЛИТЬ его до публикации темы, иначе вы увидите ОГРОМНОЕ снижение производительности при каждой загрузке страницы!

2 голосов
/ 15 декабря 2009

Всякий раз, когда вы имеете дело с темной системой, вам часто приходится очищать кеш, чтобы увидеть, как он вступает в силу. Не весь кеш, просто реестр тем. Здесь drupal хранит информацию о том, какую тематическую функцию и шаблон использовать. Поэтому, когда вы хотите изменить, какую функцию или шаблон использовать, вы должны очистить кеш.

При непосредственном изменении функции или шаблона очистка кэша не требуется. Drupal сам не кеширует функцию или шаблон, а только местоположение / имя. Таким образом, вы можете с радостью изменить функцию своей темы, как только убедитесь, что drupal зарегистрировал ее.

0 голосов
/ 16 декабря 2009

Чтобы изменить функцию темы в Drupal 6, вам нужно реализовать hook_theme_registry_alter().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...