使用Sitecore时,一个重要的主题是如何为您的网站处理不同的语言和区域。Sitecore对此的回答是使用字典项,它基本上只代表键/值定义。但是,这个字典项可以设置为具有不同的语言版本,这几乎允许您为“提交”按钮文本设置字典项。然后是加拿大地区该项目的另一个版本,可能会使用更具区域特定性的文本,或者可能使用该语言的西班牙语版本。

这个主题在Sitecore中并不新鲜,但应该考虑的是存储这些类型项目的正确设置/配置。在我目前工作的项目中,它们通常存储在Master数据库的System / Dictionary文件夹中,但我不认为它充分利用了Sitecore能够做的事情。将字典项存储在系统文件夹中也有明显的含义,例如标准内容编辑器很少对树的这一部分具有访问权限。在Sitecore 6.6版中,他们引入了具有域字典的功能。这允许更大的灵活性,并允许内容创建者具有特定于站点的字典项(以及在内容树中存储这些字典项),

我相信较少人真正意识到的另一个特性是,在整个Sitecore CMS界面中使用了字典定义,尤其是在内容编辑器中。当您指定与Shell中使用的域字典匹配的字段名称时,它将使用字段名称的字典值。所以这意味着您可以创建CMS特定的字典项来表示您的字段名称,然后您可以创建特定于语言的字段名称,而无需实际进入并手动创建模板的多个语言版本。

为了测试这个新理论并展示我推荐的处理字典项的最佳方法的一些例子,我将引导您完成以下实现,它将创建特定于站点的域字典,全局字典,然后是CMS特定的字典。 Sitecore模板字段。

首先,请确保您有Sitecore的副本,最好运行Sitecore 6.6或更高版本(我正在使用Sitecore 8.1)。运行Sitecore后,请进入内容编辑器。您需要为您的站点创建几个词典域。我认为这里最好的方法是创建至少2到3个字典域。我会在站点级别创建一个包含站点特定的字典项目。有时在最初开发网站时,可能很难规划字典项目的位置(在网站级别或所有网站的全局级别),只需使用您的最佳判断,以后可以随时调整。在站点级别,我将创建一个插入选项来添加字典域,这样可以更轻松地为将来的站点添加它。

一旦你创建了一个特定于站点的域字典,接下来我将在全局文件夹中创建一个域字典。这允许您将在所有站点之间共享的字典项放在一个位置。同样,建议的最佳做法是在内容树的全局部分中包含插入选项以包含此域字典。您可能需要在全局文件夹中使用多个域字典。完成后,它是可选的,但您可以在系统文件夹中添加另一个域字典。此域字典的用途是针对您为内容项创建的模板字段。我将在这篇**帖子**中详细介绍Sitecore的这个隐藏功能。

创建域词典后,您的工作就不完整了。下一步是指定回退字典域,如果在当前域中找不到您用作密钥的项目,则允许Sitecore回退到另一个域字典。因此,在您的站点特定域字典上,您可能希望指定全局域字典。这样,当您指定查看站点定义文件中的站点特定字典时,如果找不到字典键,它将回退并查看下一个全局域字典。这将创建一个结构良好的设置,允许您根据特定于站点或全局特定的字典项来组织字典。

此设置的最后一步当然是在站点定义补丁文件中定义字典域。我通常喜欢在我的解决方案中使用SiteDefinition.config,以便我可以对其进行更改,例如此更改。要从修补程序文件扩展现有的“站点定义”以包含自定义域字典,可以将以下内容添加到修补程序文件中:

 
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <sites>
      <site name="website">
        <patch:attribute name="dictionaryDomain">Sitecore</patch:attribute>
      </site>
    </sites>
  </sitecore>
</configuration>

对于上面的属性,只需指定字典的名称即可。重要的是,您要为字典域名提供一个与众不同的名称。例如,应该为站点特定字典域提供某些变体的网站名称。您可以调用全局域,只调用全局字典或其他影响。

最后,如果您要为Sitecore中的默认站点定义完整的站点定义,包括域字典,您可以这样做:

