6

ナビゲーションリンクを自動的にレンダリングしない新しいルート/メニューをDrupalで作成するにはどうすればよいですか?

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;
}

これにより、次のサイトのURLが正常に公開されます。

http://example.drupal.com/helloworld

ただし、左側(Bartik)のナビゲーションメニューには、

'type'              => MENU_CALLBACK

では、なぜこれが機能しないのですか?メニュー項目を正しく設定していますか?より可能性の高い質問:メニュータイプの定数/システムの使用をどのように誤解していますか?それをクリアするための追加のキャッシュはありますか

drush cc all

世話をしませんか?これをデバッグするために他にどのような手順を実行できますか?

4

2 に答える 2

6

Bartikを使用しても、期待どおりに機能するため、他に何か問題があるはずです(おそらく、キャッシュをクリアするのを忘れましたか?)。この例では、ナビゲーションに「Hello2」のみが表示されています。

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.');
}

ちなみに、スニペットにはタイプミスがあります(helloroute_menu名前を付ける必要がありますhelloworld_menu)が、これはStackOverflowに投稿する前のコードの単純化によるものだと思います。

于 2011-03-02T17:03:59.823 に答える
4

メニュー管理のメニューリンクを確認してください。そこでカスタマイズした場合(たとえば、重みの変更)、コールバックに入力するように設定しても、そのまま残る可能性があります。

その場合は、そこで削除できます。

于 2011-03-02T17:19:55.937 に答える