как правильно переопределить генерацию страницы taxonomy/term? [решено]

Главные вкладки

Аватар пользователя fairwind fairwind 24 сентября 2008 в 9:49

Пишу свой модуль, требуется хитро вывести сабжевую страницу. Поискал соответствующий хук - не нашел.
Вижу, что вызывается taxonomy_term_page как menu callback (что это такое, кстати? не разбирался еще с меню). Видимо, надо эту функцию и переопределить. А как назвать-то ее?

upd. модуль devel - наше все. там есть пимпа "rebuild menus". она-то меня и спасла от злобного кеширования меню. еще б разобраться, как это делать программно из своего модуля...

Комментарии

Аватар пользователя fairwind fairwind 24 сентября 2008 в 10:42

А я не спрашиваю помощи в выводе. Я спрашиваю, как функцию переопределить Smile

Поразбирался с хуками, написал функции для hook_menu & hook_theme - что-то они не вызываются Sad
Назвал их имя_моего_модуля_menu и имя_моего_модуля_theme соответственно.
Вставляю туда для проверки drupal_set_message("блаблабла") - никакой реакции (( Хотя в _init аналогичный drupal_set_message отлично отрабатывает.

Что я делаю не так?

Аватар пользователя glu2006 glu2006 24 сентября 2008 в 10:59

fairwind wrote:
Назвал их имя_моего_модуля_menu и имя_моего_модуля_theme соответственно.

для theme если мне память не изменяет надо theme_имя модуля. и если не сложно то что у вас не работает код в студию, по проводам не вижу ))).

Аватар пользователя fairwind fairwind 24 сентября 2008 в 11:09
/**
 * Implementation of hook_theme()
 */

function taxonomy_distant_theme() {
drupal_set_message("theme");
  return array(
    'td_term_page' => array(
      'arguments' => array('tids' => array(), 'result' => NULL),
    ),
  );
}

/**
 * Реализация hook_menu()
  */

function taxonomy_distant_menu() {
drupal_set_message("menu");
  $items['taxonomy/term/%'] = array(
    'title' => 'Taxonomy term',
    'page callback' => 'td_term_page',
    'page arguments' => array(2),
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
    'file' => 'taxonomy_distant.module',
  );
  return $items;
}

не вызываются, drupal_set_message не отрабатывает.
функции - copy&paste из модуля taxonomy с заменой чего надо под свой модуль.

Аватар пользователя glu2006 glu2006 24 сентября 2008 в 11:39
function bli_menu($my_cache) {
if ($my_cache) {
     $items[] = array(
      'path'                            => 'admin/settings/bli',
      'type'                            => MENU_NORMAL_ITEM,
      'title'                           => t('BLI module'),
      'access'                          => user_access('administer site configuration'),
      'callback'                        => 'drupal_get_form',
      'callback arguments'      => array('bli_admin_settings_form'),
     );
}
return $items;
}

function theme_bli_tabs_prices (&$node){
        $view = views_get_view('proditems');
        $content = theme('views_display_filters',$view);
        $content .= '<div id="view-prices"></div>';
        return $content;
}

Вот так я примерно определяю меню и theme функции для своих модулей и у меня все работет.

Аватар пользователя fairwind fairwind 25 сентября 2008 в 15:18

модуль devel - наше все. там есть пимпа "rebuild menus". она-то меня и спасла от злобного кеширования меню. еще б разобраться, как это делать программно из своего модуля...

Аватар пользователя glu2006 glu2006 25 сентября 2008 в 15:29

fairwind wrote:
модуль devel - наше все. там есть пимпа "rebuild menus". она-то меня и спасла от злобного кеширования меню. еще б разобраться, как это делать программно из своего модуля...

Попробуй найти какая ф-ция модуля девел вызывается при нажатии на пимпу)) и у себя в модуле вызывай эту ф-цию при определенных условиях или на определенном событии.