文章列表頁主要是給某個分類顯示文章列表用的。
當前頁可用的變量有`$category`,這個變量是一個模型對象,表示當前分類,取值時可以直接把它當成數組用。
[TOC]
## 輸出`$category`內部的值
```
{$category.id} <!--輸出分類 id-->
{$category.parent_id} <!--輸出分類父級分類 id-->
{$category.name} <!--輸出分類名稱-->
{$category.description} <!--輸出分類描述-->
{$category.seo_title} <!--輸出分類seo標題-->
{$category.seo_keywords} <!--輸出分類 seo 關鍵字-->
{$category.seo_description} <!--輸出分類 seo 描述-->
```
以上的值也可以當成 php 變量直接輸出,這里只演示一下怎么輸出 id 屬性
```
<php>
echo $category['id']; /*輸出分類 id*/
</php>
```
## 顯示分類縮略圖
文章分類縮略圖是保存分類的 more 字段中
```
<!--先判斷縮略圖是否設置了-->
<notempty name="category.more.thumbnail">
<img src="{:cmf_get_image_url($category.more.thumbnail)}"/>
</notempty>
```
cmf_get_image_url方法是用來把縮略圖的相對路徑轉化為可訪問 url 的。
## 當前分類的文章列表制作
~~~
<php>
$where=[
'post.create_time'=>['egt',0]
];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="10"
relation="categories"
categoryIds="$category.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id'],'cid'=>$category['id']))}"
class="js-favorite-btn"
data-id="{$vo.id}"
data-table="portal_post"
data-title="{:base64_encode($vo.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">查看更多</a>
</div>
</div>
</portal:articles>
<ul class="pagination">
<page/>
</ul>
~~~
## 制作當前分類SEO
```
<head>
<title>{$category.name} {$category.seo_title} {$site_info.site_name|default=''}</title>
<meta name="keywords" content="{$category.seo_keywords},{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$category.seo_description},{$site_info.site_seo_description|default=''}">
<!--省略...-->
</head>
```
## 制作當前分類的面包屑
```
<ol class="breadcrumb">
<li><a href="__ROOT__/">首頁</a></li>
<portal:breadcrumb cid="category.id" self="false">
<li><a href="{:url('portal/List/index',['id'=>$vo['id']])}">{$vo.name}</a></li>
</portal:breadcrumb>
<li class="active">{$category.name}</li>
</ol>
```
## 創建文章列表模板
在`public/themes/quick_start/portal`目錄下創建`list.html`文件,內容如下:
```
<!DOCTYPE html>
<html>
<head>
<title>{$category.name} {$category.seo_title} {$site_info.site_name|default=''}</title>
<meta name="keywords" content="{$category.seo_keywords},{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$category.seo_description},{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="container">
<h2>{$category.name}</h2>
<div class="row">
<div class="col-md-9">
<div class="">
<php>
$where=[
'post.create_time'=>['egt',0]
];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="10"
relation="categories"
categoryIds="$category.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id'],'cid'=>$category['id']))}"
class="js-favorite-btn"
data-id="{$vo.id}"
data-table="portal_post"
data-title="{:base64_encode($vo.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">查看更多</a>
</div>
</div>
</portal:articles>
</div>
<ul class="pagination">
<page/>
</ul>
</div>
<div class="col-md-3">
</div>
</div>
</div>
<include file="public@footer"/>
<include file="public@scripts"/>
</body>
</html>
```
## 添加模板配置文件
在`public/themes/quick_start/portal`目錄下創建`list.json`文件,內容如下:
```
{
"name": "文章列表頁",
"action": "portal/List/index",
"description": "文章列表模板文件",
"order": 10.0,
"more": {
"vars": {
},
"widgets": {
}
}
}
```
## 更新模板
至此門戶文章列表模板制作完成。