Navigation Manager - Navman プラグイン

バージョン: 0.2.0

作成者: Yoshinori Tahara - dengen

公開日: 2010.10.11

ライセンス: GPL v2

概要:

機能:

条件:

注意:

この説明のセクション:

1) インストール

インストールには、手動でプラグイン用のディレクトリを作成し、適切なディレクトリへファイルをコピーする必要があります。

以下の説明で、

を表しています。

Step 1 - データベースのバックアップ

Step 2 - アーカイブの展開

Step 3 - 必要なディレクトリの作成

Step 4 - 必要なファイルのコピー

Step 5 - プラグインエディタでインストールの実行

Step 6 - テンプレートの編集

<body dir="{direction}">
    <div class="header-navigation-container clearfix">
        <ul>
            {menu_elements}
        </ul>
    </div>
    <div class="header-logobg-container-inner">
        <a class="header-logo" href="{site_url}/" rel="home">
            <img src="{site_logo}" width="151" height="56" alt="{site_name}"{xhtml}>
        </a>
        <span class="header-slogan">{site_slogan}</span>
    </div>
    {header_navigation} <!-- ここに、ヘッダーメニュー用のテンプレート変数を挿入します -->
    <table cellspacing="0" cellpadding="0" style="width:100%;">
        <tr>
            {left_blocks}
            <td class="story-container">
                {breadcrumbs} <!-- ここに、パンくずリスト用のテンプレート変数を挿入します -->
                <p class="header-welcomeanddate-text">
                    <b>{welcome_msg_jp}</b><br{xhtml}>{datetime}
                </p>

                <!-- START OF CONTENT AREA -->

Goto Top

2) アップグレード

アップグレードの前に、必ずNavman プラグインのアーカイブ内の UPGRADE_ja を参照してください。

Step 1 - データベースのバックアップ

Step 2 - PHPフィルターとテンプレートのバックアップ

Step 3 - アーカイブの展開

Step 4 - ファイルの置き換え

Step 5 - PHPフィルターとテンプレートの復元

Step 6 - プラグインエディタで更新の実行

Goto Top

3) アンインストール

Step 1 - データベースのバックアップ

Step 2 - プラグインエディタでアンインストールの実行

Step 3 - テンプレートを元にもどす

Step 4 - ディレクトリの削除

Goto Top

4) 多階層メニュー

本プラグインを導入することにより、Geeklogサイトに多階層メニューを設置することができます。その簡略化したイメージは下図のようなものです。

ナビゲーションは一つのメニューアイテムグループと関連づけられています。

メニューアイテムグループには、複数のメニューアイテムが属しています。

メニューアイテムは、親アイテムIDという情報を持ち、それによりメニューアイテム間の親子関係を設定します。

これらのデータを基に入れ子構造のリストのHTMLを出力します。

ナビゲーションやメニューアイテムのデータには、IDに加えて、スタイルシートのクラス名を持たせることができます。これらをHTMLに組み込み、スタイルシートを用いることにより、ドロップダウンメニューなど自由なデザイン・レイアウトのメニューをブラウザに表示させることができます。

Header Navigation

Goto Top

5) パンくずリスト

本プラグインを導入することにより、Geeklogサイトにパンくずリストを設置することができます。その簡略化したイメージは下図のようなものです。

データの構成は多階層メニューのものと全く同じですが、パンくずリスト専用のレンダーにより評価・出力します。パンくずリスト専用のレンダーは、多階層メニューのレンダーとはメニューアイテムデータの評価内容が異なります。

パンくずリストの出力では、カレントURLと、メニューアイテムのURL照合文字列がマッチしたとき、そのメニューアイテムがパンくずリストの最右端の要素として取扱われます。

パンくずリストの最右端の要素となるメニューアイテムから、親アイテムIDを順々に辿って、パンくずリストを生成します。

親アイテムIDが未設定のメニューアイテムは、ホームページ(トップページ)にぶら下がっているものと見なされます。(このためパンくずリスト用のホームページ(トップページ)のメニューアイテムは存在しません。)

パンくずリストでは、カレントURLから読み取れる情報を基にして、メニューアイテムのタイトルやURLを動的に生成する必要があるため、PHPフィルターの活用が必須となります。このため、パンくずリストのメニューアイテムを作成する場合には、Geeklogシステムや、PHP、MySQLの知識がある程度必要となります。

しかし、記事や掲示板など主要なプラグインのデータはあらかじめ登録済みのため、比較的容易に導入できると思います。

Breadcrumbs

Goto Top

6) ナビゲーションの管理

