2012-04-18 2 views
6

Ho riscontrato un problema durante la pubblicazione di file binari (file PDF) da Tridion utilizzando Razor Templating.Pubblicazione di PDF quando si utilizzano i modelli Tridion Razor

Ho un modello di componente impostato su "Pubblicato come componente dinamico" con un unico schema multimediale collegato.

Sto usando il Razor Mediator eXtension e il modello di componente contiene due Template Building Blocks:

  1. Un modello di rasoio che la produzione un po 'HTML e il link al binario nella componente multimediale.
  2. Finish azioni il default TBB contenente le seguenti:
    • Pubblica binari in Package
    • link resolver
    • Target Group Personalizzazione
    • Cleanup template
    • Conversione XML per Html

T egli Razor Modello contiene il seguente codice (ho semplificato questo un po '): enter image description here

Questa sembra essere la soluzione del collegamento binario correttamente e produce il seguente dinamica componente Presentazione: enter image description here

Il problema che sto avendo è che il binario stesso non viene mai aggiunto al pacchetto e quindi non viene pubblicato.

Poiché il Razor Mediator ha un'impostazione 'extractBinaries' nel file Tridion.ContentManager.config, ho il sospetto che i binari debbano essere aggiunti al pacchetto dal mediatore. Ho fatto in modo che l'impostazione extractBinaries sia impostata su 'true', tuttavia il file binario non viene aggiunto al pacchetto (sebbene il componente multimediale in fase di elaborazione si trovi sul pacchetto come tridion/componente).

Qualcuno sa se questa funzionalità è disponibile e funziona nel Razor Mediator, per favore? Sospetto che Razor Mediator si aspetti che il codice del link sia in un formato specifico, ma non riesco a trovare nulla su questo nello documentation.

ho anche provato ad aggiungere i 'binari Estratto dalla Html' TBB al modello Component (seguendo il modello di rasoio) ma ottengo il seguente errore: "l'uscita deve avere voce proprietà TCMURI specificato". Sospetto che ciò sia dovuto al modo in cui il Razor Mediator aggiunge l'elemento "Output" al pacchetto.

Potrei scrivere un nuovo TBB per assicurarmi che il binario sia aggiunto al pacchetto, ma preferirei evitare di farlo se la funzionalità è già disponibile con il Razor Mediator.

Grazie in anticipo.

P.S. Scuse per le immagini. StackOverflow non voleva formattare correttamente il codice.

+0

http://stackoverflow.com/editing-help – SLaks

+0

SLack - Come dice il tuo link, penso che il problema fosse che "Markdown e HTML sono ignorati all'interno di un blocco di codice". Grazie, Jon –

+0

Sei sicuro che avere un

risposta

7

Purtroppo il mediatore Razor attualmente non aggiungere il binario PDF per il pacchetto quando in un tag (quindi non ottenere raccolti dalla Pubblica binari TBB), anche se ho una buona sensazione che la versione 1.3 si occuperà di questo ;).

Nel frattempo, è possibile utilizzare un tipo di TBB "Aggiungi dipendenze binarie non risolte". Al momento non ce l'ho a portata di mano, ma fammi sapere se ne hai bisogno e posterò il codice per te più tardi stasera.

EDIT cancellare la mia dichiarazione su di esso non ottenere aggiunto al pacchetto, stavo pensando a uno scenario diverso.

provare la seguente invece:

<a href="@Component.ID">@Component.Metadata.title</a> 
+0

Grazie Alex. Pensavo che la funzionalità sarebbe stata lì - non conoscevo la sintassi. Darò una prova non appena torno in ufficio e pubblicherò un aggiornamento. –

+0

Ciao Alex. Mille grazie per la tua risposta su questo. L'ho provato e sembra che usando la sintassi suggerita si aggiunga il componente PDF al pacchetto e lo si pubblichi. Ciò tuttavia solleva un altro problema in quanto non aggiunge il nome tcmId del componente al nome del file. Significa che ci sono errori se vengono pubblicati due PDF (contenuti in una cartella diversa in Tridion) con lo stesso nome file, quindi ci sono errori di pubblicazione. Poiché il mio sito contiene migliaia di PDF, sospetto che potrei dover utilizzare un TBB separato per questo. Grazie molto. –

0

Non ho usato il Razor Mediator, ma avete provato ad aggiungere Default Finish Actions o Publish Binaries in Package TBB al modello?

+0

Ciao Chris. Il modello di componente contiene già TBB "Default Finish Actions" (che contiene il TBB "Pubblica binari nel pacchetto"). Il problema è che il binario non è mai sul pacchetto da pubblicare. Grazie, Jon –

2

Questo ha funzionato per me:

@{ 
    var item = TridionHelper.Package.CreateMultimediaItem(Component.ID); 
    TridionHelper.Package.PushItem("CurrentMultimedia", item); 
} 

seguì, ovviamente da PublishBinariesInPackage, anche se, come si può anche raggiungere il motore in modo simile, forse un anche AddBinary diretto funzionerebbe.