2011-05-29 11 views
14

Soy nuevo en Orchard, así que probablemente no tengo idea de lo que estoy haciendo.¿cómo anulas el renderizado de la zona de navegación en Orchard CMS?

He descubierto cómo anular diferentes formas pero colocando un archivo cshtml en la carpeta Ver con el mismo nombre que la forma.

Además, encontré los archivos cshtml de menú y forma de menú en los archivos Core Orchard.

Sin embargo, no veo una forma llamada Navegación y realmente no entiendo cómo funcionan las Zonas.

He buscado el código y no pude averiguar exactamente cómo se representa la navegación, aunque encontré parte del código.

El motivo por el que deseo anular la representación de navegación es que representa una DIV y una etiqueta NAV alrededor de la UL. Preferiría simplemente renderizar el NAV y UL.

Respuesta

11

Las zonas también son formas, pero están declaradas en el código (Core/Shapes/CoreShapes.cs), no en archivos .cshtml como la mayoría de las formas. Además, no existe una forma llamada navegación, ya que las zonas se crean dinámicamente en el tiempo de ejecución; los nombres son proporcionados por el tema utilizado.

Las zonas tienen alternativas predeterminadas en el formulario Zona __ [ZoneName].Significa que solo necesita poner Zone-Navigation.cshtml en la carpeta/Vistas en la carpeta de su tema para anular la representación de la zona de navegación.

+0

gracias. Eso funcionó, pero no sé cómo representar la forma del menú con los datos de navegación o cómo acceder a los datos de navegación para construir el menú yo mismo. Llamar @Display (Model.Menu) no funciona. – Zack

+4

* El menú * (que representa el elemento 'nav') y * MenuItem * (que representa un único elemento) son formas, por lo que puede anularlos colocando un * Menu.cshtml * y/o * MenuItem.cshtml * archivos en su carpeta de tema */Vista *. Observe cómo se representan los valores predeterminados: puede encontrarlos en la carpeta * Core/Shapes/Views *. Por cierto, el método @Display() se utiliza para representar un objeto de forma (y debe proporcionarse tal). Si necesita renderizar manualmente el contenido de la zona, eche un Modelo (que contiene el objeto de forma de zona actual) a IEnumerable y llame a Pantalla (elemento) para cada elemento. –

+0

Para aclarar: cada objeto de forma (que está disponible dentro del archivo .cshtml como propiedad de modelo) implementa una interfaz IEnumerable y puede contener otras formas secundarias (por ejemplo, la forma del menú en la zona de navegación). Es por eso que puede convertirlo libremente a IEnumerable y acceder a los elementos secundarios (si corresponde) en el bucle foreach. –

Cuestiones relacionadas