WordPressユーザーのbaserCMS覚え書き


グローバルメニューを取得する

WordPress

該当する関数(テンプレートタグ)はありません。同様のはたらきをする関数に wp_nav_menu() があります。

テンプレートタグ/wp nav menu - WordPress Codex 日本語版

baserCMS(2系)

$bcBaser->getMenus()

[getMenus] グローバルメニューを取得する|baserCMS 2系関数リファレンス

baserCMS(3系)

$this->BcBaser->getMenus()

[getMenus] グローバルメニューを取得する|baserCMS 3系関数リファレンス

メモ

baserCMS管理画面の[システム管理]-[メニュー管理]にて登録したメニュー項目を取得する関数です。

たとえば、3系をインストールした直後の状態で

<?php $foo = $bcBaser->getMenus(); var_dump($foo); ?>

というコードをテーマファイルで実行させた結果は下のようになります。

array(7) {
  [0]=>
  array(1) {
    ["Menu"]=>
    array(9) {
      ["id"]=>
      string(1) "1"
      ["no"]=>
      string(1) "1"
      ["name"]=>
      string(9) "ホーム"
      ["link"]=>
      string(1) "/"
      ["menu_type"]=>
      string(7) "default"
      ["sort"]=>
      string(1) "1"
      ["status"]=>
      bool(true)
      ["created"]=>
      string(19) "2013-11-29 00:30:41"
      ["modified"]=>
      NULL
    }
  }
  // 中略
  [6]=>
  array(1) {
    ["Menu"]=>
    array(9) {
      ["id"]=>
      string(1) "6"
      ["no"]=>
      string(1) "6"
      ["name"]=>
      string(18) "サイトマップ"
      ["link"]=>
      string(8) "/sitemap"
      ["menu_type"]=>
      string(7) "default"
      ["sort"]=>
      string(1) "7"
      ["status"]=>
      bool(true)
      ["created"]=>
      string(19) "2013-11-29 00:30:41"
      ["modified"]=>
      NULL
    }
  }
}

取得結果は配列となるので、HTMLとして出力する場合はPHPの foreach() などを使っての処理が必要となります。/lib/Baser/View/Elements/global_menu.php(3系) /baser/views/elements/global_menu.php(2系)にひな形があるので、独自のテーマを作りたいときはこれをもとにするとよいのではないでしょうか。

なお、WordPressの wp_nav_menu() と baserCMSの getMenus() とでは、前者が「出力系命令」後者が「取得系命令」という違いがあります。また、前者は functions.php での定義により複数設定できますが、後者は1つしか設定できない(=あくまでもグローバルメニュー用途)という違いもあります。