Пожалуйста, проверьте, нет ли Идиотизма:Настройка страницы терминов таксономии в Drupal

StackOverflow https://stackoverflow.com/questions/1498536

  •  19-09-2019
  •  | 
  •  

Вопрос

Я пытался настроить в своем модуле Drupal 6 способ отображения страниц терминов таксономии при определенных условиях.Это легко сделать с помощью тем, но, похоже, не существует простого способа выполнить это с помощью модуля.

После долгих проб, ошибок и поиска в Google я придумал следующий способ добиться этого:

Кажется, это работает хорошо, и чувствует гораздо менее хакерские, чем альтернативные решения, которые я нашел в Интернете.Но меня беспокоит тот факт, что я нигде не видел этого примера на многих страницах форума Drupal - это заставляет меня думать, что в этом решении может быть что-то ужасно неправильное, чего я еще не видел.

Может ли кто-нибудь из вас увидеть проблемы с этим решением или (что лучше) предложить метод, который мог бы основываться на существующих темах Drupal?

function foo_menu() {
    // other menu callbacks ... 
    $items['taxonomy/term/%'] = array( 
        'title' => 'Taxonomy term',
        // override taxonomy_term_page
        'page callback' => 'foo_term_page',
        'page arguments' => array(2),
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );
    // other menu callbacks
}

function foo_term_page($str_tids = '', $depth = 0, $op = 'page') {
    if ($my_conditions_are_true) {
        // foo_theme_that_page is a copy-paste of taxonomy_term_page
        // that includes the customizations I want
        return foo_theme_that_page($str_tids,$depth,$op);
    } else { //Conditions aren't met. Display term normally
        module_load_include('inc', 'taxonomy', 'taxonomy.pages');
        return taxonomy_term_page($str_tids,$depth,$op);
    }
}
Это было полезно?

Решение

Как насчет использования hook_menu_alter() вместо того , чтобы hook_menu()?Таким образом, вы можете изменить элемент меню, который создает taxonomy, понятным способом, не беспокоясь о весах модулей и о том, какой элемент добавляется последним.

В противном случае, именно так я бы сделал что-то подобное в контексте модуля.

Другие советы

Взгляните на content.module или views.module, чтобы увидеть, как это там реализовано, если они у вас установлены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top