2012-01-05 4 views
0

Я хотел бы использовать меню узлов (см. Изображение) на странице в Drupal.Использование узла-меню на странице

enter image description here

Возможно ли это, и если да, то как?

+0

действительно ли вы хотите иметь новую вкладку? –

+0

Нет, я хочу добавить этот кран в место, где оно не появляется ... – Michiel

+0

u может добавлять вкладки с помощью hook_menu() –

ответ

1

Если страница, на которую вы ссылаетесь, является настраиваемой страницей из вашего модуля, а «mymodule/page» - это путь к этой странице, для которой вы хотите использовать вкладки «Вид» и «Редактировать», тогда вы должны реализовать hook_menu() используя код, подобный следующему:

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

    $items['mymodule/page'] = array(
    'page callback' => 'mymodule_page_view', 
    'access arguments' => array('view mymodule page'), 
); 

    $items['mymodule/page/view'] = array(
    'title' => 'View', 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
    'weight' => -10, 
); 
    $items['mymodule/page/edit'] = array(
    'title' => 'Edit', 
    'page callback' => 'mymodule_page_edit', 
    'access arguments' => array('edit mymodule page'), 
    'weight' => 0, 
    'type' => MENU_LOCAL_TASK, 
); 

    return $items; 
} 

Если страница, которую вы имеете в виду это страница, которая отображается в example.com/mymodule/page, и это должно показать, что вы видите на example.com/node/7, тогда вы можете реализовать следующий код, в Drupal 7:

function mymodule_url_inbound_alter(&$path, $original_path, $path_language) { 
    if (preg_match('|^mymodule/page|', $path)) { 
    $path = 'node/7'; 
    } 
} 

Эквивалент для Drupal 6 записывает следующий код в файле settings.php:

function custom_url_rewrite_inbound(&$result, $path, $path_language) { 
    if (preg_match('|^mymodule/page|', $path)) { 
    $result = 'node/7'; 
    } 
} 

Я не писал симметричный код для hook_url_outbound_alter() и custom_url_rewrite_outbound(), как я полагаю, вы не заинтересованы в переписывании example.com/node/7, чтобы он отображался как example.com/mymodule/page, но вы заинтересованы в том, чтобы выглядеть example.com/mymodule/page таким же, как example.com/node/7.

+0

Спасибо! Это было очень полезное решение! – Michiel

1

Okay; на странице узла обычно есть вкладки «Просмотр» и «Редактирование». Поэтому мой следующий вопрос заключается в том, чтобы задаться вопросом, почему они уже не появляются на вашей странице узла. Вы случайно создали собственный шаблон страницы для этого типа узла и удалили код, который печатает вкладки? Или есть вероятность, что вы вошли в систему как пользователь, у которого нет прав на редактирование этого типа узла?

Должна быть причина, по которой вы не получаете эти вкладки; они должны быть там, по умолчанию.

Если у вас есть собственный шаблон страницы для данного типа узла, искать код, который выглядит примерно так:

 <?php if ($tabs): ?> 
      <div class="tabs"><?php print $tabs; ?></div> 
     <?php endif; ?> 

Если вы не видите подобный код, попробуйте добавить его.

Если вы посмотрите на такой код, попробуйте выделить то, что отличается от этого типа контента, по сравнению с другими типами контента, где вы видите эти вкладки.

+0

Страница является страницей URL-адреса custum. Итак, информация о '$ tabs', которую вы только что описали, присутствует, но по какой-то причине вкладки не отображаются на странице – Michiel

Смежные вопросы