2012-09-05 12 views
5

Quando pubblichiamo alcune pagine/componenti dinamici da tridion è possibile aggiungere del file/contenuto multimediale esterno (ad esempio immagine jpg) al pacchetto di esecuzione/rendering corrente alla pubblicazione time.So quel pacchetto di trasporto finale presenta questo file binario insieme al contenuto originale pubblicato? È accettabile utilizzando la personalizzazione del renderer/resolver tridion? Se sì, fornire alcuni input.invia file multimediale esterno nel pacchetto al momento della pubblicazione tridion

* Nota: * Il contenuto binario che ha bisogno di essere spinto in a pacchetto al momento della pubblicazione non è presente come componente multimediale in tridion, che si trova in altro luogo al di fuori del file tridion CMS.Instead abbiamo qualche stub multimediale componente utilizzato all'interno del componente/pagina pubblicato che ha qualche immagine fittizia. abbiamo in programma di sostituire l'immagine stub con l'immagine originale al momento della pubblicazione (rendering/risoluzione).

Poiché abbiamo una grande quantità di contenuti binari memorizzati nello strumento DAM, non vogliamo che i dati vengano ricreati come componente multimediale in tridion, ma vogliamo utilizzare tali dati interrogando lo strumento DAM e collegarlo al pacchetto tridion con alcuni referenceplanning logico per mantenere uno a uno il mapping tra stub multimedia comp tcmid al contenuto originale in alcuni database di mapping come riferimento).

Per favore fateci sapere se c'è qualche soluzione per allegare il contenuto binario esterno al pacchetto al momento della pubblicazione.

risposta

10

Il modo migliore - e più semplice - è utilizzare il meccanismo fornito da Tridion out-of-the-box per questo. Crea un nuovo componente multimediale, seleziona "Esterno" nel menu a discesa Tipo di risorsa e digita l'URL dell'oggetto. Finché puoi indirizzarlo con un URL, funzionerà esattamente come desideri (l'articolo sarà aggiunto al pacchetto e inviato al delivery server).

Se questo non è abbastanza buono per te, allora sì, puoi aggiungerlo tu stesso al pacchetto. Ho fatto questo in passato con il codice di un po 'come questo:

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

Questa sostituito il contenuto della mia componente originale con il file effettivo che volevo. Questo funzionerà per te SE il componente originale è anche un componente multimediale. Se non lo è, basta creare un nuovo oggetto con il proprio nome, ecc. Se possibile, utilizzare invece la procedura predefinita.

PS: FileInfo Class.

9

Come suggerito da Nuno, il modo migliore è utilizzare il componente multimediale con tipo di risorsa "Esterno". Potrebbe non essere necessario crearli manualmente, è possibile automatizzarli utilizzando i servizi di base oi programmi API.

Un altro modo in cui ho usato prima di creare il file zip in fase di esecuzione e di aggiungere lo stesso al pacchetto con il seguente codice. Spero che possa essere d'aiuto.

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

       } 
Problemi correlati