ナビゲーションの編集で設定する項目を以下に示します。

項目 説明
ナビゲーション名 ナビゲーションの名前を設定します。
ナビゲーションID ナビゲーションのIDを設定します。半角英数、ハイフン、アンダーラインを用います。ナビゲーションIDの重複は許されません。
メニューアイテムグループ ナビゲーションに関連づけるメニューアイテムグループを選択します。
メニューアイテムグループは コンフィギュレーション / ナビゲーション で編集可能です。
有効 ナビゲーションの有効/無効を切り替えます。システムへの負荷を抑えるため、使用しないナビゲーションは無効にすべきです。
レンダー レンダーを選択します。今のところ、レンダーは次の2つがあります。
[多階層メニュー] : 複数の階層をもったメニューを生成します。
[パンくずリスト] : パンくずリスト(階層構造の上位ページへのリンクのリスト)を生成します。
レンダリングの対象 ナビゲーションを何処に展開するかを指定します。
[ヘッダー] : テンプレート header.thtml の中に展開します。
[フッター] : テンプレート footer.thtml の中に展開します。
[ブロック] : PHPブロックに展開します。
クラス名 テンプレート変数 {navi_class_property} または {navi_class_name} を使って出力するクラス名を設定します。
スタイルシート ( navman.css ) 内でこのクラス名を有効に活用して、ナビゲーションのスタイルを自由かつ大胆に変えて下さい!
順序 ナビゲーションリストにおける順番を指定します。レンダリングの順番にも影響します。なお、自動的に10づつの値に調整されます。
PHPフィルター名 PHPフィルターの名前を指定します。
PHPフィルターはナビゲーションのデータが評価される直前に実行されます。
PHPフィルターの関数名が "phpfilter_abcd" の場合は、"abcd" を指定します。スペースで区切って複数指定が可能です。
ある条件によって、メニューアイテムグループやクラス名を変更するPHPフィルターを用意するとおもしろいかも。
URL照合文字列 URLと比較する文字列を指定します。
表示中のページのURLがこの文字列とマッチした場合に、このナビゲーションがレンダリングされます。
空欄の場合は、URL照合を行いません。
モード URL照合文字列の動作モードを選択します。
[部分一致] : 部分的に一致した場合にマッチしたと見なします。
[完全一致] : 完全に一致した場合にマッチしたと見なします。
[正規表現] : 正規表現でマッチングを行います。
[正規表現]モード以外では、"[site_url]" 及び "[site_admin_url]" のマクロが使用できます。
テンプレート名 ナビゲーションのレンダリングに用いられるテンプレートの参照先をディレクトリ名で指定します。
'default' は <public_html>/navman/templates/default と対応します。
テンプレート変数名 テンプレートに埋め込むテンプレート変数名を選択します。
テンプレート変数名は コンフィギュレーション / ナビゲーション で編集可能です。

Goto Top

7) メニューアイテムの管理

メニューアイテムの編集で設定する項目を以下に示します。

項目 説明
メニューアイテムグループ メニューアイテムが所属するニューアイテムグループを指定します。
タイトル(固定) メニューアイテムのタイトルを指定します。サイトの言語モードの変更にかかわらず表示は固定です。
多言語サイトを構築しない場合は、この指定だけで十分です。
タイトル(可変) メニューアイテムのタイトルを指定します。サイトの言語モードの変更に応じて表示は変化します。
多言語サイトを構築する場合に有用です。
ここでは言語ファイル内で定義されている配列変数を指定します。
例えば、$MY_WORD['label'] をタイトルにする場合は MY_WORD['label'] を設定します。
有効 メニューアイテムの有効/無効を切り替えます。
有効/無効にするとメニューアイテムは表示/非表示が切り替わります。
URL メニューアイテムのリンク先URLを指定します。
"[site_url]" 及び "[site_admin_url]" のマクロが使用できます。
メニューアイテムID メニューアイテムのIDを設定します。半角英数、ハイフン、アンダーラインを用います。メニューアイテムIDの重複は許されません。
親アイテムID 多階層メニューの階層構造を定義するため、メニューアイテムの親に相当するメニューアイテムのメニューアイテムIDを選択します。
クラス名 テンプレート変数 {class_property} または {menuitem_class} を使って出力するクラス名を設定します。
スタイルシート ( navman.css ) 内でこのクラス名を有効に活用して、ナビゲーションのレイアウトやデザインを自由かつ大胆に変えて下さい!
話題 話題を選択します。話題により表示/非表示を切り替えたい場合に使用します。
  • [すべて] : 話題に関わらずメニューアイテムを表示します。
  • [ホームページのみ] : ホームページだけメニューアイテムを表示します。
