Smarty的简单新闻档案?

时间:2009-12-18 16:37:49

标签: php templates smarty

有一个简单的新闻文章表:[ id | title | body | created ]

使用smarty从按创建日期排序的完整文章集创建简单新闻档案的最佳方法是什么?

格式:

  • 2009
    • 12.11。标题
    • 03.03。标题
    • 01.01。标题
  • 2008
    • 11.12。标题
    • 04.03。标题
    • 02.03。标题
    • 16.02。标题
  • 2007
    • ...
    • ...

<ul>
    {foreach item=p from=$news}
    <li>{$p->created} {$p->title}</li>
    {/foreach}
</ul>

1 个答案:

答案 0 :(得分:0)

有两种方式

  1. 您在Smarty中创建结构
  2. 您按年度分组数据
  3. 第一个会去

    $rows = $db->query('select year, title from news');
    $smarty->assign('news', $rows);
    
    // smarty code
    {if count($rows) > 0}
      {assign var=lastYear value=0}
      <ul><li>
      {foreach name=foo from=$rows item=item}
        {if $smarty.foreach.foo.first}
          {$row.year}<ul>
        {elseif $lastYear != $row.year}
          </ul></li><li>{$row.year}<ul>
        {/if}
        {assign var=lastYear value=$row.year}
        <li>{$row.title}</li>
      {/foreach}
      </ul></li></ul>
    {/if}
    

    另一个是在php中对值进行分组:

    $rows = $db->query('select year, title from news');
    $news = array();
    foreach($rows as $row) {
      $news[$row['year']][] = $row['title'];
    }
    
    $smarty->assign('news', $news);
    
    // smarty code
    <ul>
    {foreach from=news key=year item=rows}
      <li>{$year}<ul>
      {foreach from=$rows item=row}
        <li>{$row}</li>
      {/foreach}
      </ul></li>
    {/foreach}
    </ul>
    

    选择取决于你