2012-02-18 10 views
5

Estamos manejando la publicación de PDF utilizando una Plantilla de Componente Dinámico asociada con el esquema PDF, luego creando Enlaces Binarios donde necesitamos vincular al PDF.¿La publicación de un pdf que se utiliza en un componente de la página hace que la página no se publique?

Hemos descubierto que al deshacer la publicación de un PDF que es un enlace de componente dentro de un componente utilizado en una página, se activa la página para que no se publique.

Sé que podemos controlar este comportamiento utilizando un Resolutor personalizado, pero ¿es este el resultado esperado?

¿Este comportamiento ha cambiado de Tridion 2009 a Tridion 2011?

Respuesta

6

BinaryLinks están destinados a ser utilizados para "contenido binario en línea", por lo general, cosas que están incluidas en un atributo src.

<img src="..." /> 
<video width="320" height="240" controls="controls"> 
    <source src="movie.mp4" type="video/mp4" /> 
    <source src="movie.ogg" type="video/ogg" /> 
    Your browser does not support the video tag. 
</video> 

Para este contenido binario en línea, la página no se mostrará correctamente sin ella. Sabiendo eso, es correcto que la página no se publique cuando se anula la publicación de la MMC. Por lo que puedo decir, este es el comportamiento esperado, que no ha cambiado en mucho tiempo.

El error está en utilizar una MMC para un PDF que desea mostrar como un hipervínculo. Para cualquier cosa que desee vincular (por lo que se convierte en < a href = "...") debe utilizar un ComponentLink (o, por supuesto, un PageLink de ello es una página).

+1

Lo que hemos encontrado es que un Component Link no se resolverá, ya que el PDF no está realmente en una página en ningún lugar, sino que se publica en el servidor con la Plantilla dinámica. Sin embargo, un enlace binario devolverá una etiqueta de ancla que apunta al PDF. –

+0

¿Puede mostrarnos el código/DWT de cómo publica el binario? –

+0

Utilizamos el método Agregar binario, como este: engine.AddBinary (Id.binario, template.Id, null, binary.BinaryContent.GetByteArray(), CreateUniqueBinaryName (binary)); –

4

La anulación de la publicación de los elementos que utiliza un Componente Binario ya estaba presente en 2009 (incluso una de las preguntas del Examen de Tridion 2009 Business Analyst).

Veo una tendencia en el desarrollo de personas que usan presentaciones dinámicas de componentes para sus binarios, lo que pasa por alto todos estos efectos secundarios, pero potencialmente te deja con enlaces binarios malos en tus páginas.

Si va por la ruta DCP para los binarios, asegúrese de utilizar la vinculación dinámica (bastante simple de crear en el CM mediante el uso de "tridion: tipo = binario" en su marcado de anclaje).

+1

El tridion: type = "Binary" crea un enlace que funciona, pero aún tiene el efecto secundario de hacer que la página no se publique cuando está el binario, ya que solo genera una etiqueta BinaryLink por lo que puedo decir. La documentación dice "Si anula la publicación de un Componente, no se publicarán los Componentes que se vinculen con ese Componente". Supongo que este comportamiento es diferente para Binary, por lo que necesitaremos una resolución personalizada aquí. –

+0

El problema es que llama AddBinary y no publica una Presentación de componentes por separado. Un sistema de resolución personalizado suena mejor y puede ser más simple que crear un PublishInstruction personalizado. –

+0

Si usa tridion: type = binary, se espera que publique su binario por otros medios, normalmente DCP, en lugar de usar AddBinary o cualquier otra variación de este. Un Resolver personalizado o llamar a RenderCP desde el DWT se encargará de eso. –

Cuestiones relacionadas