ホームページ >ウェブフロントエンド >htmlチュートリアル >Drupal 7 モジュール開発 モジュール作成 最初のページ (hook_menu)_html/css_WEB-ITnose

Drupal 7 モジュール開発 モジュール作成 最初のページ (hook_menu)_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:50:351196ブラウズ

モジュールを作成するには、「Drupal 7 モジュールの開発と作成」を参照してください

中国語をサポートしたい場合は、ファイル形式を UTF-8、NO BOM として保存する必要があります

---------- ----------------------- ---------------

hook_menu はメニュー項目とページのフィードバックを定義します。

フックを独自のモジュール名に置き換える必要があります。ここでは、my_first_module.module ファイルに my_first_module_menu() を作成します

<?phpfunction my_first_module_menu() {  $items = array();    $items['mypage'] = array(    'title' => '第一个模块 ?? 页面', //菜单项的名称    'description' => '我的第一个模块页面', //当鼠标移动到菜单项,显示菜单的说明    'page callback' => 'my_page_view', //产生页面内容    'access callback' => TRUE, //所有人都能访问    'type' => MENU_NORMAL_ITEM, //菜单项显示类型  );    return $items;}function my_page_view() {  $output = t('这是模块做的第一个页面。');  return $output;}

注: ?>

とは書かないでください

キャッシュをクリアしてから http://www.mysite.com/?q=mypage にアクセスしてください。下の図を参照してください

(実際には、http://www.mysite.com/?q=mypage/aaa/bbb にアクセスすると、このページにアクセスします)

$items[] パス

  • $items は最初に [ ] でパスを定義します。 /mypage ページにアクセスするときに、my_page_view 関数を呼び出してページを生成します
  • 各 $items は [ ] で記述されたパスに対応します。項目が同じパスを使用する場合は、呼び出しの後に $items を記述します。 (一部の記事では、これが $items のパラメーターの重みに関係していると書かれています。重みが順序に影響しないことをテストしました)

  • [ ] ワイルドカードも使用できます (例: [node/%/edit])。詳細については、次を参照してください: パスのワイルドカード関数hook_menuのセクション

  • title 必須

    未翻訳のテーマ

    titleコールバック

    テーマを生成する関数。デフォルトは t() です。翻訳したくない場合は、FALSE を設定してください ('title' => t('First Form') と書く必要はありません)

    title 引数

    t() または の引数に渡します。カスタム関数。パスコンポーネントと組み合わせることができます
    参考: メニュー項目のタイトルと説明のコールバック、ローカリゼーション

    説明

    未翻訳の説明。

    ページ コールバック

    ユーザーがページ パスにアクセスすると、Web ページを表示する関数を呼び出します。

    書かれていない場合は、親メニューのコールバック関数が代わりに実行されます。つまり、$items['mypage'] と $items['mypage/child'] は同じコンテンツを実行します。

    フォーム (Form) を作成、検証、送信するための特別なコールバック関数 drupal_get_form() が後で Drupal 7 モジュールで開発されます。具体的には

    ページ引数

    ページのコールバック関数に渡されます。 上記の例では文字列パラメーターの配列は使用されていません。少し変更してみましょう:

  • $items を変更すると、パスは $items['mypage/%/edit'] になります。これは、mypage/ にアクセスするときを意味します。 1/edit、または mypage/ 2/edit など、この関数を実行します
  • ページ引数を追加します: 'page argument' => array('hello', 1),
    'hello' は定数として $arg1 に渡されます
    1 は、パス mypage の背後にある最初のレイヤーを表します。 mypage/1/edit にアクセスすると、戻り値は 1 になります。 mypage/world/edit にアクセスすると、戻り値は world になります
  • 関数 my_page_view、関数 my_page_view($ arg1, $arg2)
  • 変更後の完全なコードは次のとおりです:

    <?phpfunction my_first_module_menu() {  $items = array();    $items['mypage/%/edit'] = array( //修改路径    'title' => '第一个模块 ?? 页面',    'description' => '我的第一个模块页面',    'page callback' => 'my_page_view',    'page arguments' => array('hello', 1), //添加参数    'access callback' => TRUE,    'type' => MENU_NORMAL_ITEM,  );    return $items;}function my_page_view($arg1, $arg2) { //添加参数传递  $output = t('这是模块做的第一个页面。');  $output .= '<br />' . $arg1 . ' ' . $arg2; //打印参数  return $output;}


    キャッシュをクリアし、http://www.mysite.com/?q=mypage/world/edit にアクセスします。次の画像

    アクセスコールバック

    このページへのアクセス権がある場合はTRUEを返す必要があり、それ以外の場合はFALSEを返します(書かれていない場合、デフォルトはFALSEです)。 false の場合、ページに アクセスが拒否されました プロンプトが表示されます。

    type

    メニュー項目のプロパティを説明するコード。多くのショートカット コード定数が menu.inc にあります。

    ここではデフォルトの項目 MENU_NORMAL_ITEM を使用するため、$items => MENU_NORMAL_ITEM,

    に 'type' を記述する必要はありません

    一般的に使用されるもの:

  • MENU_NORMAL_ITEM、ナビゲーション メニュー リストの下に表示されます。管理者は、ドラッグして移動または非表示にすることができます
  • MENU_SUGGESTED_ITEM は、デフォルトの状態が無効であり、管理者が手動で有効にする必要がある点を除いて、MENU_NORMAL_ITEM と同じです
  • MENU_CALLBACK はメニューとパンくずリストを生成しません。パスを登録し、そのパスにアクセスしたときに対応する関数を実行するだけです。通常は API によって呼び出されます。
  • MENU_LOCAL_ACTION 親メニューには、次のステップをガイドするリンクが表示されます。例: メニューを追加します
  • MENU_LOCAL_TASKはリンクとしても使用されますが、通常はタグ(TAB)形式で表示されます
  • MENU_DEFAULT_LOCAL_TASKはMENU_LOCAL_TASKと同様のタグ(TAB)ですが、デフォルトのタグです。親メニューのパスと同じです (このアイテムのパスは単に親メニューを意味します)
  • さらに詳しく知りたい場合は、ディレクトリ内の /modules/menu/menu.modules ファイルを開いて、http と結合します。理解を助けるために、://www.yoursite.com/?q=admin/ Structure/menu /manage/navigation

    menu_name

    このメニュー項目をナビゲーションの下に置きたくない場合は、ここで指定できます。例: 'menu_name' => 'main-menu'、これはホーム

    とともにメイン メニューに表示されます (パラメータは徐々に改善されます)


    ??
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。