¿Existe una función en Orchard CMS que recuperará el directorio de temas?

StackOverflow https://stackoverflow.com/questions/8824003

  •  27-10-2019
  •  | 
  •  

Pregunta

Tengo imágenes en mi tema (en el contenido/ directorio) y quiero mostrarlas en diferentes lugares.

Mi enfoque actual es: <img src="@Url.Content("~/Themes/MyTheme/Content/Images/image.gif")" />

Esto funciona, pero no es muy mantenible (¿Qué pasa si quiero cambiar de temas, etc.)?

¿Hay un método incorporado, algo como GetCurrentThemedirectory () que devolvería el directorio para que pudiera hacer o algo así?

Editar: del comentario de MDM, me doy cuenta de que cambiar el tema no es una preocupación válida. Realmente solo quiero evitar escribir la URL para cada referencia.

¿Fue útil?

Solución

¿De dónde está haciendo referencia a la imagen? ¿Módulo? ¿Otro tema?

Si es del tema que tiene la imagen, entonces no necesita preocuparse por cambiar los temas. Si es de otro tema, la imagen debe ser parte del tema. Si es de un módulo, entonces tendría sentido almacenar la imagen como parte del módulo o anularla en el tema (ver más abajo).

Si quisiera tener la imagen como parte del tema, entonces podría hacer que el módulo devuelva una forma 'predeterminada' y luego anularla en el tema. Realmente no debería haber ninguna razón para hacer referencia a las imágenes del tema de un módulo o viceversa.

Editar después de su edición

En los temas que he escrito, he seguido lo que hacen los autores del huerto. En lugar de usar <img> Etiquetas, las imágenes se colocan en Styles/images. Luego se les puede hacer referencia utilizando el CSS background-image atributo.

En Views/Branding.cshtml:

<div id="header"></div>
<h1 id="branding"><a href="@homeUrl">@WorkContext.CurrentSite.SiteName</a></h1>

Y luego en site.css:

#header {
    /* snip */
    background-image: url(images/header.png);
    /* snip */
}

Themes/TheAdmin/site.css Contiene muchos más ejemplos de este método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top