Keystone for Sitecore

Uma coisa que muitos parceiros Sitecore certamente já possuem é um acelerador para iniciar suas soluções. Estes aceleradores normalmente consistem de projetos exemplo ou partes retiradas de diversos projetos diferentes com lições aprendidas sobre o que funciona e o que não funciona com Sitecore CMS. O grande problema é que na maioria dos casos estes componentes estão dispersos e não devidamente estruturados para funcionar como um acelerador de verdade, tornando-se muitas vezes muito mais um “desacelerador” do que outra coisa.🙂

A Nonlinear preparou um kit profissional para real aceleramento de desenvolvimento de aplicações baseadas em Sitecore, Keystone for Sitecore.

Keystone vem com uma biblioteca de mais de 30 componentes diferentes todos já devidamente configurados para perfeito funcionamento com Sitecore DMS, suporte para multiplos sites e multiplos idiomas e design responsivo baseado no framework Twitter Bootstrap.

Caso você possua uma licença do Sitecore queira ver o Keystone para o Sitecore em funcionamento você pode obter a sua cópia a partir do seguinte endereço:

http://keystoneforsitecore.com/startnow.aspx

Back to Brazil Business

Após alguns meses trabalhando para uma empresa com foco principalmente em projetos nos Estados Unidos estou agora de volta à Nonlinear e também aos trabalhos com Sitecore tanto na América do Norte quanto no Brasil.

Portanto, é hora de tirar a poeira do blog e voltar a escrever para todos no Brasil interessados em Sitecore. Na lista de posts que tenho em mente para colocar aqui nas próximas semanas incluo:

– Novidades provindas do último Sitecore Symposium

– Maiores detalhes quanto a configuração de sites “non-English” com Sitecore

– Sitecore MVC!

– Keystone para Sitecore

– Como se tornar um desenvolvedor Sitecore estando em um país sem treinamento oficial Sitecore

Abraços e até breve!

Sitecore SPEAK – Uma nova abordagem ao desenvolvimento de módulos

Sitecore possui uma série de módulos desenvolvidos por sua equipe e por empresas parceiras. Muitos desses módulos podem ser encontrados em seu marketplace. Eu mesmo já escrevi um módulo para o Sitecore algum tempo atrás para facilitar o compartilhamento de items entre diferente sites usando o que demos o nome na época de “Shadow Templates”. Basicamente a idéia era permitir a criação de itens que seriam apenas uma referência à outro item e do qual herdariam o seu conteúdo, porém permitindo a aplicação de uma camada de apresentação diferente do item origem.

Para elaborar a interface do módulo e permitir o seu uso a partir de dentro do desktop do Sitecore eu tive que aprender a criar e configurar páginas usando a markup do XAML. Algo que não foi tão simples e divertido (como diz a página do link mencionado para XAML) para mim e que não me permitia debugar o código diretamente quando algo não funcionava exatamente do jeito que eu esperava.

Com as novas versões do Sitecore agora é possível criar tais módulos e ter sua interface integrada com o Sitecore usando puro e simples C#.Net e uma camada de apresentação usando o padrão do Sitecore para apresentação de quaisquer páginas de sites desenvolvidos com a ferramenta (layouts and sub-layouts Asp.Net). Tal abordagem foi batizada pela Sitecore com o nome de SPEAK (Sitecore Process Enablement and Acceleration Kit).

O primeiro módulo com o qual tive contato desenvolvido usando SPEAK é o E-mail Campaign Manager. Um módulo bem desenvolvido, simples e de fácil compreensão que nos fornece um bom exemplo de como utilizar esta nova abordagem para desenvolvimento de módulos. Algo que certamente os desenvolvedores Sitecore irão receber com grande entusiasmo e que deverá aumentar ainda mais o número de extensões e integração de módulos com o Sitecore.

Sitecore Digital Marketing System: por onde começar?

Gostaria de saber mais sobre como começar a utilizar o Sitecore Digital Marketing System (DMS)?

Randy Woods e Amanda Shiga da Nonlinear Digital em sua apresentação ao encontro virtual de usuários do Sitecore falam sobre como construir um roadmap tático para o Sitecore DMS considerando diferentes elementos tais como nível de esforço e tempo necessário bem como comportamento de usuários e performance do website.

