eZPublish

eZPublish Lien direct vers une image ou un fichier

0

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

Ezpublish Changer la permission du dossier storage (par défaut en 777)

0

Par défaut ezpublish donne la permission 777 au dossier storage et à ces sous dossiers. Pas très Sécure !

Il est possible de changer cela en overridant le valeur StorageDirPermissions dans le [FileSettings] du fichier site.ini.

Plus d’infos sur la doc : http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Configuration-files/site.ini/FileSettings

eZPublish Import Flux RSS personnalisé

2

eZPublish propose d’importer des données via un flux RSS (Administration / Syndication). Cette fonctionnalité est très pratique lorsque le flux RSS en question est normé. Notamment avec les éléments <channel> et <item>. En revanche si le flux est un peu farfelu cela pose problème.

Pourquoi ?

L’assistant propose de mapper les champs du flux RSS sur les champs d’une classe d’objet (voir capture ci-dessous). Or il propose uniquement les valeurs classiques d’un flux :

 

 

 

 

 

 

 

 

 

 

 

 

Comment ajouter de nouveaux champs personnalisés pour l’import rss sous eZPublish ?

 

  1. Créer une extension nommée comme vous le souhaitez (ex: myImportRss)
  2. Dans cette extension créer un répertoire rss
  3. Dans ce dossier rss créer un fichier qui à pour but d’overrider le fichier rssimport.php, le nommer nomdevotreextension+rssimport.php (ex : myImportRssrssimport.php
  4. Activer votre extension dans le site.ini de votre siteaccess administration.
  5. Compléter votre fichier myImportRssrssimport.php en overridant la fonction rssFieldDefinition() :
<?php

// Nom de la classe doit être <active_extension> +  'rssimport'

class myImportRssrssimport

{

      public function rssFieldDefinition()

      {

      //Définir la structure des champs personnalisés de votre xml personnalisé (exemple avec une balise events ci dessous)

      return array( 'events' => array( 'elements' => array( 'id',

                                                           'ref',

                                                         'titre',

                                                     'datedebut',

                                                       'datefin')));

      }

}

?>

 Une fois votre fonction rssFIeldDefinition() personnalisée vous pourrez voir apparaitre vos nouveaux champs dans la liste déroulante de l’éditeur d’import RSS. Ensuite vous n’avez plus qu’à les mapper via l’assistant à votre classe et le tour est joué !

 

Haut de page