sitecore开发入门之Sitecore字典结构最佳实践
使用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中的默认站点定义完整的站点定义,包括域字典,您可以这样做:
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字典结构最佳实践的更多相关文章
- sitecore开发入门Sitecore的CRUD操作 - 第二部分
在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...
- sitecore开发入门之如何在代码中获取SITECORE图像URL
using Sitecore; using Sitecore.Data.Items; using Sitecore.Resources.Media; public string GetUrl() { ...
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)
这篇博文难产了很久,原来是打算一周更新一篇的,上周原计划写MVC,但是写了一半,发现带入了太多的细节,不太符合这个入门系列的主题. 当我们学习一个新的技能的时候,如果一开始就面对大量的细节,很容易陷入 ...
- C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践
Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在C4C里使用Cloud Application S ...
- Android开发:Translucent System Bar 的最佳实践
Translucent System Bar 的最佳实践 近几天准备抽空总结Android一些系统UI的实践使用,于是开始动手建了一个库AndroidSystemUiTraining ,边撸代码边写总 ...
- Android开发之漫漫长途 XIII——Fragment最佳实践
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 敏捷开发方法XP的12个最佳实践
极限编程(eXtreme Programming,简称XP)是一种轻量级.高效.低风险.柔性.可预测的.科学的软件开发方法,其特性包含在12个最佳实践中. 1. 计划游戏 ( Planning Ga ...
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(下)
上期我们完成了一个简单的主从页面,但是页面是静态的,不能交互,功能也很简单,只有一个销售订单的列表. 我们今天就一鼓作气把代码全都写完,由于本次的代码量较大,所以只对重点代码部分进行讲解. 具体每个文 ...
- sitecore开发入门Sitecore的CRUD操作 - 第一部分
在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作.我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对 ...
随机推荐
- 必读:Spark与kafka010整合
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/rlnLo2pNEfx9c/article/details/79648890 SparkStreami ...
- C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)
C# 能否获取一个对象所占内存的大小? 今日,在项目重构的时候忽然想到一个问题,一个类哪些成员的增加,会影响一个类所占内存的大小?C#有没有办法知道一个对象占多少内存呢? 第一个问题:很快想到是类的非 ...
- DOTween-Ease缓动函数
Ease.InQuad 不知道Quad代表什么意思 Ease.InQuart 有1/4的时间是没有缓动. Ease.InQuint, 是1/5时间没有缓动. Ease.InExpo 一直很平缓, ...
- rabbitmq 生产者 消费者(多个线程消费同一个队列里面的任务。) 一个通用rabbitmq消费确认,快速并发运行的框架。
rabbitmq作为消息队列可以有消息消费确认机制,之前写个基于redis的通用生产者 消费者 并发框架,redis的list结构可以简单充当消息队列,但不具备消费确认机制,随意关停程序,会丢失一部分 ...
- linux cent os 6.5安装Nginx
1.下载相关组件 yum install -y gcc gcc-c++ 安装C/C++编译器 wget http://sourceforge.net/projects/pcre/files/pcre/ ...
- 盘点 React 16.0 ~ 16.5 主要更新及其应用
目录 0. 生命周期函数的更新 1. 全新的 Content API 2. React Strict Mode 3. Portal 4. Refs 5. Fragment 6. 其他 7. 总结 生命 ...
- Timeline Storyteller 现已加入自定义图表库
前言 下载地址: https://store.office.com/en-us/app.aspx?assetid=WA104381136&sourcecorrid=328f5e2b-e973- ...
- weblogic反序列化漏洞CVE-2018-2628-批量检测脚本
#coding=utf-8 import socket import time import re,os,sys,codecs type = 'utf-8' reload(sys) sys.setde ...
- 寻求js
寻找登录的post地址 在form表单中寻找action对应的url地址 post的数据是input标签中的name值作为键,真正的用户名密码作为值得字典,post的url地址就是action对应的u ...
- 做二级菜单时候遇到的关于事件冒泡以及mouseover和mouseenter的不同
二级菜单作为最普通小组件,我遇到了坑. <style> .wrapper { height: 150px; border: 1px solid; width: 150px; } .wrap ...