Forum CMS Made Simple FR

Version complète : [Résolu]news : ajouter un imagePicker avec gestion CGSmartImage
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonsoir,
Pour un client qui désire ajouter une image dans sa news et qu'elle soit automatiquement retravaillée par CGSmartImage, j'ai ajouté une définition de champ de type fichier comme AireLibre l'a gracieusement expliqué dans ce post
Ça fonctionne du tonnerre, mais ma cliente souhaite utiliser une image existant déjà sur le serveur. Il me faut donc lui donner accès à une boîte de dialogue de sélection d'image.
Je ne connais pas suffisamment l'api pour y arriver, j'ai donc créé une définition de champ de type "zone de texte" ce qui lui affiche le wysiwyg et son filepicker.
Tout marche nickel grâce à ce code dans le gabarit de détail de la news :
Code :
[== Indéfini ==]
{* on regarde d'abord si une imagée a été envoyée par le champ de type fichier *}
{if $entry->fieldsbyname.Image->value neq ''}
{capture assign='photoarticle'}uploads/news/id{$entry->id}/{$entry->fieldsbyname.Image->value}{/capture}
<a href="{$photoarticle}" title="{$entry->title|cms_escape:htmlall}" class="alignleft zoom">
{CGSmartImage alias='news' src=$photoarticle alt=$entry->title class='bordure'}
<p class="textalignleft">Cliquez pour zoomer</p></a>
{* sinon une image venant du wysiwyg dont on ne conserve que le chemin *}
{elseif $entry->fieldsbyname.imagePicker->value neq ''}
{capture assign="picker"}
{$entry->fieldsbyname.imagePicker->value|replace:'<img src="':''|replace:'" alt="" />':''}
{/capture}
<a href="{$picker}" title="{$entry->title|cms_escape:htmlall}" class="alignleft zoom">
{CGSmartImage alias='news' src=$picker alt=$entry->title class='bordure'}
<p class="textalignleft">Cliquez pour zoomer</p></a>
{/if}
Ok, tout se passe pour le mieux Smile

Mais, là où ça se complique, c'est dans le gabarit du sommaire :mad:
Pas moyen de récupérer le champ imagePicker.
J'ai essayé :
  • {$entry->fieldsbyname.imagePicker}
  • {$entry->fieldsbyname.imagePicker->value}
  • {eval var=$entry->fieldsbyname.imagePicker}
  • {$entry->imagePicker}
  • {$entry->imagePicker->value}
  • etc.
{$entry|print_r} m'affiche l'image.

Merci pour le coup de mains si vous trouvez l'astuce.
J'ai enfin trouvé Smile
Ajout d'un foreach supplémentaire : {foreach from=$entry->fields item='field'}
Code :
{foreach from=$entry->fields item='field'}
{if $entry->image neq ''}
{capture assign='photoarticle'}uploads/news/id{$entry->id}/{$entry->image}{/capture}
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}" class="alignleft">
{CGSmartImage alias='miniature_news' src=$photoarticle alt=$entry->title class="alignleft"}</a>
{elseif $field->name == 'imagePicker' && $field->value neq ''}
{capture assign='photopicker'}{eval var=$field->value|replace:'<img src="':''|replace:'" alt="" />':''}
{/capture}
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}" class="alignleft">
{CGSmartImage alias='miniature_news' src=$photopicker alt=$entry->title class="alignleft"}</a>      
{/if}
{/foreach}
si tu ne nous laisse pas le temps de répondre, c'est pas rigolo... :p