2012-01-11 81 views
1

我有我的主题(在内容/目录中)的图像,我想在不同的地方展示它们。在Orchard CMS中是否有检索主题目录的功能?

我目前的做法是:<img src="@Url.Content("~/Themes/MyTheme/Content/Images/image.gif")" />

这工作,但不是很维护 (如果我想切换主题等)。

是否有一个内置的方法,像GetCurrentThemeDirectory()这样会返回目录,所以我可以做或类似的东西?

编辑:从mdm的评论,我认识到改变主题不是一个有效的关注。我真的只是想避免输入每个参考的网址

回答

1

你在哪里引用图像?模块?另一个主题?

如果是具有图像的主题,那么您不必担心切换主题。如果是来自另一个主题,那么图像应该是主题的一部分。如果它来自一个模块,那么将图像作为模块的一部分存储或在主题中覆盖它是有意义的(见下文)。

如果你想让图像作为主题的一部分,那么你可以让模块返回一个'默认'形状,然后在主题中覆盖它。真的不应该有任何理由从模块中引用主题图像,反之亦然。您的编辑

在我写的主题后

编辑,我遵循的果园作者做。而不是使用<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含有丰富的多种这种方法的例子。

+0

谢谢,我更新了我的问题。我从相同的主题引用。 – Aligned 2012-01-11 21:09:04

+0

嘿对齐,我已经更新了我的答案:) – mdm 2012-01-11 22:52:40

+0

我想我可以选择分配一个自定义设置,这样我就可以使用@ WorkContext.CurrentSite.ImageUrl。我搜索了'@ workContext.CurrentSite'并找到了这个http://docs.orchardproject.net/Documentation/Adding-custom-settings。 – Aligned 2012-01-12 13:55:14