Site Definition with Domain Dictionary

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <sites>
      <site name="website" patch:instead="site[@name='website']"
            rootPath="/sitecore/content/website1"
            startItem="/home"
            virtualFolder="/"
            contentStartItem="/"
            physicalFolder="/"
            database="web"
            domain="extranet"
            allowDebug="true"
            cacheHtml="true"
            htmlCacheSize="10MB"
            registryCacheSize="0"
            viewStateCacheSize="0"
            xslCacheSize="5MB"
            filteredItemsCacheSize="2MB"
            enablePreview="true"
            enableWebEdit="true"
            enabledDebugger="true"
            dictionaryDomain="Sitecore"
            disableClientData="false" />
    </sites>
  </sitecore>
</configuration>

sitecore开发入门之Sitecore字典结构最佳实践的更多相关文章

  1. sitecore开发入门Sitecore的CRUD操作 - 第二部分

    在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...

  2. sitecore开发入门之如何在代码中获取SITECORE图像URL

    using Sitecore; using Sitecore.Data.Items; using Sitecore.Resources.Media; public string GetUrl() { ...

  3. OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)

    这篇博文难产了很久,原来是打算一周更新一篇的,上周原计划写MVC,但是写了一半,发现带入了太多的细节,不太符合这个入门系列的主题. 当我们学习一个新的技能的时候,如果一开始就面对大量的细节,很容易陷入 ...

  4. C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践

    Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在C4C里使用Cloud Application S ...

  5. Android开发:Translucent System Bar 的最佳实践

    Translucent System Bar 的最佳实践 近几天准备抽空总结Android一些系统UI的实践使用,于是开始动手建了一个库AndroidSystemUiTraining ,边撸代码边写总 ...

  6. Android开发之漫漫长途 XIII——Fragment最佳实践

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  7. 敏捷开发方法XP的12个最佳实践

    极限编程(eXtreme Programming,简称XP)是一种轻量级.高效.低风险.柔性.可预测的.科学的软件开发方法,其特性包含在12个最佳实践中. 1.  计划游戏 ( Planning Ga ...

  8. OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(下)

    上期我们完成了一个简单的主从页面,但是页面是静态的,不能交互,功能也很简单,只有一个销售订单的列表. 我们今天就一鼓作气把代码全都写完,由于本次的代码量较大,所以只对重点代码部分进行讲解. 具体每个文 ...

  9. sitecore开发入门Sitecore的CRUD操作 - 第一部分

    在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作.我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对 ...

随机推荐

  1. PXE(preboot execution environment):【网络】预启动执行环节:安装 debian 9系列:成功

    PXE 安装的必要点和之前一样. 这里只着重说一下debian系列 特殊的地方: 第一:Release.gpg问题 该问题解决方式一:要求官方的dvd.cd中提供,貌似不太可能实现...... 该问题 ...

  2. kafka---->kafka connect的使用(一)

    这里面介绍一下kafka connect的一些使用. kafka connect的使用 一.在config目录下面复制一个file-srouce.properties并且修改内容 huhx@gohuh ...

  3. JVM监控和调优常用命令工具总结

    JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...

  4. mysql按位的索引判断位的值

    DELIMITER $$ DROP FUNCTION IF EXISTS `value_of_bit_index`$$/*计算数字的某个位的值*/CREATE FUNCTION `value_of_b ...

  5. An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later.

    刚装完 PHP.Nginx,准备跑下 phpMyAdmin 程序,结果报以下错误: An error occurred. Sorry, the page you are looking for is ...

  6. android 常用框架

    网络框架:okhttp.volley.android-async-http图片框架:Picasso.Fresco.Glide.Android-Universal-Image-Loader缓存框架:Di ...

  7. 算法提高 金属采集_树形dp

    算法提高 金属采集   时间限制:1.0s   内存限制:256.0MB        问题描述 人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了.一些节点之间有道路相连 ...

  8. 我的WafBypass之道(upload篇)

    0x00 前言 玩waf当然也要讲究循序渐进,姊妹篇就写文件上传好了,感觉也就SQLi和Xss的WafBypass最体现发散性思维的,而文件上传.免杀.权限提升这几点的Bypass更需要的是实战的经验 ...

  9. Moving Tables---(贪心)

    Problem Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a buildin ...

  10. Unity 为队伍设置不同颜色的shader

    在魔兽争霸等一些游戏中,我们通过模型的颜色就能很轻松的区分队伍,如下:   实现的方法有很多,比如: 1,为不同队伍各出一张不同颜色的贴图(Hmmm,war3有的地图可以容纳12只队伍,美术大大们会很 ...