Bouts de code d'inclusion dans les templates

Vendredi 17/09/2010, 10h30 | Pierre Martel

templates , astuces

On peut utiliser attribute_view_gui mais dans certains cas on doit faire autrement.

Insérer une image :

{if $node.data_map.image.has_content}
 <img src={$node.data_map.image.content[original].full_path|ezroot} 
 alt="{$node.data_map.image.content[original].alternative_text}" />
{/if}

Inclure un fichier :

{if $node.data_map.file.has_content}
 {def $file=$node.data_map.file
  $type=$file.content.original_filename|explode('.')
 }
 <a href={concat("content/download/", $file.contentobject_id, "/", $file.id, "/file/", $file.content.original_filename)|ezurl}>
  {$file.content.original_filename|wash(xhtml)}</a> ({$type[$type|count|dec]} - {$file.content.filesize|si(byte)})
 </a>
{/if}

Liens vers les éléments d'un attribut relation d'objets :

{foreach $node.data_map.liens.content.relation_list as $lien}
    {def $myLinkNode = fetch('content', 'node', hash('node_id', $lien.node_id))}
    {if $myLinkNode}
        <a href={$myLinkNode.url_alias|ezurl}>{$myLinkNode.name|wash}</a>
    {/if}
    {undef $myLinkNode}
{/foreach}

Lien interne/externe :

{if $node.data_map.lien_interne.has_content}
    {def $myLinkNode=fetch(content,node, hash('node_id', $node.data_map.lien_interne.value.main_node_id))
        $link=$myLinkNode.url_alias|ezurl("no")
        $nom=$myLinkNode.name
    }
{elseif $node.data_map.lien_externe.has_content}
    {def $link=$node.data_map.lien_externe.value
        $nom=$node.data_map.lien_externe.data_text
    }
{/if}
{if is_set($link)}
    <a href="{$link}" title="{$nom|wash}" {if $node.data_map.lien_externe.has_content}target="_blank"{/if}>En savoir plus...</a>
{/if}

Eviter les fetch :

  • Obtenir les noeuds enfants : $node.children
  • Obtenir le noeud parent : $node.parent
  • Obtenir le count d'un fetch : ne pas faire un fetch list puis count, mais un fetch list_count !


Commentaires

De quoi parlez-vous ?

@killerwolf : en quoi nous avons fumé la moquette ?
Vous pourriez peut-être développer un peu votre remarque ?
Si c'est de la dernière phrase dont vous parlez, on indique bien qu'il faut faire un list_count et non pas un list puis un count...

fetch_count

Ah non, c'est exactement ce qu'on dit !
Tu ferais bien de regarder du côté de ta moquette

fetch count ??

Audaxis vous avez fumé la moquette

http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Modules/content/Fetch-functions/list_count

relation de noeuds

Avez-vous une solution pour faire une relation d'un nœud à un autre ?

Objets

Comme son nom l'indique, c'est une relation d'objets.. donc une relation entre 2 object_ids..

main node id

Oui mais comment faites-vous pour connaitre le noeud pointé par votre relation d'objet.

Avec l'objet

Si j'ai bien compris votre question, alors peut être en fetchant sur l'objet pointé par le main_node_id puis de parcourir les différents emplacements..

link

Bonjour,
vous utilisez $node.data_map.lien_interne.value.main_node_id,
donc le nœud de l'emplacement principal. Ma question est, comment faire pointer un lien vers un emplacement différent (et non l'emplacement principal) si l'objet a plusieurs emplacements.
Merci.