我正在实施区域设置/文化特定媒体库项目,即针对不同区域设置/文化的不同图像和样式集。
我按照以下博客http://sitecorejohn.wordpress.com/2010/04/30/dynamic-source-property-for-sitecore-image-fields/
中的方法进行操作但除此之外,我还要维护一个语言环境文件夹,并在它们下面存储图像项目。 例如, 如果我的站点根目录是SiteA并且具有en-US和es-US语言环境/文化,则媒体库如下所示: / sitecore /媒体库/ SiteA / en-US和/ sitecore /媒体库/ SiteA / es-US。所以当内容编辑器在es-US并且想要选择一个Image然后/ sitecore / media library / SiteA / es时 - 美国应该开放。
我尝试访问区域设置信息但我总是得到“en”,因为在使用内容编辑器时Context网站将是“shell”。任何人都可以投入一些实现上述目的吗?
谢谢, 苏哈斯
答案 0 :(得分:0)
如果您转到web.config中的<sites>
部分,您会看到名称为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" ..." />
如您所见,默认情况下,languange设置为en
。
答案 1 :(得分:0)
如果我理解正确,您需要内容编辑器所在的当前内容语言。 在您的代码中使用它来获取当前的内容语言:
System.Globalization.CultureInfo culture = Sitecore.Context.ContentLanguage.CultureInfo;
如果您具有为当前内容语言定义的区域性,则可以设置媒体库的正确路径。
答案 2 :(得分:0)
你可以使用安全性做你想做的事情,但这样做很复杂。
首先,每种语言都需要一个编辑器帐户,您需要创建DENY读取和放大的角色。为每种语言写访问权限。
示例:
语言:en-US,fr-CA 角色:Deny_enUS,Deny_frCA
创建用户以编辑en-US并向其添加Deny_frCA角色。添加另一个用户来编辑fr-CA并向其添加Deny_enUS角色。
现在转到/sitecore/system/lanaguages
中的语言设置,然后为en-US添加角色Deny_enUS,并在语言阅读和语言写入>上单击项目和后代的X STRONG>。对具有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且没有其他语言版本。
现在,当每个用户登录时,他们应该只能看到他们正在编辑的语言的文件夹。确保正确设置每个用户的默认内容语言。
这不是一个很好的方式,但它适用于我工作的大型网站。如果你有很多语言,那就很难维持。