2012-05-02 2 views
1

템플릿 코드는 TCDL 태그를 적절한 콘텐츠 제공 버전으로 변형 할 수 있습니다.서식있는 텍스트 필드에 동적 구성 요소 프레젠테이션 포함?

템플릿 출력 할 수 있습니다 :

<tcdl:Link .../> 
<tcdl:ComponentPresentation .../> 

배달 측이 형식에 태그를 얻을 것입니다 :

<tridion:ComponentLink ... /> 
<tridion:ComponentPresentation ... /> 

질문 : 는 것이 가능 내용 작성자는 동적 구성 요소를 입력 할 수 있나요 서식있는 텍스트 필드 형식의 프레젠테이션 (DCP) 그렇다면 특정 형식이 선호되며 링크 된 DCP를 어떻게 게시해야합니까?

편집 : 추가 된 컨텍스트와 Will의 기사로 연결되는 링크가 변경되었습니다.

또한이 방법과 유사한 일부 구문을 Will Price specifically for SiteEdit using DWT and C# assembly help에서 모방 할 수 있습니다.

+1

페이지 템플릿의 DWT에서와 같이 서식있는 텍스트 필드에서 DCP를 참조 할 수있는 방법이 있는지 묻고 싶습니다. 대답은 '예'입니다. DWF에서와 마찬가지로 RTF의 소스 탭에 동일한 asp 또는 java 코드를 추가하기 만하면됩니다. 못생긴 일이지만, 할 수 있습니다. –

+0

네, 그건 제가 두려워하는 기술적 인 질문입니다. –

답변

3

나는 John에 동의합니다. 이것을 RTF의 컴포넌트 링크로 구현할 것입니다. 하지만 템플릿 코드를 사용하지 않을 경우 Tridion의 LinkTagHandler를 재정의합니다. doEndTag 메서드에서 링크 된 구성 요소를 일반 동적 링크 (이 경우에는 수퍼 클래스를 호출하는 것)로 해결할 것인지 아니면 DCP를 삽입 할 것인지 (이 경우 호출 할 수 있음)를 확인할 수 있습니다 ComponentPresentationTagHandler)를 호출합니다.

그런 다음 태그 처리기를 구성하여 Tridion 기본 LinkTagHandler를 재정의 할 수 있습니다 (cd_deployer_conf.xml에서이 작업을 수행 할 수 있습니다). 나는 너에게 이것들을 시도하지 않았지만 그것이 효과가없는 이유를 알지 못한다.

cd_deployer_conf.xml에 다음을 추가, 사용자 정의 태그 핸들러를 구성하려면 :

<TCDLEngine> 
    <Properties> 
     <!-- keep whatever you have in this section! --> 
    </Properties> 
    <Tags> 
     <Tag Namespace="tcdl" Name="ContentHeader"><Handler Class="com.tridion.tcdl.tags.ContentHeaderTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="Link"><Handler Class="com.mycompany.tridion.extensions.CustomTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="Link"><Handler Class="com.tridion.tcdl.tags.DynamicLinkInfoTracker"/></Tag> 
     <Tag Namespace="tcdl" Name="TargetGroup"><Handler Class="com.tridion.tcdl.tags.TargetGroupTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="ComponentPresentation"><Handler Class="com.tridion.tcdl.tags.ComponentPresentationTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="FirstLine"><Handler Class="com.tridion.tcdl.tags.FirstLineTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="IncrementTrackingKey"><Handler Class="com.tridion.tcdl.tags.IncrementTrackingKeyTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="PositionMarker"><Handler Class="com.tridion.tcdl.tags.PositionMarkerTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="ContextProperty"><Handler Class="com.tridion.tcdl.tags.ContextPropertyTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="Dependency"><Handler Class="com.tridion.tcdl.tags.DependencyTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="Comment"><Handler Class="com.tridion.tcdl.tags.CommentTagHandler"/></Tag> 
     <Tag Namespace="tcdl" Name="TaxonomyControl"><Handler Class="com.tridion.tcdl.tags.TaxonomyTagHandler"/></Tag> 
    </Tags> 
</TCDLEngine> 

한 가지 중요한 참고 : 내장 된 태그 핸들러 중 하나를 무시하기로 결정한 경우, 당신은 지정을 모두 필요 그들의!

+0

