Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Mittlerweile gibt es neben Smarty weitere 1000 verschiedene Software zur gemeinschaftlichen Erstellung von Text- oder anderen multimedialen Dokumenten. Für technisch aufwendigere Websites kommen komplexere Systeme wie ez Publish zum Einsatz. Um z.B. Dokumentklassen vom Type Event auf die Startseite einer Homepage zu bringen zeigt dieser Beitrag.

Wie wäre es, wenn auf der Startseite einer Homepage die aktuellsten Events zu sehen sind? Ausgehend vom aktuellen Datum werden nur die Inhaltsobjekte verlinkt, die auf der Klasse Event basieren. In diesem Beispiel wird davon ausgegangen, dass sich die Events in einer Tiefe von 3 in der Inhaltsstruktur befinden: 2 : RootNode : Ebene 1 : Ebene 2 : Event(s). Auf der Frontpage sind nun bis zu 5 aktuelle Events aus dem ausgewählten Teilzweig der Inhaltsstruktur zu sehen, dessen oberste Ebene 1 nicht auf der Klasse twitter basiert.

frontpage.tpl

 
...
{def $RootNodeID = ezini( 'NodeSettings', 'RootNode', 'content.ini' ) }
{if eq($RootNodeID, $node.node_id)}
  <div class="class-folder">
    {def 
        $children = array()
        $timestamp = currentdate()|sum(mul(12, 3600))
    }
    {set $children=fetch( content, tree, hash( 'parent_node_id', $RootNodeID,
           'depth', 3, 
           'class_filter_type', 'include',  
           'class_filter_array', array( 'event' ),
           'attribute_filter', array( array( 'event/event_time', '>', $timestamp ) ),
           'sort_by', array( 'attribute', true(), 'event/event_time' ) ) )
    }
    <div class="content-view-children">
        {def $counter = 5}       
        {foreach $children as $child }
          {if eq($counter, 0)}{break}{/if}
          {if ne($child.parent.parent.class_identifier, 'twitter') }
      <a href="{$child.url_alias|ezurl}">
            {$child.parent.parent.name|wash()}
            {if $child.data_map.title.has_content}
              {$child.data_map.title.content|wash()}
            {else}
              {$child.name|wash()}
            {/if}
      </a>
            {set $counter = dec($counter)}
          {/if}
        {/foreach}
    </div>
  </div>  
{/if}
...