Sitecore 特定于区域设置/区域性的媒体库项目(样式和图像)

Sitecore 特定于区域设置/区域性的媒体库项目(样式和图像),sitecore,locale,Sitecore,Locale,我正在实现特定于区域/文化的媒体库项,即不同区域/文化的不同图像和样式集 我遵循了下面博客中的方法 但除了上面提到的,我还必须维护一个区域设置文件夹,并在其下存储图像项。 例如 如果我的站点根是SiteA,并且具有en US和es US区域设置/区域性,则媒体库如下所示: /sitecore/media library/SiteA/en US和/sitecore/media library/SiteA/es US。因此,当内容编辑器位于es US并希望选择图像时,应打开/sitecore/med

我正在实现特定于区域/文化的媒体库项,即不同区域/文化的不同图像和样式集

我遵循了下面博客中的方法

但除了上面提到的,我还必须维护一个区域设置文件夹,并在其下存储图像项。 例如 如果我的站点根是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”。有人能为实现上述目标提供一些线索吗

谢谢, Suhas

如果您转到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" ..." />

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

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

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

使用安全性,您可以做您想做的事情,但这将很复杂

首先,每种语言都需要一个编辑器帐户,并且需要创建角色来拒绝每种语言的读写访问

例如:

语言:en-US,fr-CA 角色:拒绝,拒绝

创建一个用于编辑en-US的用户,并将Deny\u frCA角色添加到其中。添加另一个用于编辑fr CA的用户,并向其添加Deny_enUS角色

现在转到
/sitecore/system/lanaguages
中的语言设置,对于en-US,添加角色Deny_enUS,并单击语言读取语言写入上项目和后代的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版本,没有其他语言版本

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


这不是一个很好的方式,但它为我工作的一个大网站工作。如果您有很多语言,那么维护可能会很困难。

谢谢Trayek的回复。我理解您的观点,但我想知道在使用content editor时如何访问当前站点的区域设置信息。感谢Martijn的回复。Sitecore.Context.ContentLanguage.CultureInfo仅给出“en”:(您是否在/sitecore/system/languages/?下设置了正确的内容语言?是的,Martijn,我已在/sitecore/system/languages/下创建了这些语言。感谢您的回复。我将尝试获取这些语言。如果我无法确定,那么我将完全遵循您的方法。