2012-01-05 67 views
0

我想在Drupal的一個頁面上使用節點菜單(見圖)。使用節點菜單

enter image description here

這是可能的,如果是,怎麼樣?

+0

你的意思是你想要一個新標籤嗎? – 2012-01-05 16:13:20

+0

不,我想補充的地方沒有出現... – Michiel 2012-01-05 16:18:45

+0

ü可以添加使用hook_menu() – 2012-01-05 17:07:34

回答

1

如果你指的頁是從模塊輸出的自定義頁面和「MyModule的/頁」是您想要的選項卡「查看」,該頁面的路徑,「編輯」,那麼你應該實施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 2012-01-10 10:27:45

1

好的;節點頁面通常具有這些查看和編輯選項卡。所以我的下一個問題是想知道爲什麼他們沒有出現在你的節點頁面上。您是否偶然爲此節點類型創建了自定義頁面模板並刪除了打印標籤的代碼?或者有沒有機會以無權編輯此類節點的用戶身份登錄?

必須有一個原因,你沒有得到這些標籤;他們應該在那裏,默認情況下。

如果你有這個節點類型的自定義頁面模板,查找代碼看起來是這樣的:

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

如果你沒有看到這樣的代碼,嘗試添加它。

如果你看到這樣的代碼,嘗試找出什麼是約相比,在你看到這些選項卡的其它內容類型的內容類型不同。

+0

該頁面是一個custum URL頁面。因此,您剛剛描述的'$ tabs'-thing是存在的,但由於某些原因,頁面上沒有顯示 – Michiel 2012-01-09 13:52:29