Veja o video abaixo (em inglês):

Client Translation para Sitecore

O Sitecore ainda não vem com uma versão de seu cliente traduzido para o português. No entanto, isto não seria uma tarefa tão difícil de ser realizada. Talvez árdua e um pouco demorada, mas de forma alguma difícil. Isto por que a tradução do cliente pode ser feita através da importação de um arquivo XML contendo todas as palavras chaves e seu equivalente no idioma desejado. Por exemplo, o seguinte termo foi retirado do arquivo XML para tradução do cliente do Sitecore para francês do Canada:

<phrase key=””{0}” is not a CSV file.”><fr-CA>“{0}” n’est pas un fichier CSV.</fr-CA></phrase>

O item acima ficaria para português do Brasil assim:

<phrase key=””{0}” is not a CSV file.”><pt-BR>“{0}” não é um arquivo CSV.</pt-BR></phrase>

Simples, não? Agora só fazer isso à todos as demais 8325 “key phrases” no arquivo🙂

Com o aumento da demanda por Sitecore no Brasil e Portugal esta tarefa será certamente em breve cumprida.

Migração de conteúdo para o Sitecore CMS

Um dos pontos muita vezes esquecidos em projetos de re-desenvolvimento de websites e substituição de ferramenta de CMS é a migração do conteúdo do
site antigo para o novo site. Neste post iremos tratar de alguns pontos a serem considerados no planejamento da migração e como este pode ser
automizado quando migrando-se para o Sitecore CMS.

O processo de migração pode ser manual ou automatizado, porém, se não for planejado apropriadamente pode causar muita dor de cabeça e perda de
tempo.

Os pontos a serem levados em serem levados em consideração no planejamento da migração de conteúdo são:

1. Mapeamento da arquitetura da informação (sitemap): considerando que o novo site possa ter uma nova arquitetura de informação é importante mapear
as páginas atuais e qual será a sua posição dentro do novo site. Se a arquitetura será mantida exatamente igual o site atual este processo fica mais
fácil, porém o mapeamento ainda será importante pois devido a características diversas dos sistemas existentes a URL poderá não ser exatamente a
mesma para cada página migrada.

2. Mapeamento de assets (arquivos em geral tais como PDF, XLS, imagens, vídeos, arquivos de áudio, outros documentos): será importante saber de
dantemão se a organização de arquivos que residam no file-system do sistema operacional serão migrados seguindo exatamente a sua organização atual ou
uma nova organização no novo CMS. Aqui também é importante atentar-se para mudanças de URL uma vez migrados todos os assets.

3. Elaboração de templates para preparo de conteúdo novo: em formato Word para migração manual ou então em formato XML para migração automizada
(assumindo que os campos para os templates no novo CMS já estejam devidamente definidos).

Migração automatizada para Sitecore

O Sitecore CMS facilita bastante o processo de migração por possuir uma API que permite a automatização da migração de forma rápida e segura. O
formato mais apropriado para a organização do conteúdo a ser migrado é XML. Trata-se portanto de um processo em duas etapas:

1. Exportação do conteúdo do site ou CMS atual para XML
2. Importação do arquivo XML para o Sitecore utilizando-se a sua API.

O formato para o arquivo XML pode variar conforme as especificidades de cada site e projeto. Alguns items que deverão estar presentes
obrigatoriamente portanto são:

a. Nome do item na árvore de conteúdo do Sitecore e o Título da página
b. Sua posição na hierarquia do conteúdo (a qual pode ser definida tanto utilizando-se um sistema númerico, ex.: 1.1, 1.1.1, 1.1.2, etc. ou a própria
organização dos itens dentro do arquivo XML, ex.: <PAG1.1><PAG1.1.1></PAG1.1.1><PAG1.1.2></PAG1.1.2></PAG1.1>)
c. Se o item (página) deverá ou não ser incluído nos menus de navegação do site
d. Qual template Sitecore a ser utilizado (ou seja, qual tipo de conteúdo: notícia, landing page, página de vídeo, etc.)
e. Quaisquer outras configurações específicas para a página tais como atribuições de segurança, acesso, etc.
f. Links internos precisam ser indicados apontando-se para a posição da página linkada, e não a sua URL original visto que esta poderá ser diferente
no novo sistema.

