2012-03-30 4 views

Odpowiedz

11

Obawiam się, że musisz napisać C# TBB (fragment lub zespołu):

TcmUri templateId = engine.PublishingContext.ResolvedItem.Template.Id; 
if (templateId.ItemType == ItemType.ComponentTemplate) { 
    Item item = package.CreateStringItem(ContentType.Text, templateId.ToString()); 
    package.PushItem("ComponentTemplateID", item); 
} 

Można tylko dostęp do ComponentTemplate.ID od wewnątrz układu Page DWT ...

+0

Niezupełnie "dostęp", ale jeśli DWT jest używany tylko z określonym szablonem, czy możesz go zakodować? Co ja mówię, to jest @Frank, o którym mówimy. –

+0

To może być Frank, ale w tym przypadku pracuje on na trochę realistycznej stronie internetowej. Więc niestety kodowanie to nie jest możliwe. Napisanie ton kodu w celu rozwiązania problemu jest jednak opcją; więc jak dotąd biorę sugestię Mihaia, ale potem umieszczam ją w źródle funkcji, które mogę wywołać z mojego DWT @@ GetComponentTemplate() @@ –

+1

Może ton kodu nie jest potrzebny. Wygląda na to, że @@ ID @@ zwraca identyfikator szablonu komponentu w podglądzie i publikowaniu, ale nie w narzędziu do tworzenia szablonów. Na przykład '@@ Component.ID @@@@ ID @@' daje mi 'tcm: 6-1541 tcm: 6-1541' w Template Builder, ale' tcm: 6-1541 tcm: 7-81-32' w podglądzie. –

1

Dodaj parametr "ComponentTemplateID" do wywołania szablonu w szablonie złożonym. Możesz wtedy uzyskać do niego dostęp w taki sam sposób, jak zmienne pakietu.

+1

Mimo interesującej alternatywy, nadal musiałbym wpisać tę wartość parametru ręcznie. Zatem działanie takie jak kopiowanie/wklejanie, przenoszenie lub lokalizowanie CT powoduje, że wartość parametru jest niepoprawna. –

+0

W rzeczywistości Frank. Często wolę robić rzeczy w konfiguracji niż w kodzie, ale może poszedłem trochę dalej. Nie przeszkadza mi ktoś, kto kopiuje/wkleja to naprawić, i nie mam nic przeciwko posiadaniu projektu technicznego, który zakazuje lokalizowania CT, ale problem z portowaniem jest po prostu zbyt nieprzyjemny. +1 do rozwiązania Mihai. –

1

@@[email protected]@ poda szablon TCM URI komponentu podczas przeglądania (w CME, a nie w Konstruktorze szablonów) lub Publikacji.