Trier suivant le nombre de sous-éléments

Lundi 24/01/2011, 14h08 | Pierre Martel

templates

Vous souhaitez trier par un fetch vos noeuds suivant leur nombre de sous-éléments, par exemple pour afficher les articles les plus commentés ? Hélas il n'existe pas de clause à cet effet dans le sort_by.

Pour cela il faut passer par un extended attribute filter qu'on va utiliser dans notre sort_by (on utilise simplement l'extended attribute filter pour ajouter une clause dans le SQL mais il n'y a pas de filtre, c'est un principe intéressant qui pourrait resservir pour d'autres cas).

Lire la suite

0 commentaire(s)

Empêcher un module AJAX d'être mis en LastAccessesURI

Jeudi 20/01/2011, 15h38 | Pierre Martel

modules , astuces

A chaque appel d'un module dans eZ Publish, qu'il soit en AJAX ou non, le système met l'adresse de ce module dans la variable LastAccessesURI.

Cette variable est utilisée pour que l'utilisateur soit redirigé, après une connexion ou l'édition d'un contenu, vers la dernière page qu'il a visité, pratique. Hélas, si on appelle un module AJAX en dernier, la redirection est problèmatique...

Lire la suite

0 commentaire(s)

Objets triés suivant le choix de tri fait en Back-Office

Vendredi 07/01/2011, 14h01 | Team eZ

astuces , templates

Si vous souhaitez laisser la main en Back et en Front au client pour le tri des objets, il suffit de faire un sort_by un peu particulier :

{def $children = fetch( content, list, hash( parent_node_id, $node.node_id,
                          sort_by, $node.sort_array,
                          ...
}

2 commentaire(s)

Liens utiles

Vendredi 01/10/2010, 16h58 | Team eZ

liens , eZ Find , PHP , Import

1 commentaire(s)

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 !

8 commentaire(s)