0

次のページ構造があります。

toppage
-page1
-page2
-page3
-page4
- (menu separator)
-page5
-page6
-page7
-page8

Page1 から page4 は、水平メイン メニューを定義するために使用されています。

ページ 5 からページ 7 は、垂直サイド メニューを定義するために使用されています。

メインメニューには次のタイポスクリプトが使用されています。

lib.mainMenu = HMENU
lib.mainMenu.special = directory
lib.mainMenu.special.value = {$main_menu_start_id}

lib.mainMenu.entryLevel = 0

lib.mainMenu.1 = TMENU
lib.mainMenu.1 {
  // Fix to limit items in main menu
  maxItems = 4
}

タイポスクリプトでアプローチを次のようなものに置き換えることは可能maxItemsですか?

  • メニュー区切りのページ ID を取得します。
  • ステートメントを使用して、mainMenu がこのページ ID で終了する必要があることを示します。
4

2 に答える 2

2

危険なアプローチです。純粋なTypoScriptでそれが可能かどうかは疑問です

special=list代わりに、例を使用して水平メニュー (ページ 1 ~ 4) を作成することをお勧めします。

lib.mainMenu = HMENU
lib.mainMenu.special = list
lib.mainMenu.special.value = 1,2,3,4
lib.mainMenu.1 = TMENU
//etc

前の 4 つを除く他のすべての項目のメニューとしての垂直メニュー

lib.sideMenu = HMENU
lib.sideMenu.excludeUidList = 1,2,3,4
lib.sideMenu.1 = TMENU
// etc

他の方法

最初にあるページを配置して、それをhidden in menu呼び出してから、すべてのサブアイテムを含むメニューを作成するためhorizontal menu itemsに使用special=directoryすることもできます。HMENUまた、TS を変更せずにアイテムを追加/削除/変更するのも簡単です。

構造:

- horizontal menu items (uid: 123, hidden in menu)
  |-- page 1
  |-- page 2
  |-- page 3
  --- page 4
- page 5
- page 6
- page 7

TS:

lib.mainMenu = HMENU
lib.mainMenu.special = directory
lib.mainMenu.special.value = 123
lib.mainMenu.1 = TMENU
//etc


lib.sideMenu = HMENU
lib.sideMenu.1 = TMENU
// etc
于 2012-05-22T15:17:45.510 に答える
1

可能です。ただし、その場合はoptionSplitを使用できません。

(未テスト)

lib.mainMenu.1.NO.allStdWrap {
  prepend = LOAD_REGISTER
  prepend {
    data = REGISTER:hideMenuItem
    ifEmpty = 0
    override = 1
    override.if.equals.field = doktype
    override.if.value = 199
  }
  if.isFalse.data = REGISTER:hideMenuItem
}

テストはしていませんが、主な原則が明確になるはずです。メニュー項目ごとにチェックされる内部レジスタを作成します。doktype menu-separator(199)のmenu-itemがある場合は、レジスタを設定します。レジスタが設定されている場合は、メニューをレンダリングしないでください。

于 2012-05-23T07:14:50.733 に答える