2012-06-22 13 views
8

Esto me va a volver loco a este ritmo. Desde dentro de un archivo Layout.cshtml para un tema en Orchard, ¿cómo puedo determinar el título de los contenidos del cuerpo principal?Orchard - Obtener el título del contenido del diseño del tema

He intentado usar Shape Tracer, pero parece que no me ayuda. Ninguno de estos me da ningún texto en absoluto.

@Html.Title() 
@Model.Title     
@Model.Content.Parts_Common_Body.ContentItem.TitlePart 
@Model.ContentItem.Parts_Common_Body.ContentItem.TitlePart 

ACTUALIZACIÓN: Aquí está el código HTML que debe mostrar lo que el resultado final tiene que buscar como para mantener intacto el tema, junto con una imagen que muestra el tema antes de empezar con él. Este HTML es solo un fragmento de las partes que me preocupan. En la imagen, la búsqueda es lo que está en la zona ContentHeader.

<div id="wrapper-header-inner"> 
     <div id="header-inner"> 
     @Zone(Model.ContentHeader) 
     <h1 class="pagetitle"> 
      Title Here 
     </h1> 
     </div><!-- #header-inner --> 
</div><!-- #wrapper-header-inner --> 
} 


<div id="wrapper-content"> 
    <div id="content"> 
     @if(Model.Content != null) { 
     <div class="main" class="@mainContentClass"> 
      @if(Model.Content != null && Model.LeftAside == null && Model.RightAside == null) { 
       <div id="maincontentFull" class="positionleft"> 
        @Zone(Model.Content) 
       </div> 
      } 
      @* Other layout possabilities if left and/or right asides are present *@ 
     </div> 
     } 
    </div> 
</div> 

Snapshot of the resulting layout

Respuesta

4

Como seguimiento, las actualizaciones de Orchard desde que hice esta pregunta incluyeron la posibilidad de utilizar el archivo placement.info para redirigir ciertas partes a otras zonas, de hecho, permitiéndome lograr lo que estaba buscando.

<Placement> 
    <Match ContentType="Page"> 
    <Place Parts_Title="/TitleZone"/> 
    </Match> 
</Placement> 
0

hace este trabajo para usted?

@Html.Title() 

Eso debería funcionar si estás buscando el título de la página. Sin embargo, si usted está mirando para acceder directamente a la titlePart ...

@Model.Title 

Esto funciona porque si nos fijamos en la plantilla Parts.Title hay una línea de código que hace esto ...

@{ 
    Layout.Title = Model.Title; 
} 
+3

Ninguno de ellos me da el título. Ni siquiera parecen tener una salida, supongo que son objetos SharpClay. Los cuales son tan buenos como la flexibilidad, son REALMENTE molestos para tratar de rastrear qué propiedades/métodos realmente existen. Es como disparar al aire al azar y esperar a ver si un pájaro cae del cielo. –

+0

Ya, tiene sus compensaciones. Estoy con Bertrand en esto, ¿qué estás tratando de hacer? Parece un poco al revés. –

+0

Bueno, esencialmente, tengo un tema que estoy tratando de implementar. Y el tema con el que estoy trabajando coloca un div más arriba en la página DOM que contiene el título de la página. Pero debido a que está en una ubicación diferente a la del contenido de la página principal, no sé cómo colocar el título allí porque no será una zona local en la zona de contenido, si tiene sentido. Actualizaré la pregunta con un ejemplo del HTML en un minuto ... –

2

Desde Diseño, Modelo es el objeto Diseño. No tiene nada que ver con el contenido que se va a renderizar en la zona de contenido, pero sí tiene una propiedad de título que debe establecer ese contenido. Sin embargo, no es exactamente lo que estás pidiendo: es lo que terminará siendo el título HTML.

Si desea obtener el título del elemento que se procesa en la zona de contenido de nivel superior, bueno, Layout realmente no es un buen lugar para buscar eso. Necesitaría saber más acerca de qué es exactamente lo que está tratando de lograr, pero esto parece estar al revés. De hecho, ni siquiera puede suponer que hay un elemento de contenido de este tipo o que solo habrá uno.

Entonces, ¿qué es exactamente lo que estás tratando de hacer?

Cuestiones relacionadas