我使用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篇文章)。
答案 0 :(得分:3)
您正在从数据库中获取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}
答案 1 :(得分:0)
您的文章以相反的顺序排列,因此第一个实际上是最后一个。
{if !$smarty.foreach.a.first}
的意思是“如果是第一个,则不要显示”
只需将其删除,然后{/if}