2012-04-18 7 views
6

Tengo problemas para publicar archivos binarios (archivos PDF) desde Tridion usando Razor Templating.Publicación de archivos PDF al usar plantillas Tridion Razor

Tengo una plantilla de componente que está configurada como 'Publicada como un componente dinámico' con un único esquema multimedia vinculado.

estoy usando el Razor Mediator eXtension y la plantilla de componente contiene dos bloques de construcción Plantilla:

  1. Una plantilla de la maquinilla de afeitar que la producción de algo de HTML y el enlace al binario en el componente multimedia.
  2. acciones terminar el predeterminadas TBB que contiene lo siguiente:
    • Publicar binarios en paquete
    • Link Resolver
    • Grupo Objetivo Personalización
    • Plantilla de limpieza
    • Convertir XML a HTML

T que la plantilla de afeitar contiene el siguiente código (He simplificado esta un poco): enter image description here

Ésta parece ser la resolución de la relación binaria correctamente y produce el siguiente dinámico componente de presentación: enter image description here

El problema que estoy teniendo es que el binario en sí nunca se agrega al paquete y, por lo tanto, no se publica.

Como Razor Mediator tiene una configuración 'extractBinaries' en el archivo Tridion.ContentManager.config, entonces sospecho que los binarios deben ser agregados al paquete por el mediador. Me he asegurado de que la configuración de extractBinaries esté establecida en 'true', sin embargo, el binario no se agrega al paquete (aunque el componente multimedia que se procesa está en el paquete como un elemento tridion/componente).

¿Alguien sabe si esta funcionalidad está disponible y funciona en el Razor Mediator, por favor? Sospecho que Razor Mediator espera que el código de enlace esté en un formato específico, pero no puedo encontrar nada al respecto en el documentation.

También he intentado añadir los binarios 'Extracto de HTML' TBB a la plantilla de componentes (a raíz de la plantilla de la maquinilla de afeitar) pero me sale el siguiente error: "La salida tema debe tener la propiedad TCMURI especifica". Sospecho que esto se debe a la forma en que Razor Mediator agrega el elemento 'Salida' al paquete.

Podría escribir un TBB nuevo para asegurarme de que el binario se agrega al paquete, pero preferiría evitar hacerlo si la funcionalidad ya está disponible con Razor Mediator.

Gracias de antemano.

P.S. Disculpas por las imágenes. Stackoverflow no quería formatear el código correctamente.

+0

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

+0

SLacks - Como dice su enlace, creo que el problema fue que "Markdown y HTML se ignoran dentro de un bloque de código". Gracias, Jon –

+0

¿Estás seguro de que tener un

Respuesta

7

Desafortunadamente, el Razor Mediator actualmente no agrega el PDF binario al paquete cuando está en una etiqueta (y no es recogido por Publish Binaries TBB), aunque tengo la sensación bastante buena de que la versión 1.3 cuidará de esta ;).

Mientras tanto, puede utilizar el tipo "Agregar dependencias binarias no resueltas" de TBB. No lo tengo a mano en este momento, pero avíseme si lo necesita y publicaré el código más tarde esta noche.

EDIT Cancelar mi afirmación de que no se agrega al paquete, estaba pensando en un escenario diferente.

intente lo siguiente en su lugar:

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

Gracias Alex. Pensé que la funcionalidad estaría allí, simplemente no sabía la sintaxis. Lo probaré tan pronto como regrese a la oficina y publique una actualización. –

+0

Hola Alex. Muchas gracias por su respuesta sobre esto. Lo he probado y parece que al usar la sintaxis que sugiere, agrega el componente PDF al paquete y lo publica. Sin embargo, esto plantea otro problema ya que no anexa el tcmId del Componente al nombre del archivo. Lo que significa que hay errores si se publican dos archivos PDF (contenidos en una carpeta diferente en Tridion) con el mismo nombre de archivo y luego se producen errores de publicación. Como mi sitio tiene miles de archivos PDF, sospecho que tendré que usar un TBB diferente para esto. Muchas gracias. –

0

No he usado el Razor Mediator, pero ¿ha intentado agregar el Default Finish Actions o el Publish Binaries in Package TBBs a su plantilla?

+0

Hola, Chris. La Plantilla de componente ya contiene TBB de 'Acciones de finalización predeterminadas' (que contiene el TBB 'Publicar binarios en el paquete'). El problema es que el binario nunca está en el paquete para ser publicado. Gracias, Jon –

2

Esto funcionó para mí:

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

siguió, por supuesto, por PublishBinariesInPackage, aunque, como también se puede alcanzar el motor de una manera similar, tal vez una Direct AddBinary también funcionaría.

Cuestiones relacionadas