我使用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篇文章)。
发布于 2018-08-01 16:42:45
您正在从DB获取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}发布于 2018-08-01 16:31:38
你的文章是以相反的顺序排序的,所以第一篇实际上是最后一篇。{if !$smarty.foreach.a.first}的意思是“如果它是第一个,就不显示它”,只需删除它和{/if}
https://stackoverflow.com/questions/51628664
复制相似问题