Usando Regras para substituir espaços por traços com Sitecore 7 em 3 passos simples

Neste artigo vou mostrar como usar regras do Sitecore para renomear itens de modo que, cada vez que um item seja salvo, os espaços sejam substituídos. A vantagem de usar regras é que você pode visualmente configurar diferentes condições, sem ter que deixá-las fixas no código.

1) Crie a Ação que dispara a renomeação de itens

Em seu banco master, adicione sua nova Ação usando a template /sitecore/templates/System/Rules/Action. Neste caso estou usando o caminho /sitecore/system/Settings/Rules/Definitions/Elements/Script porque o folder Script já é referenciado pelas regras de Item Saved, sendo assim minha nova ação vai aparecer automaticamente no diálogo.

Creating the action

O campo Type deve apontar para a sua classe que efetua a renomeação (use o formato “Namespace.ClassName, Assembly“)

2) Crie a classe que executa a renomeação

É aqui que implementamos o código que faz a checagem e renomeação (o parâmetro “ruleContext.Item” traz o item sendo salvo).

using Sitecore.Diagnostics;
using Sitecore.Rules;
using Sitecore.Rules.Actions;

namespace BusinessLayer.Rules.Actions
{
    public class AddHyphensToItemName : RuleAction where T : RuleContext
    {
        public override void Apply(T ruleContext)
        {
            Assert.ArgumentNotNull(ruleContext, "ruleContext");
            var obj1 = ruleContext.Item;
            if (obj1 == null)
                return;

            // Aborta a operação caso não haja espaço no nome
            var itemName = obj1.Name;
            if (!itemName.Contains(" "))
                return;

            // Renomeia o item
            itemName = itemName.Replace(" ", "-");
            obj1.Editing.BeginEdit();
            obj1.Name = itemName;
            obj1.Editing.EndEdit();
        }
    }
}

3) Crie a Regra para executar a ação acima

Adicione sua Regra usando a template /sitecore/templates/System/Rules/Rule, depois edite-a.

Rule to rename

Neste caso estou fazendo o seguinte:

  • Incluindo tudo que está abaixo de “/sitecore/content/Site/Home” – pois só quero aplicar esta regra aos items que estão abaixo da minha Homepage;
  • Pulando items que não possuem layout – Não nos importamos se itens sem renderings têm espaços;
  • Chamando a ação “Add Hyphens To Item Name” para os itens afetados.

Publicado em Actions, Development, Rules
2 comentários sobre “Usando Regras para substituir espaços por traços com Sitecore 7 em 3 passos simples
  1. kami says:

    In the third step “3) Create the Rule to execute the Action above” .
    How did you actually added the action to the rule? I am referring to the 3rd picture. How did you added the action “Add Hyphens to Item Name” in the Rule 1.

    • Hello Kami,

      The action “Add Hyphens to Item Name” is added to Sitecore when you run Step 1 in the article:

      “In your master database, add your new Action using the template /sitecore/templates/System/Rules/Action. In this case I’m using the path /sitecore/system/Settings/Rules/Definitions/Elements/Script because the Script Element Folder is already referenced by the Item Saved rules.”

      If you simply duplicate the “Run Script” item at the first screenshot and fill the Type correctly with your assembly (Step 2), you will have the “Add Hyphens to Item Name” action available when you’re editing the Rule. All you have to do then, is to select that action at your condition (Step 3), and your code will trigger when the condition is reached.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

  Am Not Spammer

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>