2012-10-29 15 views
5

Załóżmy następujące publikacje dla tego pytania.Publikowanie głównej publikacji komponentu

20 Zawartość -> tcm: 0-20-1

...

...

...

70 WWW -> tcm: 0-121-1

I jest komponentem utworzonym w ramach publikacji (20 Content) i publikuję ten komponent z jednej z publikacji dla dzieci (70 Web). Używam szablonu Dreamweaver do pisania interfejsu użytkownika i wywołuję niestandardowe funkcje C# z DWT. Podczas publikowania ten komponent będzie nazywał się 121-432 w prezentacji składników. Czy istnieje sposób uzyskania publikacji źródłowej miejsca, w którym komponent został utworzony? To powinienem dostać 20-432, zamiast uzyskać 121-432.

Próbowałem Komponent .GetBluePrintChain() i zwraca listę, która ma wszystkie hierarchii planu. Mogłabym dostać 1. pozycję z tej listy, aby uzyskać ten komponent wraz z publikacją, w której został faktycznie utworzony.

Ponieważ będę musiał nazwać tę metodę w wielu miejscach, po prostu chciałem sprawdzić, czy nie ma innego bezpośredniego/lepszego sposobu, aby to zrobić.

Czy ktoś może zasugerować?

Odpowiedz

7

Musisz zajrzeć do własności komponentu OwningRepository, więc:

var componentIdInOwningPublication = new TcmUri(
    component.Id.ItemId, 
    ItemType.Component, 
    component.OwningRepository.Id.ItemId 
); 

Put że w niestandardowych funkcji Dreamweaver-wymagalne i powinno być dobrze iść.

Aktualizacja Istnieje również metoda pomocnik nazywany CreateTcmUriForPublication które wykonuje tłumaczenia. Więc można również powołać się na tę jedną takiego:

var componentIdInOwningPublication = TemplateUtilities.CreateTcmUriForPublication(
    component.OwningRepository.Id.ItemId, 
    component.Id 
); 

Rezultatem obu fragmentów jest taki sam, choć: na TcmUri składnika w kontekście jego posiadanie repozytorium.

+2

Zgadzam się ze sprawdzeniem OwningRepository, ale myślę, że masz błędną kolejność argumentów. W TOM.NET podpis ma postać 'public TcmUri (int itemId, ItemType itemType, int publicationId)' z jakiegoś powodu. –

+0

Dzięki Peter, zaktualizowałem swoją odpowiedź. –

+0

@FrankvanPuffelen Próbowałem tego, ale nadal nie otrzymuję identyfikator publikacji poziomu tworzenia komponentu. Mam komponent 020 publicaton i posiadanie CT w Publikacji projektu 030 i podczas wykonywania podglądu w publikacji sieci Web 070 nadal widzę komunikat tcm o publikacji 070. – Balaji

Powiązane problemy