如何分離模板文件的表現和數據邏輯


標題有點拗口,我也不知道這個標題合理不合理,總之意思呢,就是說,如何將模板文件中的數據處理邏輯進行分離,不要都是那些{query}。
話題來源:祝賀iws新版發佈,新論壇上線,順便瞎扯下近期二次開發iws的一些胡言亂語,管理員@nswe  在回覆中提到api.php爲View層減肥。

介紹一種方法:在classes/api/api_resource.php中添加一個方法,用來調用公告列表,可以默認指定10條,id倒序(看api.php源碼可知,order和limit都可以覆蓋,所以填一個常用的默認值即可)

複製代碼
1
2
3
4
5
6
'getNotice' => array('query' => array(
            'name' => 'announcement',
            'order' => 'id desc',
            'fields' => 'id, title, time',
            'limit' => '10'
        ))
然後,調用最新5條公告,這樣來弄:

複製代碼
1
2
3
4
5
<ul class="bulletin-list">
    {foreach:items = Api::run('getNotice', 'id-', 5)}
    <li><a href="{url:/site/notice_detail/id/$item[id]}" title="{$item['title']}">{$item['title']}</a></li>
    {/foreach}
</ul>
這樣比直接在html模板文件中{query}***{/query}感覺好太多了。
貼一個默認模板裏面的一段代碼,調用最新5條公告,和上面一樣的功能的:

複製代碼
1
2
3
4
5
6
<ul class="list">
    {query:name=announcement limit=5 order=id desc}
    {set:$tmpId=$item['id'];}
    <li><a href="{url:/site/notice_detail/id/$tmpId}">{$item['title']}</a></li>
    {/query}
</ul>
當然細讀一下api.php,可以發現還有定製性更強的方法。
發佈了5 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章