防止重复的item name,自动修改名字

        在Sitecore中,创建item时是允许重复的节点名字的。但这会造成一个问题,就是内容编辑人员有可能在一个节点下面建立2个同样name的节点,造成两个节点的url一样,前台用户在访问时就无法辨识要访问的到底是哪个item。针对这个问题,除了在业务层面,要求内容编辑人员在命名时遵循一定命名规则,防止name的重复;另外一个方法就是通过程序,在新建item时,自动在name后面加上时间戳。本文主要就介绍如何实现自动在加时间戳的方法。

        首先,在web.config 中找到“<event name="item:added">”标签,在这个标签下,增加一个handler:

       

        然后添加代码:


      

public class InfoItemAdd
    {
        protected void OnItemAdded(object sender, EventArgs args)
        {
            if (args == null)
            {
                return;
            }
            var item = Event.ExtractParameter(args, 0) as Item;
            if (item == null)
            {
                return;
            }

            if (item.TemplateID == new ID("{2ABED5B8-6B8F-4CE3-B16F-718C194EB087}"))
            {
                using (new SecurityDisabler())
                {
                    item.Editing.BeginEdit();
                    item.Name = item.Name  + DateTime.Now.ToString("yyMMddhhmmss");
                    item.Editing.EndEdit();
                    //Log.Info("info item's name is changed",this);
                }
                
            }

        }
    }

     效果测试:

     新建特定template节点时,节点name后会带有时间戳:

   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值