eZPublish Lien direct vers une image ou un fichier

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/ezxmltags/link.tpl et le modifier comme ceci :

{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

Laisser un commentaire