Utilisant eZ publish depuis plusieurs années maintenant, j’ai pu constater que, malgré le fait que ce CMS soit très puissant et doté de possibilités d’évolutions et de customisations très intéressantes, certaines opérations semblant pourtant tout à fait banales, nécessitent une mise en place qui dépasse tout entendement. Mais je vais vous montrer dans la suite comment être fier de soi après avoir réussi à insérer un lien vers un fichier à télécharger (Sisi, c’est possible)
Mise en contexte: la semaine dernière, je cherchais comment mettre en place pour l’utilisateur final, une manière pratique d’insérer des liens vers des fichiers à télécharger, à l’intérieur d’un XMLBlock, via l’extension Online Editor. Par manière pratique, j’entends: sélectionner un mot ou une phrase dans le texte, déclarer ce lien comme lien vers un autre node, sélectionner ce node de destination, et basta. Evidemment, ce lien amène vers une vue du node, qui elle présente alors le lien pour télécharger le fichier. Extrêmement pas pratique, donc. L’autre manière de faire, via cet Online Editor, est d’utiliser la fonction représentée par l’icône « trombonne »: spécifier qu’on veut ajouter un nouvel objet puis d’uploader le fichier choisi. On se retrouve au final avec quelques jolies icônes « trombonne » ca et là dans le texte éditable, et honnêtement, ce n’est pas gérable non plus, d’un point de vue utilisateur final. Le texte en devient illisible.
Après quelques tests, j’ai réussi à produire une solution qui me convient assez pour le cas évoqué ci-dessus. Vu que je n’ai trouvé nulle part d’infos sur une telle méthode, je la partage avec vous! Cette méthode nécessite eZ publish 3.9 minimum, la dernière version de l’Online Editor (4.2.3 à l’heure où j’écris ces lignes), ainsi qu’une extension disponible dans les contributions: le Redirect Operator. Extension très pratique, vu qu’elle permet de faire des redirects à l’intérieur même des templates (comme le disent les commentaires, ca devrait être en standard dans le CMS, une telle fonctionnalité)!
Passons maintenant à la méthode de mise en place
OE 4.2.3 couplé avec eZ publish 3.9 dispose d’une fonctionnalité qui vous permet, lors de la création d’un lien dans le XMLBlock, de spécifier le type de vue pour ce lien.
C’est la clé principale de notre problème. Le but du jeu va être de créer une nouvelle vue custom et de la rendre accessible dans l’Online Editor.
La config des overrides sera ensuite modifiée afin de créer un template spécifique pour cette vue. Dans ce template, on y placera le code du fichier ezbinaryfile.tpl, qui permettra d’avoir le lien physique vers le fichier, et non vers le node de ce fichier.
La dernière étape consistera à utiliser dans ce même template, le Redirect Operator afin de rediriger le visiteur vers l’url obtenue juste avant.
Et voici la méthode en détails
[code]
1. Récupérez l'extension Redirect Operator, et suivez la procédure d'installation pour l'activer, si ce n'est déjà fait.
2. Modifiez la configuration de l'Online Editor pour ajouter un nouveau type de vue, qu'on appellera "download_xmlblock".
Editez le fichier /settings/override/site.ini.append.php, pour y ajouter:
# Online editor
[LinkViewModeSettings]
AvailableViewModes[]=download_xmlblock
3. Il faut maintenant créer le template qui va correspondre à cette vue "download_xmlblock", ainsi que l'override adéquat.
Créez le template download_xmlblock.tpl dans votre dossier de design, avec le contenu suivant (pompé de ezbinaryfile.tpl):
{def $attribute = $node.object.data_map.file}
{redirectrelative( concat( '/content/download/', $attribute.contentobject_id, '/', $attribute.id,'/version/', $attribute.version , '/file/', $attribute.content.original_filename|urlencode )|ezurl('no') )}
4. Ajoutez l'entrée suivante dans votre fichier d'overrides (override.ini)
[download_xmlblock]
Source=node/view/download_xmlblock.tpl
MatchFile=download_xmlblock.tpl
Subdir=templates
Match[class_identifier]=file
[/code]
A ce stade, la mise en place d’un point de vue technique est terminée. Les trois étapes restantes montrent le chemin à réaliser pour utiliser cette technique, du côté utilisateur:
[code]
5. Dans l'interface du CMS, uploadez le fichier pourra être téléchargé, en créant un nouveau node dans la partie Media.
Ce node sera créé via la classe "File", par exemple.
6. Dans votre page contenant le champ XMLBlock, sélectionnez la partie de texte qui devra permettre le téléchargement de ce fichier.
Dans la popup, sélectionnez comme type de lien 'eznode' puis browsez vers le node du fichier à télécharger. Vous remarquerez sans doute que la selectbox qui était apparue pour vous permettre de choisir le type de vue, a maintenant disparu. Bug JS, à première vue.
Pour contourner le problème: copiez le lien eznode:// en entier, changer le type de lien, revenez sur le type eznode, puis recollez votre lien dans le champ texte. La selectbox 'type de vue' est maintenant disponible à nouveau.
Dans cette select box, choisissez la vue créée en étape 1. Vous pouvez terminer en cliquant sur OK.
7. Après un clear cache (suite au changement de configuration), essayez votre lien, tout devrait fonctionner!
[/code]
J’espère que cette explication est assez claire, et si vous avez mieux, ou plus « easy », n’hésitez surtout pas, les commentaires sont là pour ca



1 commentaire
Salut,
je faisais comme toi (sauf que j’utilisais un redirect maison dans la vue full mais le principe est le même) et puis j’ai trouvé une autre solution quasiment équivalente mais qui ne nécessite pas d’extension tierce utilise uniquement des fonctionnalités de base d’eZ Publish.
Si ça intéresse des gens, j’ai rédigé un billet : http://pwet.fr/blog/creating_a_link_to_download_a_file_with_online_editor_in_ez_publish
Sinon, je suis content de voir un nouveau blog parler (un peu) d’eZ Publish.