2013-02-27 6 views
2

해당 범주에 메타 데이터 스키마가있는 키워드가있는 범주가 있습니다. 이 스키마는 두 개의 필드로 구성되며 각 필드는 범주입니다. 매우 단순한 구조지만, 잘못 TCM에 그 메타 데이터 키워드 필드를 해결 게시하는 동안 다음과 같은 키워드 대신 제목의 URI를 : enter image description here키워드에 사용자 지정 메타의 값이 잘못되었습니다.

전개 패키지

<tcmc:Topic rdf:about="tcm:10-11325-1024"> 
     <rdfs:label>Analytics and optimization</rdfs:label> 
     <rdfs:comment>Analytics and optimization</rdfs:comment> 
     <tcmt:key>Analytics and optimization</tcmt:key> 
     <tcmt:isAbstract>false</tcmt:isAbstract> 
     <tcmt:isRoot>true</tcmt:isRoot> 
     <tcmt:metadata rdf:parseType="Literal"> 
     <Metadata xmlns="uuid:a30b06d3-b6c5-4c2e-a53b-2b88771370ed"> 
     <Divisions xlink:title="cma" xmlns:xlink="http://www.w3.org/1999/xlink"   xlink:href="tcm:0-17737-1024">cma</Divisions> 
     <InterestProfile xlink:title="CMAAnalytics" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="tcm:0-11175-1024">CMAAnalytics</InterestProfile> 
     </Metadata> 
    </tcmt:metadata> 
    </tcmc:Topic> 

3)에서의 2) 내용 내가 Tridion을 쿼리하면 다음 URL을 반환합니다.

TaxonomyFactory taxonomyFactory = new TaxonomyFactory(); 
    TKeyword taxonomy = taxonomyFactory.GetTaxonomyKeywords(“tcm_of_the_category”); 
    if (taxonomy != null && taxonomy.KeywordChildren != null) 
    { 
     foreach (var item in taxonomy.KeywordChildren) //keyword metadata contains tcm uri with zero instead of title 
     { 
      Keyword keywordChildren = item as Keyword; 
      if (keywordChildren != null) 
      { 
       . . . 
      } 
     } 
    } 

어떤 문제가 발생할 수있는 사람이 있습니까?

답변

3

한 눈에 내 생각에 카테고리를 변환하는 데 사용 된 내부 템플릿은 DB (또는 BL 레이어에서 충분히 근접한)에서 직접 메타 데이터 필드 데이터를 읽고 그것에 청사진 규칙을 적용하지 않는 것입니다. 공연).

콘텐츠에서 TCM Uris를 보면 데이터베이스에 저장 될 때 모두 게시 ID로 0을 사용하며이 ID는 "읽기"시간에 수정됩니다.

전화 :이 문제를 해결하기 위해 Tridion에 문의하면 카테고리 게시의 성능이 떨어지거나 배달 측에서 처리 할 수 ​​있습니다. 게시자는 Uri가 0이고, 어떤 용도로든 사용하려는 경우 현재 발행물 ID로 바꿔야한다는 것을 알고 있습니다.

편집 그래서 난 다시 가서 몇 가지 빠른 해킹을했다. Tridion에 따르면 실제로 "Divisions"필드의 "Value"가 키워드 URI이므로 키워드의 콘텐츠를로드 할 수 없습니다. 그럴리 없어.

이 주위

빠른 방법 :

TaxonomyFactory tf = new TaxonomyFactory(); 
Keyword taxonomy = tf.GetTaxonomyKeywords("tcm:5-369-512"); 
if(taxonomy != null && taxonomy.KeywordChildren != null) 
{ 
    foreach (Keyword item in taxonomy.KeywordChildren) 
    { 
     NameValuePair key = (NameValuePair) item.KeywordMeta.NameValues["Field1"]; 
     string correctUri = key.Value.ToString().Replace("tcm:0-", "tcm:5-"); 
     Keyword theOtherKeyword = tf.GetTaxonomyKeyword(correctUri); 
     string title = theOtherKeyword.KeywordName; 
    } 
} 

지금 ... 당신은 아마 다시 :) 당신이 할 수있는

+0

답장을 보내 주셔서 감사합니다. 그래서 다른 말로하면 Tridion의 현재 구현으로 KeywordMeta 사전에 키워드의 제목을 얻을 수 없습니까? KeywordMeta 속성에는 항상 키워드 입력란에 0으로 설정된 tcm uri가 포함됩니까? – beardeddev

+0

잘 모르겠습니다. 제목은 메타 데이터에 있습니다. 이 기능을 더 잘 제어하려면이 정보를 페이지로 게시하는 자체 템플릿을 작성해야합니다. 간단한 예 : http://nunolinhares.blogspot.com/2010/04/outputting-keyword-hierarchy-in-xml.html –

+0

죄송합니다. 분명히 설명해 드리겠습니다. ((NameValuePair) ((Keyword) item) .KeywordMeta.NameValues ​​[ "InterestProfile"]). 값이 tcm uri와 같습니다 (예 : tcm : 0-17786-1024). 대신에 제목이 필요합니다. . 그게 가능하니? – beardeddev

1

을 광고 소재 게재 ID에 나보다 조금 더 똑똑되고 싶어 : 문제의 키워드를로드 해당 필드가 구성 요소 링크로 표시되면 특정 키워드 항목 (개체)에 연결됩니다. 따라서 당신은 주로 URI를 얻습니다. 그리고 나는 그것이 Value 속성으로 자동적으로 해석 될 것이라고 생각하지 않습니다.

그래서 다음 단계는 URI를 사용하여 Keyword 객체를 얻고 URI를 구성하여 올바른 게시 컨텍스트를 포함하는 것입니다.