Drupal динамическое внутреннее перенаправление

То, что я хочу, довольно просто. Я прописал путь

function spotlight_menu() {
    $items = array();

    $items['congres'] = array(
        'title' => 'Congres',
        'title arguments' => array(2),
        'page callback' => 'taxonomy_term_page',
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
    );

    return $items;
}

Когда этот пункт меню активирован, я хочу перенаправить (без изменения URL) страницу таксономии, термин которой выбирается в функции, которая запускается при вызове этой функции.

Как я могу сделать это (особенно без изменения URL)?

1 ответ

Решение

Ты не можешь позвонить taxonomy_term_page прямо как твой page callback так как вам нужно было бы предоставить функцию загрузки для загрузки термина, которая будет слишком сложной для вашей установки.

Вместо этого определите свой собственный обратный вызов страницы в качестве посредника и просто верните результат из taxonomy_term_page непосредственно:

function spotlight_menu() {
  $items = array();

  $items['congres'] = array(
    'title' => 'Congres',
    'page callback' => 'spotlight_taxonomy_term_page',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

function spotlight_taxonomy_term_page() {
  // Get your term ID in whatever way you need
  $term_id = my_function_to_get_term_id();

  // Load the term
  $term = taxonomy_term_load($term_id);

  // Make sure taxonomy_term_page() is available
  module_load_include('inc', 'taxonomy', 'taxonomy.pages');

  // Return the page output normally provided at taxonomy/term/ID
  return taxonomy_term_page($term);
}
Другие вопросы по тегам