2012-09-05 5 views
5

Wenn wir einige Seite/dynamische Komponente von Tridion veröffentlichen ist es möglich, einige externe Multimedia-Datei/Inhalt (ex: jpg Bild) zu aktuellen Ausführen/Rendering-Paket bei veröffentlichen time.So dass das endgültige Transportpaket diese binäre Datei zusammen mit ursprünglich veröffentlichten Inhalt vorhanden? Ist dies mit der Anpassung von tridion renderer/resolver möglich? Wenn ja, geben Sie bitte einige Eingaben an.push externe multimedia-Datei in Paket bei Tridion Publish Zeit

* Hinweis: * Der binäre Inhalt, der in gedrückt werden muss, verpacken, veröffentlichen Zeit als Multimedia-Komponente in tridion nicht vorhanden ist, ist es in anderen Speicherort außerhalb tridion CMS.Instead liegt haben wir einige Stummel Multimedia Die Komponente wird innerhalb der veröffentlichten Komponente/Seite verwendet, die ein Dummy-Bild enthält. Wir planen, das Stub-Image durch das Original-Image bei der Veröffentlichungszeit (Rendering/Auflösung) zu ersetzen.

Da wir eine große Menge an binären Inhalten im DAM-Tool gespeichert haben, möchten wir nicht, dass diese Daten als Multimedia-Komponente in tridion neu erstellt werden, wollen wir diese Daten verwenden, indem sie DAM-Tool abfragen und mit einigen in tridion-Paket anhängen Logische Referenzplanung, um eine Eins-zu-Eins-Zuordnung zwischen dem Stub-Multimedia-Comp tcmid und dem Originalinhalt in einer Mapping-DB als Referenz aufrechtzuerhalten.

Bitte teilen Sie uns mit, ob eine Lösung vorhanden ist, um externen binären Inhalt zum Veröffentlichungszeitpunkt an das Paket anzuhängen.

Antwort

10

Der beste und einfachste Weg ist es, dafür den Mechanismus von Tridion zu verwenden. Erstellen Sie eine neue Multimedia-Komponente, wählen Sie "Extern" in der Dropdown-Liste für den Ressourcentyp und geben Sie die URL für das Objekt ein. Solange Sie es mit einer URL adressieren können, funktioniert es genau so, wie Sie es möchten (das Element wird zum Paket hinzugefügt und an den Lieferungsserver gesendet).

Wenn Ihnen das nicht gut genug ist, dann können Sie es selbst zum Paket hinzufügen. Ich habe dies so etwas wie dies mit dem Code in der Vergangenheit getan:

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

Dies ersetzt den Inhalt meiner ursprünglichen Komponente mit der eigentlichen Datei, die ich wollte. Dies funktioniert für Sie, wenn die ursprüngliche Komponente auch eine Multimedia-Komponente ist. Wenn dies nicht der Fall ist, erstellen Sie einfach ein neues Element mit Ihrem eigenen Namen usw. Verwenden Sie nach Möglichkeit stattdessen den Out-of-the-Box-Prozess.

PS: FileInfo Class.

9

Wie Nuno vorgeschlagen, ist der beste Weg, Multimedia-Komponente mit "externen" Ressourcen-Typ zu verwenden. Sie müssen diese möglicherweise nicht manuell erstellen, Sie können die Verwendung von Kerndiensten oder API-Programmen automatisieren.

Eine andere Möglichkeit, die ich zuvor verwendet habe, um eine Zip-Datei zur Laufzeit zu erstellen und sie dem Paket mit folgendem Code hinzuzufügen. Hoffe es kann helfen.

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); 

       }