順序 メニューアイテムの表示の順序を整数値で指定します。なお、自動的に10づつの値に調整されます。
タイプ タイプは編集できません。
メニューアイテムは内部的に "Geeklog Default"、"Plugins"、"Custom" の3タイプに分類されています。
PHPフィルター名 PHPフィルターの名前を指定します。
PHPフィルターはメニューアイテムのデータが評価される直前に実行されます。
PHPフィルターの関数名が "phpfilter_abcd" の場合は、"abcd" を指定します。スペースで区切って複数指定が可能です。
PHPフィルターにより、メニューアイテムのタイトルやリンク先URLを動的に変更することが可能です。
URL照合文字列 URLと比較する文字列を指定します。
表示中のページのURLがこの文字列とマッチした場合に、このメニューアイテムがレンダリングされます。
空欄の場合は、URL照合を行いません。
モード URL照合文字列の動作モードを選択します。
[部分一致] : 部分的に一致した場合に、結果は真となります。
[完全一致] : 完全に一致した場合に、結果は真となります。
[正規表現] : 正規表現でマッチングを行います。
[正規表現]モード以外では、"[site_url]" 及び "[site_admin_url]" のマクロが使用できます。
静的ページID 静的ページIDを設定します。
このメニューアイテムを静的ページのパンくずとして使用する場合などに設定します。
アイコンURL テンプレート変数 {menuitem_icon_url} を使って出力する画像データのURLを設定します。

Goto Top

8) コンフィギュレーション

Navman プラグインの設定は、「管理者用メニュー - コンフィギュレーション - ナビゲーション」から変更できます。

ナビゲーションのメイン設定

項目 説明
IDに付加するプレフィックス ナビゲーションのIDに付加するプレフィックス文字列を設定します。
ナビゲーションのIDは、テンプレート変数{nid}に出力されます。
初期値 : 'navmitem-'
自動タグ名 自動タグ名を設定します。
初期値 : 'navi'
テンプレート変数 ナビゲーションをテンプレートに埋め込むときに用いるテンプレート変数を定義します。
初期値 : 'header_navigation', 'footer_navigation', 'breadcrumbs'
メニューアイテムグループ メニューアイテムグループを定義します。
ナビゲーションとメニューアイテムは、このメニューアイテムグループを介して関連づけます。
テーマのテンプレートを使う 'はい' にすると、<public_html>/layout/theme/navman を探し、見つかった場合は、その中のテンプレートとスタイルシートを用いてレンダリングします。
あなたのテーマに最適化されたテンプレートとスタイルシートを作成してください。
初期値 : 'いいえ'

パンくずリストの表示

項目 説明
パンくずリストを有効にする 'はい' にすると、パンくずリストが有効になります。
別途、レンダーを「パンくずリスト」に設定したナビゲーションの用意とテンプレート変数の埋め込みを行う必要があります。
初期値 : 'はい'
カレントのパンくずにリンクを張る 'はい' にすると、現在表示中のページのパンくず(右端のパンくず)にリンクを張ります。
初期値 : 'いいえ'
ホームでパンくずを表示する 'はい' にすると、ホームページ(トップページ)でパンくずを表示します。
初期値 : 'はい'
ホームのタイトルを変更したい場合は、言語ファイル(日本語用は japanese_utf-8.php )の$LANG_NAVM['label_home']の値を変更してください。

メニューアイテムのデフォルトパーミッション

項目 説明
パーミッション[0] 所有者のパーミッションを設定します。この値がメニューアイテム作成時の初期値となります。
初期値 : 表示・編集
パーミッション[1] グループのパーミッションを設定します。この値がメニューアイテム作成時の初期値となります。
初期値 : 表示
パーミッション[2] メンバーのパーミッションを設定します。この値がメニューアイテム作成時の初期値となります。
初期値 : 表示
パーミッション[3] ゲストのパーミッションを設定します。この値がメニューアイテム作成時の初期値となります。
初期値 : 表示

Goto Top

9) 多言語切り替え機能

ユーザの言語設定に応じて、単にナビゲーションのタイトルの言語を切り替えたい場合は、メニューアイテムの「タイトル(可変)」を設定してください。

ナビゲーションのタイトルの言語に加えて、リンク先まで切り替える場合は、以下に説明する「多言語切り替え機能」を利用してください。

本プラグインではGeeklog1.5.1から追加された「ブロックの多言語切り替え機能」と同様の機能をサポートします。

