2012-06-25 19 views
6

¿Podría alguien dar alguna idea de cómo se puede hacer esto? Esto podría ser muy simple y básico, pero no pude resolver esto.Palabra clave Ruta en SDL Tridion

Aquí está mi requisito.

tengo una categoría A con la palabra clave infantil B y B Tengo otro niño palabra clave C.

Quiero obtener la ruta exacta de la palabra clave seleccionada en mi componente de la plantilla, digamos por ejemplo, si el usuario selecciona la palabra clave C, Necesito el valor con una ruta como A \ B \ C y no solo como C. Pero Tridion siempre me da el valor como C y no como A \ B \ C. Component Schema está utilizando la vista "Árbol" para seleccionar las palabras clave.

¿Debo escribir funciones personalizadas de dreamweaver para manejar esto? ¿O Tridion viene con algún controlador para esto?

Cualquier ayuda sería muy apreciada. ¡Gracias!

Gracias, KK

Respuesta

5

Palabras clave dentro de una categoría son únicos, por lo Tridion pueden referirse de forma segura a ellos por su nombre (y/o su TCM URI, por supuesto). Y dado que una palabra clave puede tener múltiples padres, puede que no haya una sola ruta que conduzca desde la raíz a su palabra clave.

Si en su situación la categoría se puede representar como un árbol, puede, por supuesto, crear una ruta única para cada palabra clave. En ese caso, necesitará un código (C#) que recorra el eje de los padres y concatena los nombres. Puede incluir este código:

  1. en un TBB que usted pone en su plantilla antes de la DWT O
  2. en una función de Dreamweaver personalizado.

De cualquier manera funcionará bien.

+0

Gracias Frank por ayudarme. ¡Esta es realmente una sugerencia valiosa! ¡Muchas gracias! – Krishnakumar

8

Como acaba de descubrir, la jerarquía de palabras clave de Tridion es "falsa": las palabras clave se almacenan como una lista plana, no como una lista jerárquica (como la que tendría con las carpetas). La información sobre las palabras clave principales y secundarias se almacena en la palabra clave misma.

hay soluciones para esto - por supuesto, por ejemplo, puede utilizar esto en un C# TBB:

Keyword keyword = new Keyword(new TcmUri("tcm:28-3368-1024"), session); 
string hierarchy = keyword.Title; 
bool done = false; 
while(!done) 
{ 
    if (keyword.ParentKeywords.Count > 0) 
    { 
     foreach (Keyword k in keyword.ParentKeywords) 
     { 
      hierarchy = k.Title + " > " + hierarchy; 
     } 
     keyword = keyword.ParentKeywords[0]; 
    } 
    else 
     done = true; 
} 
// Include Category 
hierarchy = keyword.OrganizationalItem.Title + " > " + hierarchy; 

EDIT: Se ha actualizado a "subir" de forma recursiva la jerarquía. SIN EMBARGO una palabra clave puede tener múltiples padres, lo dejo para arreglar ...

+0

Gracias Nuno por compartir tu sugerencia. ¡Esto realmente ayuda! – Krishnakumar

+0

Si la respuesta de Nuno le ayudó a resolver su problema, acéptelo haciendo clic en la marca de verificación grande a la izquierda. –