Создать пользовательскую вкладку узла с пользовательским путем - PullRequest
1 голос
/ 19 июня 2010

Могу ли я в любом случае настроить пути к вкладкам узла?

При использовании pathauto или hook_menu_alter я могу изменить путь к представлению узла с узла / узла_ид на, ну почти все,но, скажем, xyz / node_title.

Тем не менее, вкладки узлов остаются с путем / node / node_id / tab_name

Я пытаюсь добавить пользовательскую вкладку в узел, итакже сохраните пользовательский путь (например, xyz / node_title / tab_name вместо node / node_id / tab_name).

Мне удается добавить пользовательскую вкладку через hook_menu:

$items['node/%node/members'] = array(  
    'title' => 'Manage Membership',  
    'page callback' => 'mymodule_members',  
    'page arguments' => array(1),  
    'access callback'   => 'mymembers_members_access',  
    'access arguments' => array(1),  
    'type' => MENU_LOCAL_TASK  
); 

, но еслиЯ пытаюсь настроить путь, либо в hook_menu, либо в hook_menu_alter, вкладка просто исчезает.

Есть идеи?

PS, я отправил тот же вопрос вфорумы Drupal, пока нет ответа.Я сделаю кросс-обновление.

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Вы можете добавить две функции в settings.php: custom_url_rewrite_inbound () и custom_url_rewrite_outbound () .

В примерах на этих страницах должно быть понятноиспользуйте их.

function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  global $user;

  // Change all article/x requests to node/x
  if (preg_match('|^article(/.*)|', $path, $matches)) {
    $result = 'node'. $matches[1];
  }
  // Redirect a path called 'e' to the user's profile edit page.
  if ($path == 'e') {
    $result = 'user/'. $user->uid .'/edit';
  }
}

function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
  global $user;

  // Change all 'node' to 'article'.
  if (preg_match('|^node(/.*)|', $path, $matches)) {
    $path = 'article'. $matches[1];
  }
  // Create a path called 'e' which lands the user on her profile edit page.
  if ($path == 'user/'. $user->uid .'/edit') {
    $path = 'e';
  }
}

Drupal 7 использует две новые ловушки вместо этих функций: hook_url_inbound_alter () и hook_url_outbound_alter () .

2 голосов
/ 19 июня 2010

Я думаю, что этот модуль поможет вам сформировать путь к вкладке так, как вы хотите: Псевдонимы URL-адреса под-пути .

...