2011-03-02 49 views
5

如何在Drupal中創建一個不會自動生成導航鏈接的新路由/菜單?Drupal 7:如何創建一個沒有出現在網站中的菜單/路由項導航

我正在嘗試在Drupal中創建一個簡單的頁面回調,它不會顯示在導航菜單中。我有一個名爲helloworld的模組。

.module文件包含以下

function _helloword_page_callback() 
{ 
    return array('#markup'=>'The quick brown fox says hello, and the lazy dogs thanks you 
    for following conventions.'); 
} 

function helloworld_menu() 
{ 
    $items['helloworld'] = array(
     'title'    => 'Hello World', 
     'page callback'  => '_helloword_page_callback', 
     'access arguments' => array('content'), 
     'type'    => MENU_CALLBACK 
    ); 
    return $items; 
} 

這成功地暴露了

http://example.drupal.com/helloworld 

然而,我仍然在左手獲得一個鏈接網站上的網址(Bartik )導航菜單儘管使用了

'type'    => MENU_CALLBACK 

那麼,爲什麼這不起作用?我正確配置菜單項嗎?更可能的問題:我如何誤解使用菜單類型常量/系統?是否有額外的高速緩存來清除:

drush cc all 

不會照顧?我可以採取哪些其他步驟來調試?

回答

5

肯定還有別的錯誤(也許你忘了清除緩存?),因爲即使使用Bartik,它也能按預期工作。在這個例子中,只有「你好2」顯示在導航:

function helloworld_menu(){ 
    return array(
     'hello1' => array(
      'title'    => 'Hello 1', 
      'page callback'  => 'helloworld_page_callback', 
      'access arguments' => array('content'), 
      'type'    => MENU_CALLBACK 
     ), 
     'hello2' => array(
      'title'    => 'Hello 2', 
      'page callback'  => 'helloworld_page_callback', 
      'access arguments' => array('content') 
     ) 
    ); 
} 

function helloworld_page_callback(){ 
    return array('#markup'=>'The quick brown fox says hello, and the lazy dogs thanks you for following conventions.'); 
} 

順便說一句,有一個在您snipplet一個錯字(helloroute_menu應命名爲helloworld_menu),但我認爲這是由於在發佈到StackOverflow之前編碼簡化。

+0

糾正錯字,謝謝! – 2011-03-02 17:45:10

+0

並感謝您的信息。它絕對是一個緩存的地方。如果將我的路線更改爲不同的名稱(helloworld to helloworld2),則新路線不同的名稱將不具有菜單。只有當我有一個默認導航鏈接的菜單項,我試圖改變它不工作。 (即使打電話給drush的cc all,這又是另一個問題了)。感謝您的理智檢查! – 2011-03-02 18:32:15

+0

不客氣:)順便說一句,有趣的「快速棕色狐狸」填充文本,我一開始並沒有注意到它不是通常的報價:D – wildpeaks 2011-03-02 23:26:12

4

查看菜單管理中的菜單鏈接。如果您在那裏定製它(例如重量變化),即使您設置爲回撥類型,它仍有可能仍然存在。

如果是這種情況,您可以在那裏刪除。

+0

+1(一如既往)的好信息。它看起來像是一個緩存的東西。 – 2011-03-02 18:32:45

相關問題