show_menu2、バージョン4.9x
Show_Menu2は、CMS WebsiteBakerのコードスニペットです。 WebsiteBaker2.7以来、それはCMSに含まれています。
以前のshow_menu関数は完全に置換され、show_menu2に拡張されます。 メニューの作成に必要なすべてのデータは、単一のデータベースクエリによって生成されます。 生成されたHTMLコードの広範な調整の可能性により、すべての可能なメニュータイプ(リスト、ブレッドクラム、サイトマップなど)。 が生成される。
- インストール
- Show_Menu2を使用して
- FAQ
- 関数
- HTML出力
- パラメータ
- 詳細オプション
- 書式文字列
- 条件付き書式設定
- フォーマッタ
installationup
show_menu2は通常websitebakerに存在するため、インストールは必要ありません。 期待に反して、それが存在しない場合は、ここでダウンロードできます。
Show_Menu2Upの使用
show_menu2を使用するには、メニューを表示するテンプレートを変更する必要があります。 注意:古いメニュー呼び出しを置き換える場合は、show_menu2が必要とする対応する新しいパラメータも使用する必要があります。
ほとんどの場合、show_menu2の少なくとも4つのパラメータを持つ標準呼び出しで十分です。 この場合、デフォルト値が使用され、現在のページと現在のページのサブページを表示するメニューが作成されます:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
注意:show_menu2の呼び出しはPHPであり、通常はPHPコード文字で囲む必要があります(呼び出しがすでにPHPコード内にある場合を除きます)。:
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
このデフォルトのメニューは、CSSを使用して簡単に書式設定できるいくつかのクラスを持つリストベースの完全なメニューを既に作成しています。 例えば、クラス”menu-current”は、現在のメニュー項目の<li>タグに追加されます。 さらに、サブ項目の各メニュー項目には、クラス”menu-expand”が含まれています。 これにより、メニュー項目ごとに非常に差別化されたCSSルールを作成できます。
例えば:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
“HTML出力”セクションには、どのクラスがどの要素に割り当てられているかの詳細な説明が含まれています。 Show_menu2関数呼び出しで異なるパラメータを使用することにより、非常に広範で異なるメニュー構造を作成することもできます。 たとえば、メニュー構造の最上位レベルのメニュー項目のみを表示するには、次の呼び出しを使用できます:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
または、たとえば、現在のページの2つのサブレベルまでを表示するには、次のようにします:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
さまざまなメニュー構造を作成するには、多くの可能性があります。 Klick
FAQup
Q:私はプログラマーではありません。 簡単な文書はありませんか?
: いいえ、これはすでに簡単なドキュメントです。
Q:ドロップダウンメニューを作成するにはどうすればよいですか?
A:これはshow_menu2とは関係ありません。 ドロップダウンメニューを作成するには、それぞれのテンプレートのCSSコードを調整するだけです。 必要な調整は、例えばWebsiteBakerアドオンリポジトリの”allcss2″テンプレートにあります-> https://addon.websitebaker.org/
Q:多言語サイトのページで検索機能を使用した後にメニューが表示されなくなるのはなぜですか?
A:使用されているテンプレートに必要な行がありません:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
Q:多言語か。 それは素晴らしいですね。 どのようにそれを行うのですか?
: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
Q:ページが呼び出されるたびに、SM2は次の警告メッセージを生成します。
“show_menu2error:$aOptions is invalid. グループ1からのフラグが供給されていません!”
: 間違った値または間違った数の値が関数に渡されました。
PARAMETERS aOptionsパラメータに渡す正しいフラグ値については、PARAMETERSセクションを参照してください。
Q:メニューの各エントリに異なるクラス/画像/色/ウィジェットを使用するにはどうすればよいですか?
A:format aItemOpen文字列の書式文字列を使用します。 メニュー項目ごとに一意のクラスまたはidを作成し、CSSまたはJavascriptでその項目を参照して、必要なことを実行します。
メニュー項目ごとに一意のクラスを追加するには(または同様の)):
"<li><a href="" target="" class=" p"></a>"
… のようなメニュー項目を作成します。..
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
あなたのCSSのようにこれを参照してください:
a.p45 { color: red; }
各メニュー項目(または同様のもの)に一意のIDを追加するには、次の手順を実行します。):
"<li><a href="" target="" class=""></a>"
… のようなメニュー項目を作成します。..
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
あなたのCSSのようにこれを参照してください:
a#p45 { color: red; }
IDは、そのメニューが生成され、ページ上に1回だけ表示される場合にのみ使用できることに注意してください(HTML IDはページ内で一意でなければならない
FUNCTIONup
show_menu2の完全な呼び出しとデフォルトのパラメータ値は次のとおりです:
show_menu2( $aMenu = 0, $aStart = SM2_ROOT, $aMaxLevel = SM2_CURR+1, $aOptions = SM2_TRIM, $aItemOpen = '</a>', $aItemClose = '</li>', $aMenuOpen = '', $aMenuClose = '</ul>', $aTopItemOpen = false, $aTopMenuOpen = false);
“パラメータ”セクションには、個々のパラメータの詳細な説明が含まれています。
各パラメータは絶対に正しく使用する必要があります。 以下のルールが役立ちます:
$aMenu=0は、ほとんどの場合、最良の値です。
ast aStartは、ページIDまたは”SM2_”で始まる値のいずれかでなければなりません。
am aMaxLevelは”SM2_”で始まる値のみを取得できます。
$aOptionsいくつかの特殊なケースを除いて、”SM2_”で始まる値のみが許可されます。
他のすべてのパラメータには、メニューの出力を制御する(HTML)タグが含まれています。
$aItemOpenから始まる各パラメータには、それぞれのデフォルト値を取得するためにfalseの値を渡すことができます。
これは、たとえば、番号付きリストを作成するために使用することができますが、デフォルト値は個々のメニュー項目に使用されます:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
注意:$aOptionsを含めて、すべてのパラメータを明示的に渡す必要があります!
HTML Outputup
HTML出力は、どのパラメータが関数に渡されるかによって大きく異なります。 これに関係なく、後続のクラスは常に各メニューに使用され、必要に応じて個々のメニュー項目にも複数のクラスを含めることができます。
クラス | 割り当て |
---|---|
menu-top | 最初のメニュー項目のみ。 |
menu-親 | 任意のメインメニュー項目。 |
menu-current | 現在のページのメニュー項目のみ。 |
メニュー-兄弟 | 現在のページのすべての”兄弟”。 |
menu-child | 現在のページの任意のサブメニュー。 |
menu-サブメニューがあるメニューを展開します。 | 。 |
menu-first | 任意のメニューまたはサブメニューの最初の項目。 |
menu-last | 任意のメニューまたはサブメニューの最後の項目。 |
menu-N | 各メニュー項目で、Nはそれぞれのメニュー項目の0から始まる絶対メニューの深さを表します。 だから、トップレベルは常にmenu-0、次のレベルはmenu-1、というようになります。 |
menu-child-N | 現在のページの各サブメニュー。Nはサブメニューの相対的な深さを表し、0から始まります。 |
HTML出力の例:
<ul class="menu-top menu-0"> <li class="menu-0 menu-first"> ... </li> <li class="menu-0 menu-expand menu-parent"> ... <ul class="menu-1"> <li class="menu-1 menu-expand menu-first"> ... <ul class="menu-2"> <li class="menu-2 menu-first"> ... <li class="menu-2 menu-last"> ... </ul> </li> <li class="menu-1 menu-expand menu-parent"> ... <ul class="menu-2"> <li class="menu-2 menu-expand menu-current menu-first"> ... ** CURRENT PAGE ** <ul class="menu-3"> <li class="menu-3 menu-child menu-child-0 menu-first"> ... <ul class="menu-4"> <li class="menu-4 menu-child menu-child-1 menu-first"> ... </li> <li class="menu-4 menu-child menu-child-1 menu-last"> ... </li> </ul> </li> <li class="menu-3 menu-child menu-child-0 menu-last"> ... </li> </ul> </li> <li class="menu-2 menu-sibling menu-last"> ... </li> </ul> </li> <li class="menu-1"> ... </li> <li class="menu-1 menu-expand menu-last"> ... <ul class="menu-2"> <li class="menu-2 menu-first menu-last"> ... </li> </ul> </li> </ul> </li> <li class="menu-0 menu-last"> ... </li> </ul>
$aStart
SM2_ROOT+N
SM2_ROOT+1は、最上位層より下のレイヤーを開始します
SM2_ROOT+2は、トップレベルより下の2つのレベルを開始します
SM2_CURR+N
SM2_CURR+1のすべての兄弟は、すべてのサブレベルで現在のレイヤーの下のレイヤーを開始します。
page_id
このページのすべてのサブメニューが表示されます。 (ページidは、管理者バックエンドでページを編集することによって決定することができ、ブラウザのアドレスバーに表示されます: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
は、$aStartで指定されたレベルから、ここで指定されたレベルまで開始されます。
SM2_ALL
SM2_CURR+N
SM2_CURR+3すべての親+現在+3サブレベル
SM2_START+N
現在のページがどのレベルにあるかに関係なく、レベルが表示されます。
SM2_START+1スタートレベル+1以下のレベル。
SM2_MAX+N
現在のレベルより下のレイヤーは表示されません。
SM2_MAX+1スタートレベルとその下の一つのレベル。
$aOptions
たとえば、TRIMとPRETTYの両方を定義するには、(SM2_TRIM|SM2_PRETTY)を使用します。
グループ1
——-
このグループから常に1つのフラグを指定する必要があります。 これらのフラグは、メニューツリー内の兄弟要素が出力でどのように抑制されるかを決定します。
SM2_ALL
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2 -> B-3 -> B-4
SM2_TRIM
パス内にない項目のすべてのサブメニュー。
は削除されます。
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
メニュー項目とそれにつながるすべてのメニュー項目を表示します。
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
グループ2
——-
これらのフラグは任意で、任意の数で組み合わせることができます。
SM2_NUMCLASS
SM2_ALLINFO
これはかなり高いメモリ消費を引き起こし、
する必要がありますので、注意して使用する必要があります。
これは、例えば、キーワード、ページの説明、および
通常は
ではない他のすべての利用可能な情報をロードすることができることを意味します。
ご注意ください: このフラグは、schow_menu2の最初の呼び出しで設定する必要があります
は、それぞれのメニュー IDのために、またはSM2_NOCACHEと
と一緒に使用することができます。
SM2_NOCACHE
SM2_PRETTY
改行を含むメニューのHTML出力を読みやすい形式にします。 これは、メニュー出力をデバッグするときに特に便利です。
SM2_BUFFER
SM2_CURRTREE
現在のメニューブランチのメニュー項目のみが表示されます。
必要に応じて、このフラグはグループ1の任意のフラグと組み合わせることができます。
SM2_ESCAPE
これは古いWebsiteBakerのインストールに必要な場合があります。
有効なHTML出力を生成します。
SM2_SHOWHIDDEN
アクティブな場合を除いてページを非表示にしたいときは、プライベートページを使用します。 ただし、リリース4.8との互換性のために、非表示のページがアクティブなときに表示されるようにするには、このフラグを指定します。
SM2_XHTML_STRICT
SM2_NO_TITLE
このパラメータには、オプションが連想配列として渡される拡張モードもあります。 詳細については、”詳細オプション”セクションを参照してください。 ただし、ほとんどのアプリケーションでは、これは必須ではありません。
$aItemOpen
このパラメータがfalseに設定されている場合、デフォルトの書式文字列
‘</a>’を使用して、WebsiteBaker標準関数show_menu()との互換性を確保します。
CSSクラスを使用した書式設定は、<a>タグに適用すると簡単になることが多いため、次の書式文字列を使用することをお勧めします。'<li></a>’。
このパラメータは、メニューの書式設定クラスのインスタンスとしても使用できます。 より詳細な説明は、フォーマッタのセクションで見つけることができます。 ここでフォーマッタが指定されている場合、after aItemOpenの後のすべての引数は無視されます。
$aItemClose
このパラメータがfalseに設定されている場合、デフォルトの'</li>’が使用されます。
$aMenuOpen
このパラメータがfalseに設定されている場合、デフォルト値”が使用されます。
$aMenuClose
このパラメータがfalseに設定されている場合、デフォルトの'</ul>’が使用されます。
$aTopItemOpen
$aTopMenuOpen
ADVANCED OPTIONSup
parameter aoptionsパラメータは二つの方法で使用できます。 まず、上記の”パラメータ”セクションで説明したように、このタイプは大部分のユースケースに十分でなければなりません。 ただし、特別な場合に特別なオプションに対処できるようにするには、必要な値を連想配列として指定する必要があります。
注意:ここではSM2_*フラグも必要であり、’flags’として渡さなければなりません。
これは、$aStartで定義されたメニューレベルに対して常に表示されるレベルの数を定義します。 これにより、これらのレベルでSM2_TRIMフラグが無視されます。
この配列を使用するには、最初に作成してから、作成した配列でa aOptionsパラメータを指定することをお勧めします:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
書式文字列Sup
次のタグは、format aItemOpenおよびamen aMenuOpenの書式文字列で使用でき、対応するテキストに置き換える必要があります。
<クラスのない>タグ:
'<a href="" target="">' |
|
<クラスを持つ>タグ:
'<a href="" target="" class="">' |
|
<クラスを持つli>タグ:
'<li class="">' |
|
<クラスを持つul>タグ:
'<ul class="">' |
|
このページのクラス一覧 | |
メニュータイトル のテキスト(SM2_NOESCAPEフラグが設定されていない限り、HTMLエンティティはエスケープされます) |
|
通常表現の画像ファイルへのURL | |
アクティブ/ホバー表示の画像ファイルへのURL | |
ページタイトルテキスト (SM2_NOESCAPEフラグが設定されていない限り、HTMLエンティティはエ) |
|
ページ関連の画像ファイル | |
<a>タグのページのURL | |
<a>タグのページターゲット | |
現在のメニュー項目のページID。 | |
親メニュー項目のページID。 | |
ページレベルでは、これは”menu-N”CSSタグで使用されているのと同じ番号です。 | |
現在のメニュー項目の兄弟の数。 | |
このメニュー内のすべての兄弟の数。 | |
条件(詳細については、”条件付き書式設定”の項を参照してください) |
次のタグは、SM2_ALLINFOフラグが設定されている場合にのみ使用できます。
ページの説明 | |
ページのキーワード |
条件付き書式設定up
条件付き書式設定ステートメントは、次のいずれかの形式を取ることができます:
B
これは、文字’}’を含まない任意の文字列にすることができます。
が含まれている可能性があります。 セクション
書式文字列’から任意の書式文字列を含めることができますが、それ以上の条件テストはできません(文字’}’は許可されていないため)。
c
これは、文字’}’を含まない任意の文字列にすることができます。
が含まれている可能性があります。 セクション
書式文字列’から任意の書式文字列を含めることができますが、それ以上の条件テストはできません(文字’}’は許可されていないため)。
条件は、1つ以上のブール比較の組み合わせです。
複数の比較が必要な場合は、他の比較と組み合わせる必要があります
は、||(boolean or-OR)または&&(boolean and-AND)を使用してリンクできます。
単一の比較は、左のオペランド、演算子、および右のオペランドで構成されます。
例X==Y-ここで、Xは左のオペランド、==演算子、Yは右のオペランドです。
クラス | このクラスが存在するかどうかを確認します。 “==”と”!=”演算子は許可されています。 この場合、演算子は、「等しい」または「等しくない」の代わりに、「含む」または「含まない」という意味を持ちます。 |
レベル | ページレベルをチェックします。 |
sib | 現在のページの兄弟の数を確認します。 |
sibCount | 現在のメニューで兄弟の総数を確認します。 |
id | ページidを確認します。 |
ターゲット | ターゲット仕様の検証。 |
< | より少し |
<= | 以下に等しいか、以下に等しいか |
== | イコール |
!= | 等しくない |
>= | に等しいかそれ以上の場合は、次のように |
> | より大きい |
クラス | “出力”セクションで指定されている”menu-*”クラス名のいずれか。 |
レベル | 次の値に対してページレベルをチェックします:
|
id | 次の値に対してページidをチェックします:
|
sib | 正の整数、またはこのメニューの兄弟の数をチェックするための”sibCount”。 |
sibCount | 正の整数 |
target | 可能なターゲット指定を表す文字列。 |
サブメニューがあります | |
メニューの最初のエントリが次の場合 | |
メニューの最初の項目ではありません | |
メニューの最後のエントリが次の場合 | |
一番上のレベルに位置しています | |
トップレベルではありません | |
メニュー内の2番目のエントリが次の場合には、次のようになる | |
複数のエントリを持つメニューにある場合 | |
メニューにあります それは正確に2つの項目を持っていません | |
兄弟メニューまたは兄弟メニューのサブメニューにあります | |
現在のidの親ポイントです | |
文字列’_self’がtarget属性に含まれています。 |
else句が追加された場合、それ以外のすべての場合に実行されます。
たとえば、ifチェックが間違っている場合、”foo”は常に実行されます。:
メニューの第二の項目ではありません | |
二つ以上のエントリを持つメニューにはありません |
メニューの最初のエントリまたは4番目以上のエントリです | |
現在のエントリがサブメニューであり、サブメニューがある場合 |
ご注意ください:
すべてのチェックは、それらが指摘されている順序で実行されます。:
- 可能なループのチェックはありません(すべてのチェックは常に実行されます)。
- チェックはグループ化されていません(チェックの括弧はサポートされていません)
- これらのものは両方とも同じ値を持っています。
FORMATTERup
注意:これは高度でめったに使用されない機能です!
PHPプログラミングの豊富な知識を持つことで、show_menu2の定義済みの
フォーマットを独自のもので使用することができます。
に含まれます。phpのshow_menu2フォーマッタの書き方を見ることができます。
使用する必要があるAPIは次のようになります:
class SM2_Formatter{ // called once before any menu is processed to allow object initialization function initialize() { } // called to open the menu list function startList($aPage, $aUrl) { } // called to open the menu item function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { } // called to close the menu item function finishItem() { } // called to close the menu list function finishList() { } // called once after all menu has been processed to allow object finalization function finalize() { } // called once after finalize() if the SM2_NOOUTPUT flag is used function getOutput() { }};
WebsiteBakerisはGNU General Public License
の下でリリースされています