メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのメニュータブ追加はMENU_LOCAL_TASKとMENU_DEFAULT_TASK_MENUの組み合わせ

Drupalのメニュータブ追加はMENU_LOCAL_TASKとMENU_DEFAULT_TASK_MENUの組み合わせ

drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
drupal
views

やりたいこと:モジュール(Views)で複数同一カテゴリのページをMenu Tabで表示

  • 同一カテゴリで複数違うページをメニュータブがで表示するのはWeb UIデザインでよく利用しています
  • 例えば:記事一覧(Articles)に、注目記事(Main Tab Article)と一般記事(Sub Tab Article)をメニュータブで表示します
  • モジュールViewsでこの構造を生成するのは非常簡単ですが、仕組みが曖昧で、わかりずらいです

Menu Tab利用の基本不可欠条件: 同じルートパス+二つ以上のタブ

  • Menu Tapのある複数のページは同じルートパスが必要となります
  • 例: /articles はメインメニューのパスで、Mnue Tabのパスはこのパスをルートパスにする必要はあります
    • Main Tapは: /articles/main
    • Sub Tabは: /articles/sub
  • タグは必ず二つ以上が必要となります
    • 一つを設定された場合、Menu Tabが表示されません

作成手順:ルートパスページ+Menu Tabページ

  • ルートパスのページを最初に作成
    • パス:/articles
    • Menu Item Entity: Normal Menu (Main Menu、Navigationなどを任一選択)
    • フィルタ: 表示したい内容を適切にフィルタします
  • Main Tabページの作成
    • パス:/articles/main
    • Menu Item Entity:Default Menu Tab (Default tab Options: Already exists ➡ 上記ステップで作成したメニューをリンクします)
    • フィルタ: なにもしなくても良いです
  • Sub Tabページの作成
    • パス:/articles/sub
    • Menu Item Entity: Menu tab (Menuのところになにも選択しなくてよいです)
    • フィルタ: 表示したい内容を適切にフィルタします
  • 上記設定で、Menu Tabが表示されるはずです

Main Tabで設定されたページが実は利用されていない

  • 理解しずらい点で、上記ステップで作成したMain tab(/articles/main)ページが実際にMenu Tabで表示されていない
  • パスで確認して: Main Tabのパスは: /articles であって、Main Tabのページではないです
drupal
menu

Drupalのメニュータブを作成するにはMENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせ

  • Drupalのモジュール(Views、Panelsなど)でメニュータブの作成ができます
    • 例:分かりずらいDrupalでのViewsにあるMenu Tabの利用
  • プログラミングでメニュータブを作成するには、意外に簡単で、少しわかりずらいです
    • 例: 以下のパスでタブを作成したいです
    • path/%example  => データ(example)の表示画面
    • path/%example/view => データの表示タブ
    • path/%example/edit => データの編集タブ
  • タブを作成するには、最低2ページ(例:view, edit)の定義が必要
  • hook_menuか、hook_menu_alterでタブを作成します
    /**
     * Implements hook_menu().
     */
    function YOUR_MODULE_menu(){
     $items['path/%example'] = array(
       'title' => t('View'),
       'page callback' => 'view_callback_function',
       'access arguments' => array('access args'),
     );
    
     $items['path/%example/view'] = array(
       'title' => t('View'),
       'type' => MENU_DEFAULT_LOCAL_TASK, // タブ: 'ビュー'
     );
    
     $items['path/%example/edit'] = array(
       'title' => t('Edite'),
       'page callback' => 'edit_callback_function',
       'access arguments' => array('access args'),
       'type' => MENU_LOCAL_TASK        // タブ: '編集'
     );    
     return $items;
    }
    
  • タブの作成結果は以下のようなイメージ
    MENU_LOCAL_TASKとMENU_DEFAULT_LOCAL_TASKの組み合わせでメニュータブ作成p

MENU_DEFAULT_LOCAL_TASKがコールバックなしで親ディレクトリのものを継承します

  • メニュータブの構成にわかりずらいのは、MENU_DEFAULT_LOCAL_TASKの部分です
    • hook_menu()で三つのURIを定義しています: path/%example、 path/%example/view、 path/%example/edit
    • 実際に二つの画面になっています
  • MENU_DEFAULT_LOCAL_TASKが親ディレクトリ(path/%example)の”page callback”を継承しています
  • MENU_DEFAULT_LOCAL_TASK自身が"page callback"定義はありません
  • 結果としては親ディレクトリの画面とMENU_DEFAULT_LOCAL_TASK画面のものは同じです
    • path/%example と path/%example/view にアクセスすると同じ画面が表示されます
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)