Есть ли в Orchard CMS функция, которая будет извлекать каталог Theme? - PullRequest
1 голос
/ 11 января 2012

У меня есть изображения в моей теме (в каталоге Content /), и я хочу показать их в разных местах.

Мой текущий подход: <img src="@Url.Content("~/Themes/MyTheme/Content/Images/image.gif")" />

Это работает, но не очень легко поддерживается (что, если я хочу переключать темы и т. Д.).

Есть ли встроенный метод, например, GetCurrentThemeDirectory (), который возвращает каталог, чтобы я мог сделать, или что-то в этом роде?

Редактировать: из комментария mdm я понимаю, что изменение темы не являетсядействительное беспокойство.Я действительно просто хочу не указывать URL для каждой ссылки

1 Ответ

1 голос
/ 12 января 2012

Откуда вы ссылаетесь на изображение?Модуль?Другая тема?

Если это из темы с изображением, вам не нужно беспокоиться о переключении тем.Если это из другой темы, то изображение должно быть частью темы.Если это из модуля, то имеет смысл сохранить изображение как часть модуля или переопределить его в теме (см. Ниже).

Если вы хотите, чтобы изображение было частью темыЗатем модуль может вернуть форму «по умолчанию», а затем переопределить ее в теме.В действительности не должно быть никаких причин ссылаться на изображения темы из модуля или наоборот.

Редактировать после редактирования

В написанных мной темахЯ следил за тем, что делают авторы Orchard.Вместо использования тегов <img> изображения помещаются в Styles/images.Затем на них можно ссылаться с помощью атрибута CSS background-image.

В Views/Branding.cshtml:

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

И затем в site.css:

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

Themes/TheAdmin/site.css содержит еще много примеров этого метода.

...