2012-09-05 14 views
5

Kiedy publikujemy jakiś element strony/dynamiczny z tridionu, można dodać zewnętrzny plik multimedialny/treść (np. Obraz jpg) do bieżącego pakietu wykonawczego/renderowania przy publikacji time.So, czy ostateczny pakiet transportowy zawiera ten plik binarny wraz z oryginalną publikowaną treścią? Czy można to osiągnąć za pomocą dostosowywania renderera/resolvera tridion? Jeśli tak, proszę podać dane wejściowe.push zewnętrzny plik multimedialny w pakiecie w czasie publikowania tridion

* Uwaga: * binarny treści, które musi być wciśnięty do spakowania w publikować czas nie jest obecny jako składnik multimedialnych w Tridion, że znajduje się w innej lokalizacji pliku zewnętrznego tridion CMS.Instead mamy jakąś skrótową multimediów składnik używany wewnątrz opublikowanego komponentu/strony, który ma jakiś fałszywy obraz. planujemy zastąpić obraz początkowy oryginalnym obrazem w czasie publikowania (renderowania/rozdzielania).

Ponieważ mamy ogromną większość zawartości binarnej przechowywanej w narzędziu DAM, nie chcemy, aby dane te były odtwarzane jako komponent multimedialny w tridionie, ale chcemy wykorzystać te dane przez zapytanie do narzędzia DAM i dołączenie go do pakietu tridion z niektórymi logiczne referowanie referencyjne w celu utrzymania odwzorowania między jednym a drugim programem multimedialnym tcmid na oryginalną zawartość w niektórych bazach danych mapowania w celach informacyjnych).

Daj nam znać, jeśli istnieje jakieś rozwiązanie, aby dołączyć zewnętrzną zawartość binarną do pakietu w czasie publikacji.

Odpowiedz

10

Najlepszym - i najłatwiejszym sposobem - jest użycie do tego celu mechanizmu dostarczonego przez Tridion. Utwórz nowy komponent multimedialny, wybierz "Zewnętrzny" w menu rozwijanym typu zasobów i wpisz adres URL do obiektu. Tak długo, jak możesz adresować go za pomocą adresu URL, będzie działać dokładnie tak, jak chcesz (element zostanie dodany do pakietu i wysłany do serwera dostarczania).

Jeśli nie jest to wystarczająco dobre dla Ciebie, możesz dodać je samodzielnie do pakietu. Zrobiłem to w przeszłości z kodem trochę podobnym do tego:

FileInfo file = // Weird logic to get a FileInfo object from external system 
Item item = package.GetItem("My original Item"); 
item.SetAsStream(file.OpenRead()); 

Zastąpiło to zawartość mojego oryginalnego komponentu rzeczywistym plikiem, który chciałem. To zadziała, jeśli oryginalny komponent jest również komponentem multimedialnym. Jeśli tak nie jest, po prostu utwórz nowy element z własnym imieniem i nazwiskiem itp. Jeśli to możliwe, zamiast tego użyj gotowego procesu.

PS: FileInfo Class.

9

Zgodnie z sugestią Nuno najlepiej jest użyć komponentu multimedialnego z typem zasobów "Zewnętrzny". Nie trzeba ich tworzyć ręcznie, można zautomatyzować za pomocą podstawowych usług lub programów API.

Innym sposobem, którego użyłem wcześniej, aby utworzyć plik zip w czasie wykonywania i dodać go do pakietu z następującego kodu. Mam nadzieję, że to może pomóc.

using (MemoryStream ms = new MemoryStream()) 
       { 
        zip.Save(ms); 
        downloadAllInOneURL = String.Format("ZipAsset{0}.zip", uniqueZipID); 
        downloadAllInOneURL = m_Engine.PublishingContext.RenderedItem.AddBinary(ms, downloadAllInOneURL, "", "application/zip").Url; 
        downloadAllInOneSize = getSize(ms.Length); 

       } 
Powiązane problemy