「ブロックの多言語切り替え機能」の詳細については以下のWikiを参照してください。

一例として、英語と日本語を切り替える場合の使用方法を示します。

about
about_en
about_ja
about        有効
about_en     無効
about_ja     無効

Goto Top

10) テンプレート

本プラグインのテンプレートは、<public_html>/navman/templatesに配置されています。

このうちナビゲーションの表示に用いられるテンプレートおよびスタイルシートは、<public_html>/navman/templates/defaultに配置されています。

例えば、ナビゲーション「Header Navigation 1」のテンプレート名は 'default' となっていますが、これは「 <public_html>/navman/templates/default のテンプレートを使用する」という意味になります。

この仕組みにより、オリジナルのテンプレートおよびスタイルシートを作成し、新しいスタイルのナビゲーションを追加することが可能です。

また、テーマに固有のナビゲーションを用意することが可能です。そのための方法を次に示します。

ナビゲーションごとに次のテンプレート変数をサポートします。

テンプレート変数名 説明
{nid} ナビゲーションID (スタイルシートのIDとして使用します。)
{navi_class_name} ナビゲーションのクラス名 (スタイルシートのクラス名として使用します。例:'navi_001')
{navi_class_property} ナビゲーションのクラスプロパティ (スタイルシートのクラスプロパティとして使用します。例:'class="navi_001"')

また、メニューアイテムごとに次のテンプレート変数をサポートします。

テンプレート変数名 説明
{menuitem_url} メニューアイテムのリンク先URL
{menuitem_text} メニューアイテムのタイトル
{menuitem_id} メニューアイテムのID (スタイルシートのIDとして使用します。)
{menuitem_class} メニューアイテムのクラス名 (スタイルシートのクラス名として使用します。例:'last')
{class_property} メニューアイテムのクラスプロパティ (スタイルシートのクラスプロパティとして使用します。例:'class="last"')
{menuitem_icon_url} メニューアイテムのアイコンとして用いる画像のURL
{level} メニューリストの階層の深さを示す値。トップレベルは '1' です。
{class_level} メニューリストの階層の深さを示すクラス名。トップレベルは 'level1' です。

Goto Top

11) ブロックメニュー

ブロックメニュー(左右サイドバーにブロックとして表示されるメニュー)のサンプルデータがあらかじめ登録済みです。以下にブロックメニューの設置手順を示します。

ナビゲーション管理画面で、ナビゲーション「Block Navigation」を有効にします。

次にブロック管理画面で、ブロックを次のように作成します。

これで、準備できました。

Goto Top

12) PHPフィルター

PHPフィルターはナビゲーションやメニューアイテムのデータを動的に設定・変更するために用意された仕組みです。

PHPフィルターは<geeklog_dir>/plugins/navman/filters.phpに記述します。

あらかじめ登録されたサンプルデータから呼び出されるPHPフィルター群が既に記述されています。

PHPフィルターは、'phpfilter_'で始まる名前のPHP関数です。

PHPフィルターは、ナビゲーションやメニューアイテムの情報が格納された配列変数を、参照渡しで受け取り、必要な処理を行います。

Goto Top

13) 自動タグ

ナビゲーションを自動タグ(Autotag)を使用して出力することができます。

静的ページにこの自動タグを埋め込んで、センターエリア内にナビゲーションを表示することを想定しています。

タグ書式: [navi:ナビゲーションID]

例: [navi:global_navi_1]

Goto Top

14) 著作権について

本作品で、削除および矢印アイコンとして使用している delete.png, arrow-dn.png, arrow-up.pngは Joseph North さんの著作物です。
ライセンスは次のリンクをご覧ください。

Sweetie Icon Set
----------------
Author: Joseph North
Email: sublick@gmail.com
License: Creative Commons Attribution-ShareAlike 2.0
Year: 2005

本作品で、Navmanプラグインアイコンとして使用している navman.png (オリジナル名は Safari.png) は Fast Icon さんの著作物です。
ライセンスは次のリンクをご覧ください。

iComic Applications Icons Set
----------------
Author: Fast Icon
HomePage: http://www.fasticon.com
License: Commercial usage: Allowed license.txt

Goto Top

15) 改訂履歴

バージョン 公開日 説明
0.2.0 2010.10.11 Mediagalleryプラグイン及びDownloadsプラグインのパンくずリストに対応。
0.1.1 2010.3.8 修正 URL照合文字列を正規表現で設定したメニューアイテムを、更新した直後にクラッシュする問題を修正。
0.1.0 2009.6.15 初期バージョン

Goto Top