2012-06-25 19 views
6

Qualcuno potrebbe dare qualche idea su come questo può essere fatto? Questo potrebbe essere molto semplice e di base, ma non riuscivo a capirlo.Percorso di parole chiave in SDL Tridion

Ecco il mio requisito.

ho una categoria A con il bambino parola chiave B e B avuto un altro bambino Chiave C.

voglio ottenere il percorso esatto della parola chiave selezionata nel mio modello componente, diciamo per esempio, se l'utente seleziona parola chiave C, ho bisogno del valore con path come A \ B \ C e non solo come C. Ma Tridion mi dà sempre il valore come C e non come A \ B \ C. Lo schema dei componenti utilizza la vista "Albero" per selezionare le parole chiave.

Devo scrivere le funzioni personalizzate di dreamweaver per gestirlo? O il tridion viene fornito con un gestore per questo?

Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

Grazie, KK

risposta

5

parole chiave all'interno di una categoria sono unici, in modo Tridion può fare riferimento in modo sicuro per loro con il loro nome (e/o il loro TCM URI naturalmente). E poiché una parola chiave può avere più genitori, potrebbe non esserci un singolo percorso che porta dalla radice alla tua parola chiave.

Se nella tua situazione la categoria può essere rappresentata come un albero, puoi ovviamente costruire un singolo percorso per ogni parola chiave. In tal caso avrai bisogno di un codice (C#) che risalga l'asse dei genitori e concateni i nomi. È possibile inserire questo codice:

  1. in un TBB che mettete nel vostro modello prima della DWT O
  2. in una funzione di Dreamweaver personalizzata.

In entrambi i casi funzionerà correttamente.

+0

Grazie Frank per avermi aiutato. Questo è davvero un suggerimento prezioso! Molte grazie! – Krishnakumar

8

Come hai appena scoperto, la gerarchia di parole chiave Tridion è "falsa": le parole chiave vengono memorizzate come un elenco semplice, non come un elenco gerarchico (come si farebbe con le cartelle). Le informazioni sulle parole chiave padre e figlio sono memorizzate nella parola chiave stessa.

ci sono soluzioni per questo - naturalmente, per esempio, è possibile utilizzare questo in 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: aggiornato per ricorsivamente "salire" la gerarchia. TUTTAVIA una parola chiave può avere più genitori, lascerò a te la decisione di correggere ...

+0

Grazie mille Nuno per aver condiviso il tuo suggerimento. Questo aiuta davvero! – Krishnakumar

+0

Se la risposta di Nuno ti ha aiutato a risolvere il tuo problema, ti preghiamo di accettarlo facendo clic sul grande segno di spunta alla sua sinistra. –

Problemi correlati