Exemplo de XML para algumas páginas a serem migradas:

<?xml version=”1.0″?>
<paginas>
<pagina id=”1.0″>
<name>Home</name>
<titulo>Página Inicial</titulo>
<template>Home Page</template>
<banner_image>/images/banner01.png</banner_image>
<body>Olá mundo, este é o conteúdo da home page</body>
</pagina>
<pagina id=”1.1″>
<name>Sobre-Nos</name>
<titulo>Sobre Nós</titulo>
<template>Landing Page</template>
<body>Aqui falamos sobre nós. Para entrar em contato conosco (#LINK=”1.2″)clique aqui(#CLOSELINK)</body>
</pagina>
<pagina id=”1.2″>
<name>Contato</name>
<titulo>Contato</titulo>
<template>Landing Page</template>
<body>Informações de contato</body>
</pagina>
</paginas>

O script de importação para o Sitecore deverá ler o XML acima e utilizando SecurityDisabler() do Sitecore irá primeiro criar os items para cada
página e depois entrar o conteúdo para cada uma destas páginas. A criação de todas as páginas é uma primeira etapa para garantir que links internos
serão apropriadamente configurados (você não pode ligar um item à outro item que ainda não foi criado).

O pseudo-código abaixo apresenta em linhas gerais o funcionamento do script:

public void ImportXML()
{

using (new SecurityDisabler())
{
Database master = Sitecore.Configuration.Factory.GetDatabase(“master”);
Item parentItem = master.Items[“/sitecore/content”];

// Loop de leitura do XML para criação das páginas
// Para cada node (página) do arquivo xml…

{
string itemName = LerCampo(“name”); // função para ler um campo específico do node (página) do XML
string templateName = lerCampo(“template”);

TemplateItem template = master.GetTemplate(templateName);
parentItem.Add(itemName, template);
}

// Reinicia o loop para entrar o conteudo
// Para cada página do arquivo xml…

{
string pathToItem = getPath(); // função para construir o path para o item conforme sua posição na hierquia e o nome dos items
item = master.GetItem(pathToItem);
item.Editing.BeginEdit();
try
{
item.Fields[“Titulo”].Value = lerCampo(“titulo”);
… // repete a linha de cima para cada campo adicional conforme o template da pagina sendo editada
}
finally
{
item.Editing.EndEdit();
}
}
}
}

Abraços e até a próxima.

Experiência com CMS

Trabalho com tecnologia há mais de 20 anos, e especificamente com sistemas de gerênciamento de conteúdo (CMS) ao longo dos últimos 6 anos. Neste periodo já participei do desenvolvimento de projetos envolvendo Ektron, RedDot, CQ5, Umbraco, Joomla, OpenCMS e Sitecore. Cada um destes produtos oferecia um desafio diferente e uma concepção diferente sobre o que um CMS deveria fazer, como deveria fazer e principalmente, como deveria ser implementado e administrado. Do ponto de vista do usuário final alguns produtos aparecem mais atraentes que outros, já do ponto de vista do desenvolvedor irá depender tanto de sua facilidade ou domínio com uma linguagem em particular (.Net, Java ou PHP) ou com o seu conhecimento da ferramenta particular em si.

Tendo trabalhado principalmente com soluções .Net comecei com o Ektron, no entanto foi com o Sitecore que pude compreender de fato a real extensão do que uma ferramenta de CMS bem escrita deve e pode fazer. Não desmerecendo nenhuma das outras ferramentas citadas acima, vou concentrar meus posts no Sitecore CMS, do qual já também participei de projetos de migração a partir de outros CMS tais como Vignette e Time-to-web para o Sitecore, sendo possível em alguns casos automatizar a migração dada a natureza como Sitecore organiza os itens de conteúdo em uma estrutura de árvore (XML) de fácil compreensão.

Caso queiram entrar em contato para saber mais sobre os projetos de CMS que trabalhamos e os resultados com as mais diversas ferramentas fique a vontade para me enviar uma mensagem através do email: contato@nonlinearcreations.com.br