2012-04-18 4 views
6

Ich habe ein Problem beim Veröffentlichen von Binärdateien (PDF-Dateien) von Tridion mit Razor Templating.Veröffentlichen von PDFs bei Verwendung von Tridion Razor Vorlagen

Ich habe eine Komponente Vorlage, die auf 'als dynamische Komponente veröffentlicht' mit einem einzigen verknüpften Multimedia-Schema festgelegt ist.

Ich bin mit den Razor Mediator eXtension und die Komponente Vorlage enthält zwei Template-Bausteine:

  1. A Razor-Vorlage, die Ausgabe einiger HTML und der Link zu dem binären in der Multimedia-Komponente.
  2. Die Standard-Finish Aktionen TBB mit folgendem Inhalt:
    • Veröffentlichen Binaries in Paket
    • Linkresolver
    • Zielgruppe Personalisierung
    • Cleanup Template
    • Konvertieren von XML in HTML

T er Razor Vorlage enthält die folgenden Code (I vereinfacht dies leicht): enter image description here

Diese Lösung des binären Verbindung korrekt zu sein scheint und erzeugt die folgende dynamische Komponente Präsentation: enter image description here

Das Problem, das ich habe, ist, dass die Binärdatei selbst nie zum Paket hinzugefügt wird und daher nicht veröffentlicht wird.

Da der Razor Mediator eine 'extractBinaries' Einstellung in der Tridion.ContentManager.config Datei hat, vermute ich, dass die Binärdateien vom Mediator dem Paket hinzugefügt werden sollen. Ich habe sichergestellt, dass die Einstellung extractBinaries auf 'true' gesetzt ist, die Binärdatei jedoch nicht zum Paket hinzugefügt wird (obwohl sich die Multimedia-Komponente, die verarbeitet wird, auf dem Paket als Tridion/Komponentenelement befindet).

Weiß jemand, ob diese Funktionalität verfügbar ist und im Razor Mediator funktioniert? Ich vermute, dass Razor Mediator erwartet, dass der Link-Code in einem bestimmten Format ist, aber ich kann nichts darüber in der documentation finden.

Ich habe auch versucht, die ‚Extract Binaries von Html‘ TBB die Komponentenvorlage hinzugefügt (nach dem Razor Template), aber ich erhalte die folgenden Fehler: „Der Punkt Ausgabe muss Eigenschaft TCMURI hat angegeben“. Ich vermute, dass dies auf die Art und Weise zurückzuführen ist, wie der Razor Mediator das "Output" -Objekt zum Paket hinzufügt.

Ich könnte eine neue TBB schreiben, um sicherzustellen, dass die Binärdatei zum Paket hinzugefügt wird, aber ich würde dies lieber vermeiden, wenn die Funktionalität bereits mit dem Razor Mediator verfügbar ist.

Vielen Dank im Voraus.

P.S. Entschuldigung für die Bilder. Stackoverflow wollte den Code nicht korrekt formatieren.

+0

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

+0

SLacks - Wie Ihr Link sagt, war das Problem, dass "Markdown und HTML in einem Codeblock ignoriert werden". Danke, Jon –

+0

Sind Sie sicher, dass ein

Antwort

7

Leider fügt der Razor Mediator die PDF-Binärdatei derzeit nicht in das Paket ein, wenn er in einem Tag erscheint (also nicht vom TBB der Publish Binaries aufgenommen), obwohl ich das gute Gefühl habe, dass Version 1.3 aufpasst von diesem ;).

In der Zwischenzeit können Sie einen TBB-Typ "Ungelöste binäre Abhängigkeiten hinzufügen" verwenden. Ich habe es zur Zeit nicht zur Hand, aber lassen Sie es mich wissen, wenn Sie es brauchen, und ich werde den Code für Sie heute Abend veröffentlichen.

BEARBEITEN Stornieren Sie meine Aussage darüber, dass es nicht zum Paket hinzugefügt wurde, ich dachte an ein anderes Szenario.

Versuchen Sie Folgendes statt:

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

Danke Alex. Ich dachte, dass die Funktionalität da wäre - ich kannte die Syntax einfach nicht. Ich werde es versuchen, sobald ich wieder im Büro bin und ein Update poste. –

+0

Hallo Alex. Vielen Dank für Ihre Antwort zu diesem Thema. Ich habe es getestet und es scheint, dass mit der von Ihnen vorgeschlagenen Syntax die PDF-Komponente zum Paket hinzugefügt und veröffentlicht wird. Dies wirft jedoch ein weiteres Problem auf, da es die tcmId der Komponente nicht an den Dateinamen anhängt. Das bedeutet, dass es Fehler gibt, wenn zwei PDFs (die in einem anderen Ordner in Tridion enthalten sind) mit dem gleichen Dateinamen veröffentlicht werden, dann gibt es Fehler bei der Veröffentlichung. Da meine Website tausende von PDFs enthält, vermute ich, dass ich dafür möglicherweise eine separate TBB verwenden muss. Danke vielmals. –

0

Ich habe den Razor Mediator nicht verwendet, aber haben Sie versucht, die Default Finish Actions oder die Publish Binaries in Package TBBs zu Ihrer Vorlage hinzuzufügen?

+0

Hallo Chris. Die Komponentenvorlage enthält bereits die TBB "Standard-Abschlussaktionen" (die die TBB "Binärdateien im Paket veröffentlichen" enthält). Das Problem ist, dass die Binärdatei niemals auf dem Paket veröffentlicht wird. Danke, Jon –

2

Das ist für mich gearbeitet:

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

Gefolgt, natürlich von PublishBinariesInPackage, obwohl, wie Sie den Motor auch in ähnlicher Weise erreichen können, vielleicht ein Direct AddBinary würde auch funktionieren.

Verwandte Themen