在Sitecore 的DMS 中,提供了丰富的个性化页面的功能。 用户通过配置不同的rule,来实现页面内容的个性化。在Sitecore中已经提供了许多rule,但在实际项目中,还是会遇到一些特定网站的特殊需求。这时候就需要我们自定义rule。下面我们就来介绍下如何自定义一个rule。

现在,我们先有一个这样的demo首页,页面上有一个模拟banner的sublayout

sublayout 通过data source来指定其数据源

我们想要实现的效果是: 当url中sc_key参数为demo时,更换页面的banner。好,下面我们就来实现这个效果。

1. 在/sitecore/system/Settings/Rules/Definitions/Elements下新建一个rule folder

2. 在下面再新建一个condition

根据我们的需求,维护Text字段:

where the search keywords [operatorid,StringOperator,,compares to] [keyword,Text,,keyword]

其中变量的格式要求为:

每个变量用[] 括起来,每个变量有4个参数,参数之间用逗号隔开,4个参数分别为

1. 在.NET 类中使用的变量名称
        2. 在 /Sitecore/System/Settings/Rules/Common/Macros 节点下sitecore预定义的一些方法名称,或者为空.
        3. 给前一个参数使用的变量
        4. 设定rule时展示用的名称

3. 在/sitecore/system/Settings/Rules/Definitions/Tags下新建一个tags

4. 将新建的tags添加到之前建的condition下

5. 因为我们是修改rendering的condition,所以我们把tags添加到rendering condition下:

保存发布后,我们可以在page editor下查看下是否有我们新建的condition

现在,我们已经配置好新的condition,接下来我们代码实现功能

1. 新建一个类

namespace SitecoreDemo.layouts.Demo.Conditions
{public class SearchKeywords<T> :StringOperatorCondition<T> where T : RuleContext{protected override bool Execute(T ruleContext){var sc_key = HttpContext.Current.Request.QueryString["sc_key"];if (string.IsNullOrEmpty(sc_key)){return false;}return this.Compare(sc_key, keyword);}public string keyword { get; set; }}
}

2. 维护前面新建的condition节点中的type字段

3. 保存发布。我们配置一下页面

访问http://demo/demohome?sc_key=demo。可以看到此时页面中banner的内容已经更换

Sitecore DMS 中自定义Rule 实现页面个性化相关推荐

  1. 二、AEM中自定义模板和页面

    文章目录 自定义模板和页面 repo安装 cygwin安装 IDEA中安装repo工具 在WKND中自定义模板和页面 部署WKND示例到author实例 自定义模板 模板编辑的三种模式 Structu ...

  2. tp中自定义跳转页面

    1.在admin->view下建立public文件夹 2.在public文件夹下建立error.html success.html 3.在项目下公共common ->config.php写 ...

  3. uniapp中自定义showModal样式

    uniapp中自定义showModal样式 页面中使用 在main.js中引入show-modal组件 创建组件show-modal 组件名称show-modal.vue 创建initModal.js ...

  4. 如何在WordPress中自定义PHP页面并操作数据库?

    在我搭建自己博客的时候有这样一个需求,想搞一个类似于首页的样式,可是数据源又不是来自于wordpress中的文章,而是另外自定义创建的数据表中的数据,wordpress本身的页面模板好像不能满足我这么 ...

  5. Django框架(18.Django中的自定义错误500页面和不存在404页面)

    Django中自定义404页面和500页面 有时访问不存在的页面是时候,并且没有关闭调试模式则会暴露我们的代码 404:找不到页面,关闭调试模式之后,默认会显示一个标准的错误页面,如果要显示自定义的页 ...

  6. 在ASP.NET MVC3项目中,自定义404错误页面

    在Web开发中,用户体验是至关重要的,一个友好的网站自然少不了自定义404错误页面. 让笔者为大家介绍404错误页面在ASP.NET MVC3项目中的配置: 第一步,在项目的Web.config文件中 ...

  7. 手机QQ访问时,html页面在QQ中自定义预览和自定义分享

    手机QQ访问时,html页面在QQ中自定义预览和自定义分享 有一天,产品说要做个自定义预览和分享功能,于是很快在微信上实现了,可是不知道在QQ上怎么实现,查看了很多网站,最后才找到了解决方案,于是想和 ...

  8. html禁止浏览器修改字号,在高版本Chrome浏览器中自定义强制样式表修改页面字体显示...

    Firefox有一个比较好的功能,就是禁用页面指定的字体,改为使用用户强制指定的字体来渲染也页面.但是在Chrome中却没有这样的设置,Chrome的原意是尊重网页设计者的意图,尽可能原样显示页面.但 ...

  9. html自定义指针,如何自定义鼠标指针 怎样在wpf中自定义鼠标指针

    如何在ppt中自定义鼠标指针的形状? 魔兽世界怎么自定义鼠标指针 在系统 控制面板 里面鼠标属性 指针里面改就可以了 下面有个浏览 可以自定义换图案 怎样在网页中设定一整套自定义的鼠标指针? 麻烦了 ...

最新文章

  1. ios 状态栏高度 底部tabbar高度
  2. 算法学习:后缀自动机
  3. 探寻新的治疗方法,研究人员用VR可视化DNA结构
  4. windowbuilder点击按钮出现新界面_MIUI 10 负一屏,新界面新体验
  5. 1047. 删除字符串中的所有相邻重复项
  6. exfat文件系统_u盘文件系统exfat格式优缺点有哪些【详细介绍】
  7. checksum table 【转】
  8. java学习(35):巩固练习
  9. json介绍及简单示例
  10. 取消服务器系统,取消系统服务器默认共享通道的方法
  11. 九度 1532:棋盘寻宝扩展(背包方案统计)
  12. 2020教师计算机考试笔试题,2020教师招聘考试《信息技术》练习题之答案解析
  13. java 服务器调优_Java远程服务器调优
  14. .rpt 文件怎麽打開?Crystal Reports 打開.rpt失敗 ?
  15. 数据库设计阶段 各阶段的任务
  16. 六. 先有鸡还是先有蛋?--SLAM
  17. python网络编程好学吗_年薪30万+的python编程难不难?好学吗?
  18. 融合软泥怪 (优先队列)
  19. “年薪百万”的视频剪辑师?Adobe专家让这一切都成为可能
  20. 手机验证码的测试用例梳理

热门文章

  1. idea配置 Tomcat Deployment添加时没有Artifact的完美解决方式!较全面
  2. 电子元器件图片、名称、符号,超全面+唯样商城
  3. 为老蓝天主板BIOS注入NVME模块
  4. linux 进程 锁定cpu,如何限制Linux中任何进程的CPU使用情况 | MOS86
  5. 分布式系统下的纠删码技术(一) -- Erasure Code (EC)
  6. 通信原理(3)——模拟通信系统的幅度调制(AM DSB SSB VSB)和角度调制(PM FM)
  7. pdf 加深 扫描件_福昕PDF如何用更高的DPI将文档扫描成PDF
  8. 表达式求值(C语言)
  9. AIDA64怎样算烤机通过 AIDA64烤机如何算稳定
  10. 基于NE555的108KHZ雾化片驱动电路