¿Hay forma en el sitio para asegurar que cierto tipo de elemento solo puede tener 1 hijo de cierto tipo de elemento? Estoy leyendo el libro de cocina del motor de reglas, pero no recibo muchos detalles.Sitecore Insertar reglas para garantizar a lo sumo (1) hijos de cierto tipo
Respuesta
Uno de los sitios en los que trabajé tenía el requisito de que no pudieran existir más de 6 elementos secundarios por debajo de cierto tipo de elemento. Consideramos usar una regla de opción de inserción, pero decidimos abandonar la idea porque no impedía copiar, mover o duplicar elementos.
En su lugar, decidimos ampliar el evento item:created
con un controlador específicamente para esta tarea. A continuación se muestra un ejemplo simplificado de cómo funciona. Una mejora obvia sería obtener el límite máximo de hijos de un campo en el elemento principal (visible solo para los administradores, por supuesto). Probablemente puedas incluso aprovechar el motor de reglas aquí ...
public void OnItemCreated(object sender, EventArgs args)
{
var createdArgs = Event.ExtractParameter(args, 0) as ItemCreatedEventArgs;
Sitecore.Diagnostics.Assert.IsNotNull(createdArgs, "args");
if (createdArgs != null)
{
Sitecore.Diagnostics.Assert.IsNotNull(createdArgs.Item, "item");
if (createdArgs.Item != null)
{
var item = createdArgs.Item;
// NOTE: you may want to do additional tests here to ensure that the item
// descends from /sitecore/content/home
if (item.Parent != null &&
item.Parent.TemplateName == "Your Template" &&
item.Parent.Children.Count() > 6)
{
// Delete the item, warn user
SheerResponse.Alert(
String.Format("Sorry, you cannot add more than 6 items to {0}.",
item.Parent.Name), new string[0]);
item.Delete();
}
}
}
}
¿Puedes compartir todos los detalles? Soy nuevo en el sitio, y no estoy completamente seguro de dónde empezar ... ¿A dónde va este controlador de eventos? –
Aquí hay un [artículo sobre eventos de Sitecore] (http://sdn.sitecore.net/Articles/API/Using%20Events.aspx). Es viejo, pero la mayor parte sigue siendo relevante. Básicamente, debería agregar una referencia a esta clase en el archivo web.config en la sección sitecore/events y se ejecutará cada vez que se crea un elemento. –
Además, aquí hay una referencia de ejemplo: '
- 1. Algoritmo para encontrar números altos/bajos con a lo sumo 1.5n comparaciones
- 2. variables Declarar a ser de cierto tipo
- 3. ¿Cómo SUMO Filas DISTINCT?
- 4. ¿Qué es lo opuesto a od (1)?
- 5. Sitecore environments
- 6. ¿Cómo me sumo a una excepción de Java?
- 7. tipo de montón 1-aria?
- 8. 0 en [1, 2] == cierto, ¿por qué?
- 9. Conjuntos de escaneo Autofac para cierto tipo de clase
- 10. ¿Cómo hago un div automáticamente lo suficientemente amplio para acomodar a sus hijos flotantes?
- 11. Tipo de campo de lista de enlaces de Sitecore?
- 12. Conversión de tipo de JavaScript: (true && 1) vs (true | | 1)
- 13. Acceder a las configuraciones del sitecore programáticamente (Sitecore 6)
- 14. Regex: utilizando la aserción de búsqueda anticipada para verificar si el carácter existe a lo sumo un determinado número de veces
- 15. static_assert para garantizar el contrato de diseño
- 16. Garantizar que las familias de tipo derivarán ciertas clases
- 17. Comprobación del tipo de un enlace en Sitecore
- 18. Linq encontrar todo con cierto tipo
- 19. ¿Hay alguna manera de usar ON DUPLICATE KEY para actualizar todo lo que quería insertar?
- 20. valor Enlazar a lo complejo Tipo
- 21. Jackson deserializar a lo específico tipo primitivo
- 22. Cómo garantizar una mejor eficiencia volver a insertar en juegos en C++
- 23. Práctica recomendada para un proyecto de Sitecore
- 24. WCF webHttpBinding error with method parameters. "A lo sumo un parámetro corporal puede ser serializado sin elementos de envoltura"
- 25. Sitecore: loginPage?
- 26. WPF enlace de datos - establece NotifyOnValidationError a cierto para todos los enlaces con las reglas de validación
- 27. Cómo crear un tipo delimitado dentro de un cierto rango
- 28. Problemas para descargar e instalar Sitecore CMS
- 29. reglas para babosas y unicode
- 30. Reglas de Java para fundición
¡¡Gran pregunta !!! –