Créer une liste d'actualités

La création d'une liste d'actualités dans le contenu est très simple a réaliser avec le widget data news.

Vous devez d'abord créer le conteneur de la liste qui affichera les actualités avec la pagination.

{widget_news_data
        conf= ['limit' => 6]
        assign="newsData"
        assignPagination="paginationData"
    }
<div class="news-list row">
{include file="news/loop/news.tpl"
        data=$newsData
 }
</div>
{if $paginationData}
<ul class="pagination">
    {include file="section/loop/pagination.tpl" data=$paginationData}
</ul>
{/if}

 Je vous conseil de créer un dossier nommé loop dans le dossier du module courant pour y placer le fichier contenant la boucle

 Boucle des actualités

{if isset($data.id)}
    {$data = [$data]}
{/if}
{if !$classCol}
    {$classCol = 'col-sm-6 col-md-6 col-lg-6'}
{/if}
{if is_array($data) && !empty($data)}
    {foreach $data as $item}
        {if $classCat && is_bool($classCat)}
            {$classCat =  "thumbcat-{$item.id}"}
        {/if}
        <div class="media">
            <a class="media-link-object pull-left" href="{$item.uri}" title="{#show_page#|ucfirst}: {$item.name|ucfirst}">
                {if $item.imgSrc.small}
                    <img class="media-object" src="{$item.imgSrc.small}" alt="{$item.name|ucfirst}"/>
                {else}
                    <img class="media-object" src="{$item.imgSrc.default}" alt="{$item.name|ucfirst}"/>
                {/if}
            </a>
            <div class="media-body">
                <h4 class="media-heading">
                    <span class="date label label-default pull-right">
                        <span class="day">{$item.date.publish|date_format:"%d"}</span>
                        <span class="month">{$item.date.publish|date_format:"/%m"}</span>
                        <span class="year">{$item.date.publish|date_format:"/%Y"}</span>
                    </span>
                    <a href="{$item.uri}" title="{#show_more#|ucfirst}">
                        {$item.name|ucfirst}
                    </a>
                </h4>
                {capture name="linkMore"}<br /><a class="link" href="{$item.uri}" title="{#show_page#|ucfirst}">{#read_more#|ucfirst}</a>{/capture}
                {$trunLength = ($smarty.capture.linkMore|strlen + 230)}
                <p>
                    {$item.content|strip_tags|truncate:$trunLength:"... {$smarty.capture.linkMore}"}
                </p>
            </div>
        </div>
    {/foreach}
{/if}

 Pagination des actualités

{if isset($data.id)}
    {$data = [$data]}
{/if}
{if is_array($data) && !empty($data)}
    {foreach $paginationData as $item}
        {if is_int($item.name)}
            <li{if $smarty.get.page == $item.name || (!$smarty.get.page && $item.name == 1)} class="active"{/if}>
                <a href="{$item.url}" title="{#show_page#}">
                        {$item.name}
                </a>
            </li>
        {/if}
    {/foreach}
{/if}

 Créer la liste des dernières actualités

{widget_news_data
    conf =[
    'context' => 'last-news',
    'limit' => 3
    ]
    assign='newsData'
}
<div class="news-list-last sidebar-list row">
{include file="news/loop/sidebar.tpl" data=$newsData}
</div>

Boucle des dernières actualités

{if isset($data.id)}
    {$data = [$data]}
{/if}
{if !$classCol}
    {$classCol = 'col-xs-12 col-sm-6 col-md-12'}
{/if}
{if is_array($data) && !empty($data)}
    {foreach $data as $item}
        {if $classCat && is_bool($classCat)}
            {$classCat =  "thumbcat-{$item.id}"}
        {/if}
        <div class="{$classCol}" data-filter="{foreach $item.tagData as $tag}{$tag.name|replace:' ':'-'} {/foreach}">
            <div class="media row">
	            <figure class="col-xs-12 col-md-4 pull-right">
		            {if $item.imgSrc.small}
			            <img class="img-responsive" src="{$item.imgSrc.small}" alt="{$item.name|ucfirst}" width="480" height="360"/>
		            {else}
			            <img class="img-responsive" src="{$item.imgSrc.default}" alt="{$item.name|ucfirst}" width="480" height="360"/>
		            {/if}
	            </figure>
                <div class="caption col-xs-12 col-md-8">
	                <h4>{$item.name|ucfirst}</h4>
                    <time datetime="{$item.date.publish}">{$item.date.publish|date_format:"%e %B %Y"}</time>
                    <p>{$item.content|strip_tags|truncate:255:"..."}</p>
                </div>
                <a href="{$item.uri}" title="{#read_more#|ucfirst} {$item.name|ucfirst}"><span class="sr-only">{$item.name|ucfirst}</span></a>
            </div>
        </div>
    {/foreach}
{/if}

Sélections des news comportant un tag spécifique

  On peut également ciblé les éléments que l'ont souhaitent afficher en sélectionnant ou excluant des mots clés.

{widget_news_data
    conf= [
    'level' => 'last-news',
    'select' => [{getlang} => 'mon mot clé'],
    'limit' => 1
    ]
    assign="newsDataTags"
}
<div class="news-home">
    {include file="home/loop/news.tpl" data=$newsDataTags}
</div>

Exclusion des news comportant un tag spécifique

{widget_news_data
    conf= [
    'level'=>'last-news',
    'limit' => 3,
    'exclude' => [{getlang} => 'test']
    ]
assign="excludeNewsData"
}
<div class="news-list row">
    {include file="news/loop/news.tpl" data=$excludeNewsData}
</div>

 

Informations sur : Créer une liste d'actualités ?