Usando la identificación de una página de separación para definir el final del menú

Tengo la siguiente estructura de página:

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

Las páginas 1 a 4 se utilizan para definir un menú principal horizontal.

Las páginas 5 a 7 se utilizan para definir un menú lateral vertical.

El siguiente tipo de letra se utiliza para el menú principal:

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
}

¿Es posible en mecanografiado reemplazar el maxItems enfoque por algo como lo siguiente?

  • Obtenga el ID de página del separador de menú.
  • Usar una declaración para decir que mainMenu debe terminar en este ID de página.

preguntado el 22 de mayo de 12 a las 15:05

2 Respuestas

Enfoque arriesgado, dudo que sea posible hacerlo con TypoScript puro

En su lugar, sugeriría crear un menú horizontal (páginas 1-4) con special=list ejemplo:

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

y luego el menú vertical como un menú de todos los demás elementos excepto de los 4 anteriores

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

Otra manera

también puedes poner la página que es hidden in menu al principio llamémoslo horizontal menu items Y luego usar special=directory in HMENU para construir el menú con todos los subelementos. También es más fácil agregar/eliminar/cambiar elementos sin cambiar el TS:

estructura:

- 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

contestado el 22 de mayo de 12 a las 16:05

Es posible. Pero no puedes usar optionSplit entonces.

(no probado)

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
}

No probé, pero el principio principal debería quedar claro: crear un REGISTRO interno que se verifique para cada elemento del menú. Si hay un elemento de menú del separador de menú doktype (199), configure el registro. Si el registro está configurado, no renderice el menú.

contestado el 23 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.