使用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. UE4/Unity3d 根据元数据自动生成与更新UI

    大家可能发现一些大佬讲UE4,首先都会讲类型系统,知道UE4会根据宏标记生成一些特定的内容,UE4几乎所有高级功能都离不开这些内容,一般来说,我们不会直接去使用它. 今天这个Demo内容希望能加深大家 ...

  2. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  3. mysql可以远程连接的配置

    由于配置好几次了,老是会忘记命令,所以记录下来 1.修改配置文件 我的配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf 找到 bind-address = 127.0.0 ...

  4. 提高MySQL数据库的安全性

    1. 更改默认端口(默认3306) 可以从一定程度上防止端口扫描工具的扫描 2. 删除掉test数据库 drop database test; 3. 密码改的复杂些 # 1 set password ...

  5. 【Python】博客信息爬取-微信消息自动发送

    1.环境安装 python -m pip install --upgrade pip pip install bs4 pip install wxpy pip install lxml 2.博客爬取及 ...

  6. ubuntu16.04英文版搜狗输入法安装报错

    1.因为是英文版的,所以需要更新中文字体 Systems Settings>Language Support ,会提示自动更新,这个时候KeyBorad input method 选择不了fci ...

  7. poj1279

    板子题,求多边形内核面积. 话说jls的板子返回的是边,然后我就在冥思苦想怎么根据割边求面积啊.. 然后发现自己果然是个傻逼,求一下交点存起来就好了... //板子题到此为止了 #include &l ...

  8. 小Q系列故事——屌丝的逆袭

    小Q系列故事——屌丝的逆袭 Problem Description 毕业于普通本科的小Q一直自称是资深屌丝,不仅学校不知名,甚至他自己在这个普通学校也是默默无闻——直到临近毕业的时候,班里5朵金花中的 ...

  9. Spring-Boot 访问Controller时报错可能会是这个坑

    报错信息: 代码: @Controller("/index") public class IndexController extends BaseController{ @GetM ...

  10. git 实战

    1.网站手动创建新分支 2.在master下 项目路径下 右键 Git branch here 3.切分支: git fetch git branch -a git branch -r git che ...