es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sitecore – Obtén elementos por TemplateName en los parámetros de $props

Cómo obtener solo los elementos con una plantilla específica. Necesito esto porque es útil para los elementos bucketables, como las etiquetas.

Aquí está mi código:

$props = @{
    Title = "Test"
    Description = "Test"
    OkButtonName = "Run Report"
    CancelButtonName = "Cancel"
    Parameters = @(
        @{ Name = "TagName"; Title = "Tag Name"; Editor = "multilist"; Source = "/sitecore/system/Settings/Buckets/TagRepository/" }
        @{ Title = "Note"; Value = "SitecoreExchange"; Editor = "info" }
    )
}

Aquí está la ruta (donde quiero la plantilla específica):

Source = "/sitecore/system/Settings/Buckets/TagRepository/"
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener los elementos solo con una plantilla específica, puedes utilizar el siguiente script de PowerShell:

    $templateID = "{ID de la plantilla}"
    
    Get-ChildItem -Path "ruta al elemento padre" -Recurse |
    Where-Object { $_.TemplateName -eq $templateID }
    

    En este script, reemplaza {ID de la plantilla} con el ID de la plantilla por la cual quieres filtrar, y "ruta al elemento padre" con la ruta al elemento padre desde donde deseas iniciar tu búsqueda.

    Para tu escenario específico, puedes modificar la variable $props de esta manera:

    $props = @{
        Title = "Prueba"
        Description = "Prueba"
        OkButtonName = "Ejecutar Informe"
        CancelButtonName = "Cancelar"
        Parameters = @(
            @{
                Name = "TagName"
                Title = "Nombre de etiqueta"
                Editor = "multilist"
                Source = "/sitecore/system/Settings/Buckets/TagRepository/" + `
                         (Get-ChildItem -Path "/sitecore/system/Settings/Buckets/TagRepository/" -Recurse |
                          Where-Object { $_.TemplateName -eq "{ID de la plantilla}" } |
                          Select-Object -ExpandProperty Path |
                          ForEach-Object { $_.Replace("/sitecore/system/Settings/Buckets/TagRepository/", "") } |
                          Sort-Object)
            }
            @{
                Title = "Nota"
                Value = "SitecoreExchange"
                Editor = "info"
            }
        )
    }
    

    En esta versión modificada, $props ahora incluye un parámetro Source que popula dinámicamente las opciones para el editor multilist basado en un filtrado de elementos en la ruta /sitecore/system/Settings/Buckets/TagRepository/ que tienen el ID de la plantilla especificada. El cmdlet ForEach-Object se utiliza para eliminar el prefijo de la ruta y Sort-Object se utiliza para asegurar que las opciones se enumeren en orden alfabético.

    Esto debería devolver solo los elementos que son “bucketables” con la plantilla especificada, como las Etiquetas.

Comments are closed.