HeaderMenu

提供: GeeklogJpWiki

[3]運用方法 > クイックハウトゥー > ヘッダメニューの順番と表示・非表示設定

目次

ヘッダメニューの順番と表示・非表示設定

ヘッダには、通常例えば以下のようにメニューが表示されます。

  • ホーム
  • ログイン/ログアウト(カスタムメニュー)
  • メッセージ(カスタムメニュー)
  • カレンダー
  • 記事一覧
  • FAQ(プラグイン)
  • 掲示板(プラグイン)
  • ダウンロード(プラグイン)
  • リンク(プラグイン)
  • アンケート(プラグイン)
  • 他追加したプラグイン

これらの表示設定は、コンフィギュレーションファイルで行います。

$_CONF['menu_elements'] = array
(
       'home',         // ホーム 
       'custom',       // カスタムメニュー lib-custom.php参照
    // 'contribute',   // 記事を書く
       'calendar',     // カレンダ 
    // 'search',       // 複雑な検索
    // 'stats',        // アクセス情報
       'directory',    // 記事一覧
    // 'prefs',        // アカウント情報
       'plugins'       // プラグイン 変数{plg_menu_elements}に該当
);

このように、コメントアウトしたり、順番をここで変更することが可能です。

カスタムメニュー

デフォルトでは、カスタムはコメントアウトされていますが、有効にする場合には、lib-custom.phpを次のように変更してください。

lib-custom.phpには、多くのサンプル関数が用意されています。 function CUSTOM_menuEntries ()が、カスタムメニューで呼ばれるメニューです。 lib-custom.php日本語版では、その関数をコメントアウトしたものを配布しています。以下のコメントアウトをはずしてsystem/custom/custom_menuEntries.phpを有効にしてください。

これで、ログイン前には、「ログイン」ログイン後には、「ログアウト」と「メッセージ」メニューが表示されます。「メッセージ」メニューは、Geeklog Japaneseで配布しているプライベートメッセージプラグインのメッセージのメニューです。

//@@@@@ custom_menuEntries
require_once( 'custom/custom_menuEntries.php');

system/custom/custom_menuEntries.php には、次のように記述してください。

<?php

function CUSTOM_menuEntries ()
{
    global $_CONF, $_PLUGINS, $_USER, $LANG_PMSG, $_PMSG;

    $myentries = array();

    if (!empty ($_USER['uid']) && ($_USER['uid'] > 1)) {
        //ログアウト
        $myentries[] = array ('url'   => $_CONF['site_url']
                                         . '/users.php?mode=logout',
                              'label' => 'ログアウト');
		if (in_array('privmessages', $_PLUGINS)) {
			if (!in_array($_USER['uid'], $_PMSG['banned_users'])) {
				$num_new = getNumNewMessage($_USER['uid']);
				if ($num_new > 0) {
					$label = "<b>{$LANG_PMSG['custom_label_with_new']}</b>";
				} else {
					$label = $LANG_PMSG['custom_label_without_new'];
				}
				$myentries[] = array (
					'url'   => $_CONF['site_url'] . '/privmessages/index.php?mode=incoming',
					'label' => $label
				);
			}
		}
    } else {
        //ログイン
        $myentries[] = array ('url'   => $_CONF['site_url']
                                         . '/users.php?mode=login',
                              'label' => 'ログイン');
	}

    return $myentries;
}
?>

応用事例

ヘッダメニューをブロックへ移す

ヘッダではなく、ブロックでヘッダのメニューを表示させる場合には、GeeklogのPHPソースURLリストを参照して、該当のURLを探します。

ブロックは以下のように記述してください。

<a href="/stats.php">アクセス情報</a>

ブロックの作成モードはノーマルブロックにして、HTMLタグを記述します。

さらにこのノーマルブロックを、管理者だけに表示させたいのなら、パーミッションを、所有者だけ、あるいは所有者とグループの編集・閲覧権限(E・R)だけチェックして、メンバー、ゲストユーザの閲覧権限(R)をはずします。

プラグインメニュー

プラグインメニューは、変数{plg_menu_elements}としてヘッダテンプレートに渡されています。ここで非表示にして、{plg_menu_elements}をヘッダテンプレート(header.thtml)の希望の場所に置くことで自由な場所にプラグインを表示できます。

個々のプラグインのコンフィギュレーションファイルで、ヘッダにメニューリンクを置くかどうか選ぶことができます。

個人用ツール