2012-06-25 12 views
6

これはどのように行うことができますか?これは非常に簡単で基本的かもしれませんが、私はこれを理解できませんでした。SDL Tridionのキーワードパス

ここが私の必要条件です。

私は子供のキーワードBとBとカテゴリーAは

別の子キーワードC.

を得た私は、ユーザーがキーワードCを選択した場合、私のコンポーネントテンプレート、例えばのためのセイで選択したキーワードの正確なパスを取得したいしています、私はA \ B \ Cのようなパスで値を必要とするだけでなく、Tridionは常に私の値をCとして与え、A \ B \ Cとして与えません。コンポーネントスキーマは、「ツリー」ビューを使用してキーワードを選択しています。

これを処理するためのDreamweaverカスタム関数を記述する必要がありますか?または、tridionにはこのためのハンドラが付属していますか?

ご協力いただければ幸いです。ありがとうございました!

おかげで、カテゴリ内の KK

答えて

5

キーワードは、一意なので、Tridionのが安全に自分の名前でそれらを参照することができます(および/またはそのTCM URIもちろん)。また、キーワードは複数の親を持つことができるため、ルートからキーワードまでの単一のパスが存在しないことがあります。

あなたの状況にカテゴリがツリーとして表現することができる場合は、もちろん、各キーワードに単一のパスを構築することができます。その場合、親の軸を歩き、名前を連結するコード(C#)が必要になります。カスタムDreamweaverの機能のDWT OR

  • 前に、あなたのテンプレートに入れTBBに

    1. :あなたは、このコードのいずれかを置くことができます。

    どちらにしても正常に動作します。

  • +0

    フランクを助けてくれてありがとうございます。これは本当に貴重な提案です!どうもありがとう! – Krishnakumar

    8

    Tridion Keyword Hierarchyは「偽」です。キーワードは階層リストではなく、フラットリストとして保存されます(フォルダの場合と同様)。 parentキーワードとchildrenキーワードに関する情報は、キーワード自体に格納されます。

    このためのソリューションがあります - もちろん、たとえばあなたは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:再帰的階層を「上がる」に更新します。キーワードは複数の親を持つことができますが、私はあなたにそれを修正するために残しておきます...

    +0

    あなたの提案を共有してくれてありがとうNuno。これは本当に役立ちます! – Krishnakumar

    +0

    ヌノの答えがあなたの問題の解決に役立った場合は、左の大きなチェックマークをクリックしてそれを受け入れてください。 –

    関連する問題