Quirijn에게 감사의 말을 전합니다. CM과 CD 사이의 공간을 고려하지 않았습니다. 'doEndTag' ("_Creating custom TCDL tags_"및 "_SSL Tridion_이 관리하는 _ _ 웹 사이트 기능 확장 _")을 검색하는 [SDL Live Content] (http://sdllivecontent.sdl.com/LiveContent/)에서 몇 가지 예를 발견했지만 URL도 여기 코멘트에 링크 오래). –

+0

특정 솔루션은 주어진 환경 및 팀에 따라 달라질 수 있습니다. –

1

나는 완전히 질문을 이해하지만, 여기에 간다 확실하지 : 사용자가 구성 (구성 요소 프리젠 테이션 및 출력 형의 형태)에 값이 해결됩니다에 따라 서식있는 텍스트 필드 내에서 구성 요소 링크를 입력

경우 , 가장 가능성이.

자신 만의 형식으로 자신의 C# 빌딩 블록을 해결 한 다음 자신의 tcdl 확장자를 작성하여 구문 분석 할 가치가 있습니다. 당신이 ... 구성 요소 프리젠 테이션 내부 Tridion 구성 요소 프리젠 테이션을 넣어하려는 경우

나는 (! 많은) 데이터 모델이 조금 생각 엉망 :

+0

감사합니다. 일반적으로 @Mihai 개요와 같이 콘텐츠 전달 측 쿼리를 권장하지만 요구 사항에는 파일 기반 게시 (사용자 지정 메타 데이터 또는 쿼리 없음)가 포함됩니다. 어쩌면 이러한 디자인 중심 RTF는 DWT로 수행 될 수 있습니다. C# TBB는 구성 요소를 사용하는 경우 CP를 구문 분석하거나 DWT에서이를 선택하는 데 도움이 될 수 있습니다. –

1
난 경우

윌의 문서 (단지 SiteEdit을 말한다 오해하지 마라). 귀하의 질문에 대한 일반적인 메커니즘에 대한 'RTF 필드의 DCP를 포함하여'입니다.

다른 DCP를 RTF에서 참조 할 수 있도록 허용하는 것은 제 생각에 매우 정결하지는 않습니다. 나는 그것이 나쁜 습관이라고 말하기 위해 갈 것입니다. DCP의 컨텍스트에서 레이아웃과 컨텐츠를 혼합하지 마십시오. 템플릿 또는 메타 데이터를 통해 수행해야하는 작업이라고 생각합니다.

필자는 (D) CP를 일종의 메타 데이터를 사용하기 위해 페이지에 배치하거나 쿼리해야한다고 생각합니다. 아마도 DCP에 태그를 붙이기위한 택 소메 미스를 원한다면 다른 컴포넌트 (컨트롤 컴포넌트라고 부르 자)에서 어떤 DCP를 질의하고 페이지에 표시 할 것인지에 대한 어떤 종류의 기준 칵테일을 지정할 수 있습니다. 템플릿은 Content Delivery 쪽에서 실행될 코드 (예 : 맞춤 태그)를 생성합니다.

귀하의 요청과 달리, 링크 목록이 저자에게 더 이해할 수 있습니다. 당신이 RTF에서 DCP를 함께 진행하기로 선택한 경우

마지막으로, 나는 그것이 단지에 이름 지정 규칙을 찾는 문제이다 추측, 귀하의 요구로 돌아갑니다 방법 RTF에서 DCP의에 ' '. 한 가지 가능성은 C# TBB가 구문 분석하고 <tridion:ComponentPresentation.../> 호출로 바꿀 수있는 특수하게 조작 된 Component Link (어쩌면 특정 target 특성이있는)을 사용하는 것입니다.이 링크는 무결성, 일관성, 포팅 등을 위해 유지되기 때문에 RTF에서 컴포넌트 링크를 사용할 것입니다 ...

+0

아, 잘못된 링크가 있습니다. 예, 일반적인 요구 사항에 특히 해당합니다. ;-) 나는 질문 제목과 링크를 업데이트했다. 나는이 유형의 "임베디드"(D) CP에 더 적합한 페이지, 쿼리 또는 링크 목록에 동의합니다. DCP는 구성 요소가 만들어지는 공유 콘텐츠 게시의 컨텍스트에 실제로 존재하지 않습니다. 이를 유도하는 주요 요구 사항은 동일한 아이디어를 사용하지만 1 : 1 콘텐츠 매핑 (1 : 많은 CP 대신)을 사용하는 기존 WCM 구현입니다. –

관련 문제