1

我正在实施区域设置/文化特定媒体库项目,即针对不同区域设置/文化的不同图像和样式集。

我遵循以下博客中的方法http://sitecorejohn.wordpress.com/2010/04/30/dynamic-source-property-for-sitecore-image-fields/

但除了上述之外,我还必须维护一个语言环境文件夹并将图像项存储在它们下面。例如,如果我的站点根目录是 SiteA 并且具有 en-US 和 es-US 语言环境/文化,则媒体库如下所示:/sitecore/media library/SiteA/en-US 和 /sitecore/media library/SiteA/es- US 。因此,当内容编辑器位于 es-US 并想要选择图像时,/sitecore/media library/SiteA/es-US 应该打开。

我试图访问语言环境信息,但我总是得到“en”,因为在使用内容编辑器时上下文站点将是“shell”。任何人都可以提出一些想法来实现上述内容吗?

谢谢, 苏哈斯

4

3 回答 3

0

如果您转到<sites>web.config 中的部分,您将看到具有该名称的站点Shell已在此处定义。

内容编辑器(以及桌面)在 Shell 下运行:用于桌面
http://yoursite/sitecore/shell/Applications/Content%20editor.aspx的内容编辑器
http://yoursite/sitecore/shell/default.aspx

在该定义中:

<site name="shell" virtualFolder="/sitecore/shell" physicalFolder="/sitecore/shell" rootPath="/sitecore/content" startItem="/home" language="en" database="core" domain="sitecore" loginPage="/sitecore/login" content="master" contentStartItem="/Home" ..." />

如您所见,语言en默认设置为。

于 2013-06-10T09:16:19.113 回答
0

如果我理解正确,您需要内容编辑器所在的当前内容语言。在您的代码中使用它来获取当前的内容语言:

System.Globalization.CultureInfo culture = Sitecore.Context.ContentLanguage.CultureInfo;

如果您具有为当前内容语言定义的文化,则可以设置媒体库的正确路径。

于 2013-06-10T09:57:16.423 回答
0

您可以使用安全性做您想做的事,但做起来会很复杂。

首先,您需要每种语言的编辑帐户,并且您需要创建角色以拒绝每种语言的读写访问权限。

例子:

语言:en-US、fr-CA 角色:Deny_enUS、Deny_frCA

创建一个用于编辑 en-US 的用户并向其添加 Deny_frCA 角色。添加另一个用户来编辑 fr-CA 并向其添加 Deny_enUS 角色。

现在转到 en-US 中的语言设置,添加角色 Deny_enUS 并在Language ReadLanguage Write/sitecore/system/lanaguages上单击 Item 和 Descendants 的X。对具有 Deny_frCA 角色的 fr-CA 执行相同的操作。

现在将图像选择器的源设置为所有本地特定图像文件夹的根目录,所以如果你有/sitecore/media library/SiteA/enUS/sitecore/media library/SiteA/frCA设置源/sitecore/media library/SiteA

最后确保/sitecore/media library/SiteA/enUS有一个 en-US 版本,没有其他语言/sitecore/media library/SiteA/frCA版本,并且作为 fr-CA 版本,没有其他语言版本。

现在,当每个用户登录时,他们应该只能看到他们正在编辑的语言的文件夹。确保每个用户的默认内容语言设置正确。

这不是一个很好的方法,但它适用于我工作的一个大网站。如果您有很多语言,那么维护可能会很痛苦。

于 2013-06-10T13:56:09.313 回答