J’ai été récemment confronté au fait de créer un lien direct vers un fichier ou une image dans eZPublish. Par défaut lorsque l’on créé un lien, il créé un lien vers le noeud et non vers le fichier présent dans le noeud.
Voici une solution (il y en existe peut être d’autres ?), il faut overrider le fichier content/datatype/view/
{def $dl_n='' $dl_attribute='' $dl_url='' $dl_protocols=array('http', 'file', 'ftp', 'mailto', 'https') } {if is_set( $href )} {if $dl_protocols|contains( $href|explode(':')|extract_left(1) )not()} {set $dl_n=fetch(content, node, hash(node_path, $href))} {if $dl_n} {if or($dl_n.object.class_identifier|eq('image'),$dl_n.object.class_identifier|eq('file'))} {if $dl_n.object.class_identifier|eq('image')} {set $dl_attribute=$dl_n.data_map.image} {set $dl_url=concat('/',$dl_attribute.content.original.url)} {else} {set $dl_attribute=$dl_n.data_map.file} {set $dl_url=concat( '/content/download/', $dl_attribute.contentobject_id, '/', $dl_attribute.id,'/version/', $dl_attribute.version , '/file/', $dl_attribute.content.original_filename|urlencode )} {/wash ">if} {/if} {/if} {/if} {/if} ‹a href={if eq($dl_url|count_chars(),0)|not()}{$dl_url}{else}{$href|ezurl()}{/if} {if $id} id="{$id}"{/if}{if $title} title="{$title}"{/if}{if $target} target="{$target}"{/if}{if $classification} class="{$classification|wash}"{/if}{if and(is_set( $hreflang ), $hreflang)} hreflang="{$hreflang|wash}"{/if}›{$content}‹/a› {undef $dl_n $dl_attribute $dl_url $dl_protocols}
Ensuite le lien se fera automatiquement vers le fichier si c’est un fichier.
Petit d’exemple d’override :
[ezmxltags_link] Source=content/datatype/view/ezxmltags/link.tpl MatchFile=content/datatype/view/ezxmltags/link.tpl Subdir=templates
Source de cette astuce : Direct link to a file on image