Smarty 显示最后 4 篇文章

Smarty show last 4 articles

我使用 SMARTY,当我想显示最后 4 篇文章时,它显示了 4 篇文章但不是最后一篇(倒数第二篇 - 倒数第二篇)。当我再添加一篇文章时,它会显示最后一篇(但现在不是最后一篇 :D)

我的 SQL 从数据库中获取数据的代码到此结束:

FROM cms_article AS a 
JOIN cms_detail_of_page AS d ON d.idOfDetailOfPage = a.idOfDetailOfPage 
JOIN cms_page AS p ON p.idOfPage = d.idOfPage
WHERE a.idOfLanguage = '" . $this->language . "' AND isArticleVisible = 1
ORDER BY publicationDateOfArticle DESC, timestampOfArticle DESC 
LIMIT 5"

这是我的 PHP Smarty 代码:

<div class="items">
{foreach $recentArticles as $article name=a}
    {if !$smarty.foreach.a.first}
    <div class="col50">
        <div class="item">
            <a href="/{$language}/{$article.url}/"> <img src="uploads/photogallery/preserve.php?filename={$article.image}" alt="{$article.headline}" style="width:560px; height:300px;">
                <span class="date">{$article.timestamp|date_format:"%d/%m/%Y"}</span>
                <span class="box">
                    <span class="category">{$article.parent}</span>
                    <h3>{$article.headline}</h3>
                    <p>{$article.preview|truncate:100}</p>
                </span>
            </a>
        </div>
    </div>
    {/if}
{/foreach}
    <div class="clear"></div>
</div>

我认为问题在于这个:

 {if !$smarty.foreach.a.first}

但是当我删除 ! 时,它只显示我的最后一篇文章(而不是最后 4 篇文章)。

你的文章是倒序排列的,所以第一篇实际上是最后一篇。 {if !$smarty.foreach.a.first} 表示 "do not show this if it is the first one" 只需删除它和 {/if}

您正在从数据库中提取 5 篇文章,您的 IF 语句跳过了第一个结果。将您的查询更改为 LIMIT 4 或更改 foreach

{foreach $recentArticles as $article name=a}
    {if $smarty.foreach.a.iteration < 5}
        <div class="col50">
            <div class="item">
                <a href="/{$language}/{$article.url}/"> <img src="uploads/photogallery/preserve.php?filename={$article.image}" alt="{$article.headline}" style="width:560px; height:300px;">
                    <span class="date">{$article.timestamp|date_format:"%d/%m/%Y"}</span>
                    <span class="box">
                        <span class="category">{$article.parent}</span>
                        <h3>{$article.headline}</h3>
                        <p>{$article.preview|truncate:100}</p>
                    </span>
                </a>
            </div>
        </div>
    {/if}
{/foreach}