2012-08-22 11 views
6

¿Alguien tiene experiencia en establecer el campo __Renderings en Sitecore para que no se comparta? Estamos construyendo una solución multi-sitio-multi-idioma y necesitaríamos que los (sub) diseños fueran diferentes en diferentes idiomas. Por ejemplo, el sitio en idioma inglés podría tener una presentación secundaria que la versión sueca del mismo elemento no tiene y todos los componentes de presentación no siempre tienen la misma fuente de datos para diferentes idiomas.Configuración del campo __Renderings no compartida en las consecuencias de Sitecore?

Una solución algo fácil para esto sería simplemente desmarcar "compartido" en el campo __Renderings en el /sitecore/templates/System/Templates/Sections/Layout template, pero ¿tiene esto otras consecuencias? ¿O hay una mejor manera de manejar este requisito?

+1

Un inconveniente principal es que está modificando una plantilla de sistema de sitecore que no es compatible. Esto hará que las futuras actualizaciones sean más difíciles. –

+0

Además de su ejemplo de Idioma, también hay un caso de uso para variar la presentación entre las versiones de los elementos. Por ejemplo, cambiar un origen de datos en una representación entre la versión 1 y 2, o simplemente cambiar el orden de clasificación de las representaciones. Esto no es posible cuando se marca "compartido". –

Respuesta

2

La modificación del comportamiento predeterminado de Sitecore de esta manera generalmente no es una buena idea. No es transparente para otras personas que podrían funcionar con el sistema en el futuro y podría generar resultados inesperados.

Imo, es mejor hacer un cambio dentro de los (sub) diseños para que cargue diferentes archivos según el idioma actual.

En cuanto a la consecuencia. Funcionará como espera cuando hace que el campo _Renderings no se comparta. Podrá establecer diferentes detalles de presentación para cada versión de idioma. La consecuencia es que ahora debe configurarlo para cada versión de idioma ... por lo que será menos fácil de administrar.

+0

Preferiría gestionar esto desde Sitecore y no desde código. Lo que quiero lograr es tener un solo elemento para tener diferentes subcajas dependiendo del idioma, u ordenar las subcajas de manera diferente por idioma. Cada sublayout también podría tener una fuente de datos diferente dependiendo del idioma. El inglés podría no tener las mismas subcanceles que el sueco. Además, esto debe ser editable utilizando el Editor de páginas. – andreasordell

1

En su lugar usaría los Dispositivos de sitecore. Para cada idioma, puede definir un Sitio y cada sitio puede tener su propio Dispositivo. Esto funcionará de fábrica si tiene un nombre de dominio para cada idioma (www.site.com, www.site.de, www.site.fr etc ...)

Si tiene uno sitio (un nombre de host) para todos los idiomas, puede cambiar los dispositivos con un procesador de canal httpRequestBegin.

En este artículo, http://briancaos.wordpress.com/2012/04/12/identifying-mobile-devices-in-sitecore/, se describe cómo identificar dispositivos móviles. No es difícil reescribir la lógica para cambiar dispositivos dependiendo del idioma.

Cuando haya definido diferentes dispositivos para cada idioma, simplemente coloque las representaciones en el dispositivo que coincida con su idioma. Y todavía tiene la posibilidad de un dispositivo de respaldo para todas aquellas páginas donde todas las representaciones son las mismas.

La modificación del comportamiento predeterminado de Sitecore podría funcionar por el momento, pero el uso y la ampliación de la plataforma Sitecore es una mejor manera de avanzar.

+0

¡Esto es interesante! Aunque no estoy seguro de cuán fácil será para los editores web, usar el Editor de páginas de Sitecore. Voy a mirar esto más! – andreasordell

+0

Para un sitio con 5 idiomas, cuando agrega un nuevo componente común, debe agregarlo manualmente a los 5 idiomas. Eso requeriría mucho trabajo y pruebas adicionales. Supongo que depende de qué porcentaje de tu estructura de contenido sea común. Si todo es diferente de todos modos, entonces esto podría estar bien. – GeekyMonkey

5

Mi propia preferencia cuando necesito intercambiar elementos visuales basados ​​en algo como el idioma, el país de origen, etc. es usar la edición de normas de personalización de Sitecore para intercambiar fuentes de datos y modificar la presentación de esa manera. No implica cambiar el comportamiento predeterminado de Sitecore y le permite acceder a la funcionalidad incorporada de Sitecore.

Si sus diferentes 'sublayouts' son en realidad solo los orígenes de datos que envían varias reglas de personalización, puede configurar todo esto con OMS/DMS y confiar en el motor de Sitecore para presentar los componentes que necesita dado el estado actual. Para el rendimiento, ir con la versión más reciente de DMS es probablemente el mejor (creo que 6.5 Update 5 es ahora la versión recomendada).

+0

Usar el DMS definitivamente podría ser una gran opción. También permite que el usuario edite a través del Editor de páginas. Sin embargo, podría ser un poco complejo para los usuarios básicos entender cómo usar la personalización. Cambiar la fuente de datos es un aspecto clave, ya que no todos los elementos tienen todos los idiomas, etc. ¿Está el parámetro sc_lang disponible para personalización? – andreasordell

+0

Si abre el editor del conjunto de reglas al personalizar un componente, puede ver la gran lista de condiciones/reglas disponibles. Una de las secciones es para "Artículos", con una regla de "donde el idioma del elemento se compara con el valor". También hay reglas para los sitios, así como para las personas. –

+0

Diría que esta es "la mejor manera de manejar el requisito" y, por lo tanto, la respuesta a su pregunta. En mi experiencia, entrometerse con Sitecore de la manera que sugieres te puede meter en problemas. Quizás no ahora, lo he probado yo mismo, y no hay muchos efectos secundarios realmente serios, pero más adelante. –

1

De hecho lo hemos hecho, y en su mayor parte hay pocos efectos secundarios. De hecho, es la única manera en la que obtendrás flujo de trabajo en __Renderings changes. Lo combinamos con Partial Language Fallback para que los idiomas puedan heredar el valor del inglés.Sin embargo, tenga cuidado, ya que si un elemento se clona, ​​siempre extraerá su valor predeterminado del clon primero, en lugar de valores estándar/retroceso.

Cuestiones relacionadas