Explorar el Código

fix 漫画模块api

magicblack hace 2 meses
padre
commit
f5bce3dabe

+ 0 - 355
api.md

@@ -1,355 +0,0 @@
-# Actor 接口文档
-### 名词解释:PHP_INT_MAX一般为9223372036854775807
-## 1. get_list 接口
-
-### 请求方式
-- **GET**
-
-### URL
-- `/api.php/actor/get_list/`
-
-### 参数说明
-| 参数名 | 必填 | 类型 | 说明 |
-| --- | --- | --- | --- |
-| offset | 否 | number | 偏移量,数值范围:[1, PHP_INT_MAX] |
-| limit | 否 | number | 获取数量,数值范围:[1, PHP_INT_MAX] |
-| id | 否 | number | ID,数值范围:[1, PHP_INT_MAX] |
-| type_id | 否 | number | 类型ID,数值范围:[1, 100] |
-| sex | 否 | string | 性别,可选值:"男", "女" |
-| area | 否 | string | 地区,最大长度255字符 |
-| letter | 否 | string | 字母,最大长度1字符 |
-| level | 否 | string | 级别,最大长度1字符 |
-| name | 否 | string | 名字,最大长度20字符 |
-| blood | 否 | string | 血型,最大长度10字符 |
-| starsign | 否 | string | 星座,最大长度255字符 |
-| orderby | 否 | string | 排序字段,可选值:"hits", "hits_month", "hits_week", "hits_day", "time" |
-
-## 2. get_detail 接口
-
-### 请求方式
-- **GET**
-
-### URL
-- `/api.php/actor/get_detail/`
-
-### 参数说明
-| 参数名 | 必填 | 类型 | 说明 |
-| --- | --- | --- | --- |
-| actor_id | 是 | number | 演员ID,数值范围:[1, PHP_INT_MAX] |
-
-# Art 接口文档
-
-## 一、获取列表信息 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/art/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| tag | string | 否 | 标签,最大长度为100字符 |
-| orderby | string | 否 | 排序字段,可选值:id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level |
-| letter | string | 否 | 字母,最大长度为1字符 |
-| status | number | 否 | 状态,数值范围:[1,10] |
-| name | string | 否 | 名称,最大长度为100字符 |
-| sub | string | 否 | 子标题,最大长度为100字符 |
-| blurb | string | 否 | 摘要,最大长度为100字符 |
-| title | string | 否 | 标题,最大长度为50字符 |
-| content | string | 否 | 内容,最大长度为100字符 |
-| time_start | number | 否 | 开始时间戳,数值范围:[1, PHP_INT_MAX] |
-| time_end | number | 否 | 结束时间戳,数值范围:[1, PHP_INT_MAX] |
-
-## 二、获取详情信息 (`get_detail`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/art/get_detail/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| art_id | number | 是 | 艺术作品ID,数值范围:[0, PHP_INT_MAX] |
-
-# Comment 接口文档
-
-## 一、获取评论列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/comment/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 是 | 偏移量,数值范围:[1, PHP_INT_MAX] |
-| limit | number | 是 | 返回数据条数,数值范围:[1, PHP_INT_MAX] |
-| rid | number | 是 | 相关ID(例如文章或作品的ID),数值范围:[1, PHP_INT_MAX] |
-| orderby | string | 否 | 排序字段,可选值:time, up, down |
-
-# Gbook 接口文档
-
-## 一、获取列表信息 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/gbook/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| id | number | 否 | 记录ID,数值范围:[1, PHP_INT_MAX] |
-| rid | number | 否 | 回复ID,数值范围:[1, PHP_INT_MAX] |
-| user_id | number | 否 | 用户ID,数值范围:[1, PHP_INT_MAX] |
-| status | number | 否 | 状态,数值范围:[0, 10] |
-| name | string | 否 | 名称,最大长度为20字符 |
-| orderby | string | 否 | 排序字段,可选值:id,time,reply_time |
-
-# Link 接口文档
-
-## 一、获取列表信息 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/link/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| id | number | 否 | ID,数值范围:[1, PHP_INT_MAX] |
-| type | number | 否 | 类型,数值范围:[1, PHP_INT_MAX] |
-| name | string | 否 | 名称,最大长度为100字符 |
-| sort | number | 否 | 排序值,数值范围:[1, PHP_INT_MAX] |
-| time_start | number | 否 | 开始时间戳,数值范围:[1, PHP_INT_MAX] |
-| time_end | number | 否 | 结束时间戳,数值范围:[1, PHP_INT_MAX] |
-| orderby | string | 否 | 排序字段,可选值:id,time,time_add |
-
-# Topic 接口文档
-
-## 一、获取话题列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/topic/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| orderby | string | 否 | 排序字段,可选值:id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level |
-| time_start | number | 否 | 开始时间戳,数值范围:[0, PHP_INT_MAX] |
-| time_end | number | 否 | 结束时间戳,数值范围:[0, PHP_INT_MAX] |
-
----
-
-## 二、获取话题详情 (`get_detail`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/topic/get_detail/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| topic_id | number | 是 | 话题ID,数值范围:[0, PHP_INT_MAX] |
-
-# Type 接口文档
-
-## 一、获取类型列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/type/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| type_id | number | 是 | 类型ID,数值范围:[1, PHP_INT_MAX] |
-
-# User 接口文档
-
-## 一、获取用户列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/user/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| name | string | 否 | 用户名,最大长度为50字符 |
-| nickname | string | 否 | 昵称,最大长度为50字符 |
-| email | string | 否 | 邮箱地址,最大长度为100字符 |
-| qq | string | 否 | QQ号,最大长度为20字符 |
-| phone | string | 否 | 手机号,最大长度为20字符 |
-| reg_time_start | number | 否 | 注册开始时间戳,数值范围:[1, PHP_INT_MAX] |
-| reg_time_end | number | 否 | 注册结束时间戳,数值范围:[1, PHP_INT_MAX] |
-| group_id | number | 否 | 用户组ID,数值范围:[1, 500] |
-
----
-
-## 二、获取用户详情 (`get_detail`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/user/get_detail/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| id | number | 是 | 用户ID,数值范围:[1, PHP_INT_MAX] |
-
-# Vod 接口文档
-
-## 一、获取视频列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/vod/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| id | number | 否 | 视频ID,数值范围:[0, PHP_INT_MAX] |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| orderby | string | 否 | 排序字段,可选值:hits, up, pubdate, hits_week, hits_month, hits_day, score |
-| type_id | number | 否 | 类别ID,数值范围:[0, PHP_INT_MAX] |
-| vod_letter | string | 否 | 字母,最大长度为1字符 |
-| vod_name | string | 否 | 视频名称,最大长度为50字符 |
-| vod_tag | string | 否 | 标签,最大长度为20字符 |
-| vod_blurb | string | 否 | 摘要,最大长度为20字符 |
-| vod_class | string | 否 | 分类,最大长度为10字符 |
-
----
-
-## 二、获取视频详情 (`get_detail`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/vod/get_detail/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| vod_id | number | 是 | 视频ID,数值范围:[0, PHP_INT_MAX] |
-
----
-
-## 三、获取按年份分类的视频 (`get_year`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/vod/get_year/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| type_id_1 | number | 是 | 年份类别ID,数值范围:[0, PHP_INT_MAX] |
-
----
-
-## 四、获取按分类的视频 (`get_class`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/vod/get_class/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| type_id_1 | number | 是 | 分类ID,数值范围:[0, PHP_INT_MAX] |
-
----
-
-## 五、获取按地区的视频 (`get_area`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/vod/get_area/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| type_id_1 | number | 是 | 地区ID,数值范围:[0, PHP_INT_MAX] |
-
-# Website 接口文档
-
-## 一、获取网站列表 (`get_list`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/website/get_list/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| offset | number | 否 | 偏移量,默认为0,数值范围:[0, PHP_INT_MAX] |
-| limit | number | 否 | 返回数据条数,默认值及最大值为500,最小值为1 |
-| type_id | number | 否 | 类别ID,数值范围:[1, 100] |
-| name | string | 否 | 网站名称,最大长度为20字符 |
-| sub | string | 否 | 子标题,最大长度为20字符 |
-| en | string | 否 | 英文名称,最大长度为20字符 |
-| status | number | 否 | 状态,数值范围:[1, 9] |
-| letter | string | 否 | 字母,最大长度为1字符 |
-| area | string | 否 | 地区,最大长度为10字符 |
-| lang | string | 否 | 语言,最大长度为10字符 |
-| level | number | 否 | 级别,数值范围:[1, 9] |
-| start_time | number | 否 | 开始时间戳,数值范围:[1, PHP_INT_MAX] |
-| end_time | number | 否 | 结束时间戳,数值范围:[1, PHP_INT_MAX] |
-| tag | string | 否 | 标签,最大长度为20字符 |
-| orderby | string | 否 | 排序字段,可选值:id, time, time_add, score, hits, up, down, level |
-
----
-
-## 二、获取网站详情 (`get_detail`)
-
-### 请求方式
-- `GET`
-
-### URL
-- `/api.php/website/get_detail/`
-
-### 参数说明
-| 参数名 | 类型 | 必填 | 描述 |
-| --- | --- | --- | --- |
-| website_id | number | 是 | 网站ID,数值范围:[1, PHP_INT_MAX] |

+ 13 - 0
application/admin/controller/System.php

@@ -513,6 +513,7 @@ class System extends Base
             $config_new['api']['vod']['auth'] = mac_replace_text($config_new['api']['vod']['auth'], 2);
             $config_new['api']['art']['auth'] = mac_replace_text($config_new['api']['art']['auth'], 2);
             $config_new['api']['actor']['auth'] = mac_replace_text($config_new['api']['actor']['auth'], 2);
+            $config_new['api']['manga']['auth'] = mac_replace_text($config_new['api']['manga']['auth'], 2);
             $config_new['api']['publicapi']['auth'] = mac_replace_text($config_new['api']['publicapi']['auth'], 2);
 
             $config_old = config('maccms');
@@ -532,6 +533,18 @@ class System extends Base
                 'auth' => '',
             ];
         }
+        if(!isset($config['api']['manga'])){
+            $config['api']['manga'] = [
+                'status' => '0',
+                'charge' => '0',
+                'pagesize' => '20',
+                'imgurl' => '',
+                'typefilter' => '',
+                'datafilter' => 'manga_status=1',
+                'cachetime' => '',
+                'auth' => '',
+            ];
+        }
         $this->assign('config',$config );
         $this->assign('title', lang('admin/system/configapi/title'));
         return $this->fetch('admin@system/configapi');

+ 63 - 1
application/admin/view_new/system/configapi.html

@@ -10,7 +10,8 @@
                 <li lay-id="configapi_3">{:lang('admin/system/configapi/actor')}</li>
                 <li lay-id="configapi_4">{:lang('admin/system/configapi/role')}</li>
                 <li lay-id="configapi_5">{:lang('admin/system/configapi/website')}</li>
-                <li lay-id="configapi_5">{:lang('admin/system/configapi/publicapi')}</li>
+                <li lay-id="configapi_6">{:lang('admin/system/configapi/manga')}</li>
+                <li lay-id="configapi_7">{:lang('admin/system/configapi/publicapi')}</li>
             </ul>
             <div class="layui-tab-content">
                 <div class="layui-tab-item layui-show" id="movementTable">
@@ -437,6 +438,67 @@
                     </div>
 
                 </div>
+
+                <div class="layui-tab-item">
+                    <blockquote class="layui-elem-quote layui-quote-nm">
+                        {:lang('admin/system/configapi/manga_tip')}
+                    </blockquote>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/system/configapi/status')}:</label>
+                        <div class="layui-input-block">
+                            <input type="radio" name="api[manga][status]" value="0" title="{:lang('close')}" {if condition="$config['api']['manga']['status'] neq 1"}checked {/if}>
+                            <input type="radio" name="api[manga][status]" value="1" title="{:lang('open')}" {if condition="$config['api']['manga']['status'] eq 1"}checked {/if}>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/system/configapi/charge')}:</label>
+                        <div class="layui-input-block">
+                            <input type="radio" name="api[manga][charge]" value="0" title="{:lang('close')}" {if condition="$config['api']['manga']['charge'] neq 1"}checked {/if}>
+                            <input type="radio" name="api[manga][charge]" value="1" title="{:lang('open')}" {if condition="$config['api']['manga']['charge'] eq 1"}checked {/if}>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">
+                            {:lang('admin/system/configapi/pagesize')}:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="api[manga][pagesize]" placeholder="{:lang('admin/system/configapi/pagesize_tip')}" value="{$config['api']['manga']['pagesize']}" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">
+                            {:lang('admin/system/configapi/imgurl')}:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="api[manga][imgurl]" placeholder="{:lang('admin/system/configapi/imgurl_tip')}" value="{$config['api']['manga']['imgurl']}" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">
+                            {:lang('admin/system/configapi/typefilter')}:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="api[manga][typefilter]" placeholder="{:lang('admin/system/configapi/typefilter_tip')}" value="{$config['api']['manga']['typefilter']}" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">
+                            {:lang('admin/system/configapi/datafilter')}:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="api[manga][datafilter]" placeholder="{:lang('admin/system/configapi/datafilter_tip_manga')}" value="{$config['api']['manga']['datafilter']}" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">
+                            {:lang('admin/system/configapi/cachetime')}:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="api[manga][cachetime]" placeholder="{:lang('admin/system/configapi/cachetime_tip')}" value="{$config['api']['manga']['cachetime']}" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/system/configapi/auth')}:</label>
+                        <div class="layui-input-block">
+                            <textarea name="api[manga][auth]" class="layui-textarea">{$config['api']['manga']['auth']|mac_replace_text}</textarea>
+                        </div>
+                    </div>
+                </div>
                 <div class="layui-tab-item" id="movementTable">
 
                     <blockquote class="layui-elem-quote layui-quote-nm">

+ 24 - 20
application/api/controller/Manga.php

@@ -1,54 +1,58 @@
 <?php
 namespace app\api\controller;
 
+use think\Request;
+use think\Db;
+
 class Manga extends Base
 {
+    use PublicApi;
     public function __construct()
     {
         parent::__construct();
+        $this->check_config();
     }
 
-    public function index()
+    public function get_list(Request $request)
     {
-        $param = input();
-        $param['page'] = intval($param['page']) <1 ? 1 : intval($param['page']);
-        $param['limit'] = intval($param['limit']) <1 ? 20 : intval($param['limit']);
+        $param = $request->param();
+        $param['page'] = intval($param['page']) < 1 ? 1 : intval($param['page']);
+        $param['limit'] = intval($param['limit']) < 1 ? 20 : intval($param['limit']);
 
         $where = [];
-        $where['manga_status'] = ['eq',1];
+        $where['manga_status'] = ['eq', 1];
 
-        if(!empty($param['t'])){
-            $where['type_id'] = ['eq',$param['t']];
+        if (!empty($param['t'])) {
+            $where['type_id'] = ['eq', $param['t']];
         }
-        if(!empty($param['ids'])){
-            $where['manga_id'] = ['in',$param['ids']];
+        if (!empty($param['ids'])) {
+            $where['manga_id'] = ['in', $param['ids']];
         }
-        if(!empty($param['wd'])){
+        if (!empty($param['wd'])) {
             $param['wd'] = trim($param['wd']);
-            $where['manga_name'] = ['like','%'.$param['wd'].'%'];
+            $where['manga_name'] = ['like', '%' . $param['wd'] . '%'];
         }
 
-        $order='manga_time desc';
-        if(!empty($param['order'])){
+        $order = 'manga_time desc';
+        if (!empty($param['order'])) {
             $order = $param['order'];
         }
 
-        $data = model('Manga')->listData($where,$order,$param['page'],$param['limit']);
+        $data = model('Manga')->listData($where, $order, $param['page'], $param['limit']);
         return json($data);
     }
 
-    public function detail()
+    public function get_detail(Request $request)
     {
-        $param = input();
+        $param = $request->param();
         $where = [];
-        $where['manga_status'] = ['eq',1];
+        $where['manga_status'] = ['eq', 1];
 
-        if(!empty($param['id'])){
-            $where['manga_id'] = ['eq',$param['id']];
+        if (!empty($param['id'])) {
+            $where['manga_id'] = ['eq', $param['id']];
         }
 
         $data = model('Manga')->infoData($where);
         return json($data);
     }
-
 }

+ 181 - 0
application/api/controller/Provide.php

@@ -664,6 +664,187 @@ class Provide extends Base
         exit;
     }
 
+    public function manga()
+    {
+        if($GLOBALS['config']['api']['manga']['status'] != 1){
+            echo 'closed';
+            exit;
+        }
+
+        if($GLOBALS['config']['api']['manga']['charge'] == 1) {
+            $h = $_SERVER['REMOTE_ADDR'];
+            if (!$h) {
+                echo lang('api/auth_err');
+                exit;
+            }
+            else {
+                $auth = $GLOBALS['config']['api']['manga']['auth'];
+                $this->checkDomainAuth($auth);
+            }
+        }
+
+        $cache_time = intval($GLOBALS['config']['api']['manga']['cachetime']);
+        $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_manga_'.md5(http_build_query($this->_param));
+        $html = Cache::get($cach_name);
+        if(empty($html) || $cache_time==0) {
+            $where = [];
+            if (!empty($this->_param['ids'])) {
+                $where['manga_id'] = ['in', $this->_param['ids']];
+            }
+            if (!empty($GLOBALS['config']['api']['manga']['typefilter'])) {
+                $where['type_id'] = ['in', $GLOBALS['config']['api']['manga']['typefilter']];
+            }
+
+            if (!empty($this->_param['t'])) {
+                if (empty($GLOBALS['config']['api']['manga']['typefilter']) || strpos($GLOBALS['config']['api']['manga']['typefilter'], $this->_param['t']) !== false) {
+                    $where['type_id'] = $this->_param['t'];
+                }
+            }
+            if (!empty($this->_param['h'])) {
+                $todaydate = date('Y-m-d', strtotime('+1 days'));
+                $tommdate = date('Y-m-d H:i:s', strtotime('-' . $this->_param['h'] . ' hours'));
+
+                $todayunix = strtotime($todaydate);
+                $tommunix = strtotime($tommdate);
+
+                $where['manga_time'] = [['gt', $tommunix], ['lt', $todayunix]];
+            }
+            if (!empty($this->_param['wd'])) {
+                $where['manga_name'] = ['like', '%' . $this->_param['wd'] . '%'];
+            }
+            if (!empty($GLOBALS['config']['api']['manga']['datafilter'])) {
+                $where['_string'] .= ' ' . $GLOBALS['config']['api']['manga']['datafilter'];
+            }
+            if (empty($this->_param['pg'])) {
+                $this->_param['pg'] = 1;
+            }
+            $pagesize = $GLOBALS['config']['api']['manga']['pagesize'];
+            if (!empty($this->_param['pagesize']) && $this->_param['pagesize'] > 0) {
+                $pagesize = min((int)$this->_param['pagesize'], 100);
+            }
+
+            $order = 'manga_time desc';
+            $field = 'manga_id,manga_name,type_id,"" as type_name,manga_en,manga_time,manga_remarks,manga_chapter_from,manga_time';
+
+            if ($this->_param['ac'] == 'detail') {
+                $field = '*';
+            }
+            $res = model('manga')->listData($where, $order, $this->_param['pg'], $pagesize, 0, $field, 0);
+
+
+            if ($this->_param['at'] == 'xml') {
+                $html = $this->manga_xml($res);
+            } else {
+                $html = json_encode($this->manga_json($res),JSON_UNESCAPED_UNICODE);
+            }
+            $html = mac_filter_tags($html);
+            if($cache_time>0) {
+                Cache::set($cach_name, $html, $cache_time);
+            }
+        }
+        echo $html;
+        exit;
+    }
+
+    public function manga_json($res)
+    {
+        $type_list = model('Type')->getCache('type_list');
+        foreach($res['list'] as $k=>&$v){
+            $type_info = $type_list[$v['type_id']];
+            $v['type_name'] = $type_info['type_name'];
+            $v['manga_time'] = date('Y-m-d H:i:s',$v['manga_time']);
+
+            if(substr($v["manga_pic"],0,4)=="mac:"){
+                $v["manga_pic"] = str_replace('mac:',$this->getImgUrlProtocol('manga'), $v["manga_pic"]);
+            }
+            elseif(!empty($v["manga_pic"]) && substr($v["manga_pic"],0,4)!="http" && substr($v["manga_pic"],0,2)!="//"){
+                $v["manga_pic"] = $GLOBALS['config']['api']['manga']['imgurl'] . $v["manga_pic"];
+            }
+        }
+
+        if($this->_param['ac']!='detail') {
+            $class = [];
+            $typefilter  = explode(',',$GLOBALS['config']['api']['manga']['typefilter']);
+
+            foreach ($type_list as $k=>&$v) {
+
+                if (!empty($GLOBALS['config']['api']['manga']['typefilter'])){
+                    if(in_array($v['type_id'],$typefilter)) {
+                        $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']];
+                    }
+                }
+                else {
+                    $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']];
+                }
+            }
+            $res['class'] = $class;
+        }
+        return $res;
+    }
+
+    public function manga_xml($res)
+    {
+        $xml = '<?xml version="1.0" encoding="utf-8"?>';
+        $xml .= '<rss version="5.1">';
+        $type_list = model('Type')->getCache('type_list');
+
+        $xml .= '<list page="'.$res['page'].'" pagecount="'.$res['pagecount'].'" pagesize="'.$res['limit'].'" recordcount="'.$res['total'].'">';
+        foreach($res['list'] as $k=>&$v){
+            $type_info = $type_list[$v['type_id']];
+            $xml .= '<video>';
+            $xml .= '<last>'.date('Y-m-d H:i:s',$v['manga_time']).'</last>';
+            $xml .= '<id>'.$v['manga_id'].'</id>';
+            $xml .= '<tid>'.$v['type_id'].'</tid>';
+            $xml .= '<name><![CDATA['.$v['manga_name'].']]></name>';
+            $xml .= '<type>'.$type_info['type_name'].'</type>';
+            if(substr($v["manga_pic"],0,4)=="mac:"){
+                $v["manga_pic"] = str_replace('mac:',$this->getImgUrlProtocol('manga'), $v["manga_pic"]);
+            }
+            elseif(!empty($v["manga_pic"]) && substr($v["manga_pic"],0,4)!="http"  && substr($v["manga_pic"],0,2)!="//"){
+                $v["manga_pic"] = $GLOBALS['config']['api']['manga']['imgurl'] . $v["manga_pic"];
+            }
+
+            if($this->_param['ac']=='detail'){
+                $xml .= '<pic>'.$v["manga_pic"].'</pic>';
+                $xml .= '<lang>'.$v['manga_lang'].'</lang>';
+                $xml .= '<area>'.$v['manga_area'].'</area>';
+                $xml .= '<year>'.$v['manga_year'].'</year>';
+                $xml .= '<state>'.$v['manga_serial'].'</state>';
+                $xml .= '<note><![CDATA['.$v['manga_remarks'].']]></note>';
+                $xml .= '<actor><![CDATA['.$v['manga_actor'].']]></actor>';
+                $xml .= '<director><![CDATA['.$v['manga_director'].']]></director>';
+                $xml .= '<des><![CDATA['.$v['manga_content'].']]></des>';
+            }
+            else {
+                $xml .= '<dt>' . str_replace('$$$', ',', $v['manga_chapter_from']) . '</dt>';
+                $xml .= '<note><![CDATA[' . $v['manga_remarks'] . ']]></note>';
+            }
+            $xml .= '</video>';
+        }
+        $xml .= '</list>';
+
+        if($this->_param['ac']!='detail') {
+            $xml .= "<class>";
+            $typefilter  = explode(',',$GLOBALS['config']['api']['manga']['typefilter']);
+            foreach ($type_list as $k=>&$v) {
+                if($v['type_mid']==12) {
+                    if (!empty($GLOBALS['config']['api']['manga']['typefilter'])){
+                        if(in_array($v['type_id'],$typefilter)) {
+                            $xml .= "<ty id=\"" . $v["type_id"] . "\">" . $v["type_name"] . "</ty>";
+                        }
+                    }
+                    else {
+                        $xml .= "<ty id=\"" . $v["type_id"] . "\">" . $v["type_name"] . "</ty>";
+                    }
+                }
+            }
+            unset($rs);
+            $xml .= "</class>";
+        }
+        $xml .= "</rss>";
+        return $xml;
+    }
+
     public function website()
     {
         if($GLOBALS['config']['api']['website']['status'] != 1){

+ 6 - 2
application/lang/de-de.php

@@ -959,7 +959,8 @@ https://www.baidu.com/123.jpg',
                             7,Kategorienliste Adresse /api.php/type/get_list/<br>
                             8,Benutzerliste Adresse /api.php/user/get_list/<br>
                             9,Videoliste Adresse /api.php/vod/get_list/<br>
-                            10,Websiteliste Adresse /api.php/website/get_list/',
+                            10,Websiteliste Adresse /api.php/website/get_list/<br>
+                            11,Manga-Listen-URL /api.php/manga/get_list/',
   'admin/system/configcollect/title' => 'Sammlungsparameterkonfiguration',
   'admin/system/configcollect/vod' => 'Videosammlungseinstellungen',
   'admin/system/configcollect/art' => 'Artikelsammlungseinstellungen',
@@ -1910,4 +1911,7 @@ Nota: Se tanto a lista negra quanto a lista branca forem preenchidas, a polític
   'validate/require_ip' => 'IP é obrigatório',
   'validate/require_time' => 'Tempo é obrigatório',
   'manga' => 'Comics',
-);
+  'admin/system/configapi/manga'=>'Manga-API-Einstellungen',
+  'admin/system/configapi/manga_tip'=>'Tipps:<br>1,Manga-Listen-URL /api.php/provide/manga/?ac=list<br>2,Manga-Detail-URL /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'SQL-Abfragebedingung z.B. manga_status=1',
+);

+ 5 - 1
application/lang/en-us.php

@@ -959,7 +959,8 @@ https://www.baidu.com/123.jpg',
                         7,Category list address /api.php/type/get_list/<br>
                         8,User list address /api.php/user/get_list/<br>
                         9,Video list address /api.php/vod/get_list/<br>
-                        10,Website list address /api.php/website/get_list/',
+                        10,Website list address /api.php/website/get_list/<br>
+                        11,Manga list address /api.php/manga/get_list/',
   'admin/system/configcollect/title' => 'Collection Parameter Configuration',
   'admin/system/configcollect/vod' => 'Video Collection Settings',
   'admin/system/configcollect/art' => 'Article Collection Settings',
@@ -1918,4 +1919,7 @@ Note: If both black and white lists are filled, both policies will take effect.'
   'validate/require_ip' => 'IP address is required',
   'validate/require_time' => 'Time is required',
   'manga' => 'Manga',
+  'admin/system/configapi/manga'=>'Manga API Settings',
+  'admin/system/configapi/manga_tip'=>'Tips:<br>1,Manga list url /api.php/provide/manga/?ac=list<br>2,Manga detail url /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'SQL query condition e.g. manga_status=1',
 );

+ 6 - 2
application/lang/es-es.php

@@ -960,7 +960,8 @@ https://www.baidu.com/123.jpg
                             7,Dirección de la lista de categorías /api.php/type/get_list/<br>
                             8,Dirección de la lista de usuarios /api.php/user/get_list/<br>
                             9,Dirección de la lista de videos /api.php/vod/get_list/<br>
-                            10,Dirección de la lista del sitio web /api.php/website/get_list/',
+                            10,Dirección de la lista del sitio web /api.php/website/get_list/<br>
+                            11,Dirección de la lista de manga /api.php/manga/get_list/',
   'admin/system/configcollect/title' => 'Configuración de Parámetros de Recolección',
   'admin/system/configcollect/vod' => 'Configuración de Recolección de Vídeos',
   'admin/system/configcollect/art' => 'Configuración de Recolección de Artículos',
@@ -1918,4 +1919,7 @@ Nota: Si se especifican listas negras y blancas, ambas se aplicarán simultánea
   'validate/require_ip' => 'Se requiere la dirección IP',
   'validate/require_time' => 'Se requiere la hora',
   'manga' => 'historietas',
-);
+  'admin/system/configapi/manga'=>'Configuración de la API de Manga',
+  'admin/system/configapi/manga_tip'=>'Consejos:<br>1,URL de la lista de manga /api.php/provide/manga/?ac=list<br>2,URL de detalles del manga /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'Condición de consulta SQL, por ejemplo, manga_status=1',
+);

+ 6 - 2
application/lang/fr-fr.php

@@ -959,7 +959,8 @@ https://www.baidu.com/123.jpg',
                             7,Adresse de la liste des catégories /api.php/type/get_list/<br>
                             8,Adresse de la liste des utilisateurs /api.php/user/get_list/<br>
                             9,Adresse de la liste des vidéos /api.php/vod/get_list/<br>
-                            10,Adresse de la liste des site web /api.php/website/get_list',
+                            10,Adresse de la liste des site web /api.php/website/get_list/<br>
+                            11,Adresse de la liste des manga /api.php/manga/get_list/',
   'admin/system/configcollect/title' => 'Configuration des paramètres de collecte',
   'admin/system/configcollect/vod' => 'Paramètres de collecte vidéo',
   'admin/system/configcollect/art' => 'Paramètres de collecte d\'articles',
@@ -1918,4 +1919,7 @@ Note: Si les listes noires et blanches sont remplies, les stratégies s\'appliqu
   'validate/require_ip' => 'Adresse IP requise',
   'validate/require_time' => 'Temps requis',
   'manga' => 'bandes dessinées',
-);
+  'admin/system/configapi/manga'=>'Paramètres de l\'API Manga',
+  'admin/system/configapi/manga_tip'=>'Conseils:<br>1,URL de la liste des mangas /api.php/provide/manga/?ac=list<br>2,URL des détails du manga /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'Condition de requête SQL, par exemple manga_status=1',
+);

+ 5 - 1
application/lang/ja-jp.php

@@ -960,7 +960,8 @@ https://www.baidu.com/123.jpg
                             7,カテゴリリストのアドレス /api.php/type/get_list/<br>
                             8,ユーザーリストのアドレス /api.php/user/get_list/<br>
                             9,ビデオリストのアドレス /api.php/vod/get_list/<br>
-                            10,ウェブサイトリストのアドレス /api.php/website/get_list',
+                            10,ウェブサイトリストのアドレス /api.php/website/get_list/<br>
+                            11,漫画リストのアドレス /api.php/manga/get_list/',
   'admin/system/configcollect/title' => '収集パラメータ構成',
   'admin/system/configcollect/vod' => 'ビデオ収集設定',
   'admin/system/configcollect/art' => '記事収集設定',
@@ -1922,4 +1923,7 @@ https://www.baidu.com/123.jpg
   'validate/require_ip' => 'ipは必須',
   'validate/require_time' => '時間は必須',
   'manga' => '漫画',
+  'admin/system/configapi/manga'=>'漫画API設定',
+  'admin/system/configapi/manga_tip'=>'ヒント情報:<br>1,漫画リストアドレス/api.php/provide/manga/?ac=list<br>2,漫画詳細アドレス/api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'SQLクエリ条件 例:manga_status=1',
 );

+ 5 - 1
application/lang/ko-kr.php

@@ -960,7 +960,8 @@ https://www.baidu.com/123.jpg
                             7,분류 목록 주소 /api.php/type/get_list/<br>
                             8,사용자 목록 주소 /api.php/user/get_list/<br>
                             9,비디오 목록 주소 /api.php/vod/get_list/<br>
-                            10,웹사이트 목록 주소 /api.php/website/get_list',
+                            10,웹사이트 목록 주소 /api.php/website/get_list/<br>
+                            11,만화 목록 주소 /api.php/manga/get_list/',
   'admin/system/configcollect/title' => '수집 매개변수 구성',
   'admin/system/configcollect/vod' => '동영상 수집 설정',
   'admin/system/configcollect/art' => '기사 수집 설정',
@@ -1921,4 +1922,7 @@ https://www.baidu.com/123.jpg
   'validate/require_ip' => 'IP는 필수입니다.',
   'validate/require_time' => '시간은 필수입니다.',
   'manga' => '만화',
+  'admin/system/configapi/manga'=>'만화 API 설정',
+  'admin/system/configapi/manga_tip'=>'팁 정보:<br>1,만화 목록 주소 /api.php/provide/manga/?ac=list<br>2,만화 상세 주소 /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'SQL 쿼리 조건 예: manga_status=1',
 );

+ 5 - 1
application/lang/pt-pt.php

@@ -960,7 +960,8 @@ https://www.baidu.com/123.jpg
                             7,Endereço da lista de categorias /api.php/type/get_list/<br>
                             8,Endereço da lista de usuários /api.php/user/get_list/<br>
                             9,Endereço da lista de vídeos /api.php/vod/get_list/<br>
-                            10,ndereço da lista de sites /api.php/website/get_list',
+                            10,ndereço da lista de sites /api.php/website/get_list/<br>
+                            11,Endereço da lista de manga /api.php/manga/get_list/',
   'admin/system/configcollect/title' => 'Configuração de parâmetros de coleta',
   'admin/system/configcollect/vod' => 'Configurações de coleta de vídeo',
   'admin/system/configcollect/art' => 'Configurações de coleta de artigo',
@@ -1922,4 +1923,7 @@ https://www.baidu.com/123.jpg
   'validate/require_ip' => 'O IP é obrigatório',
   'validate/require_time' => 'O tempo é obrigatório',
   'manga' => 'quadrinhos',
+  'admin/system/configapi/manga'=>'Configurações da API de Manga',
+  'admin/system/configapi/manga_tip'=>'Dicas:<br>1,URL da lista de manga /api.php/provide/manga/?ac=list<br>2,URL dos detalhes do manga /api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'Condição de consulta SQL, por exemplo, manga_status=1',
 );

+ 5 - 1
application/lang/zh-cn.php

@@ -1031,7 +1031,8 @@ https://www.baidu.com/123.jpg
                             7,分类列表地址/api.php/type/get_list/<br>
                             8,用户列表地址/api.php/user/get_list/<br>
                             9,视频列表地址/api.php/vod/get_list/<br>
-                            10,网址列表地址/api.php/website/get_list',
+                            10,网址列表地址/api.php/website/get_list/<br>
+                            11,漫画列表地址/api.php/manga/get_list/',
 
 
 
@@ -2112,4 +2113,7 @@ https://www.baidu.com/123.jpg
     'validate/require_ip'=>'ip必须',
     'validate/require_time'=>'时间必须',
     'manga' => '漫画',
+    'admin/system/configapi/manga'=>'漫画API设置',
+    'admin/system/configapi/manga_tip'=>'提示信息:<br>1,漫画列表地址/api.php/provide/manga/?ac=list<br>2,漫画详情地址/api.php/provide/manga/?ac=detail',
+    'admin/system/configapi/datafilter_tip_manga'=>'SQL查询条件例如 manga_status=1',
 ];

+ 5 - 1
application/lang/zh-tw.php

@@ -960,7 +960,8 @@ https://www.baidu.com/123.jpg
                             7,分類列表地址/api.php/type/get_list/<br>
                             8,用戶列表地址/api.php/user/get_list/<br>
                             9,視頻列表地址/api.php/vod/get_list/<br>
-                            10,網址列表地址/api.php/website/get_list/',
+                            10,網址列表地址/api.php/website/get_list/<br>
+                            11,漫畫列表地址/api.php/manga/get_list/',
   'admin/system/configcollect/title' => '采集參數配置',
   'admin/system/configcollect/vod' => '視頻采集設置',
   'admin/system/configcollect/art' => '文章采集設置',
@@ -1923,4 +1924,7 @@ https://www.baidu.com/123.jpg
   'validate/require_ip' => 'ip必須',
   'validate/require_time' => '時間必須',
   'manga' => '漫畫',
+  'admin/system/configapi/manga'=>'漫畫API設置',
+  'admin/system/configapi/manga_tip'=>'提示信息:<br>1,漫畫列表地址/api.php/provide/manga/?ac=list<br>2,漫畫詳情地址/api.php/provide/manga/?ac=detail',
+  'admin/system/configapi/datafilter_tip_manga'=>'SQL查詢條件例如 manga_status=1',
 );

+ 5 - 1
说明文档/API接口说明.txt

@@ -26,6 +26,10 @@ api接口仅供提供数据
 列表http://域名/api.php/provide/website/?ac=list
 详情http://域名/api.php/provide/website/?ac=detail
 
+6,漫画部分
+列表http://域名/api.php/provide/manga/?ac=list
+详情http://域名/api.php/provide/manga/?ac=detail
+
 列表数据格式:
 
 {"code":1,"msg":"数据列表","page":1,"pagecount":1,"limit":"20","total":15,"list":[{"vod_id":21,"vod_name":"测试1","type_id":6,"type_name":"子类1","vod_en":"qingjian","vod_time":"2018-03-29 20:50:19","vod_remarks":"超清","vod_play_from":"youku"},{"vod_id":20,"vod_name":"测试2","type_id":6,"type_name":"子类1","vod_en":"baolijiequ","vod_time":"2018-03-27 21:17:52","vod_remarks":"超清","vod_play_from":"youku"},{"vod_id":19,"vod_name":"测试3","type_id":6,"type_name":"子类3","vod_en":"chaofanzhizhuxia2","vod_time":"2018-03-27 21:17:51","vod_remarks":"高清","vod_play_from":"youku"},{"vod_id":18,"vod_name":"测试4","type_id":6,"type_name":"子类4","vod_en":"muxingshangxing","vod_time":"2018-03-27 21:17:37","vod_remarks":"高清","vod_play_from":"youku"},{"vod_id":15,"vod_name":"测试5","type_id":6,"type_name":"子类5","vod_en":"yingxiongbense2018","vod_time":"2018-03-22 16:09:17","vod_remarks":"高清","vod_play_from":"qiyi,sinahd"},{"vod_id":13,"vod_name":"测试6","type_id":8,"type_name":"子类6","vod_en":"piaoxiangjianyu","vod_time":"2018-03-21 20:37:52","vod_remarks":"全36集","vod_play_from":"youku,qiyi"},{"vod_id":14,"vod_name":"测试7","type_id":8,"type_name":"子类7","vod_en":"guaitanzhimeiyingjinghun","vod_time":"2018-03-20 21:32:27","vod_remarks":"高清","vod_play_from":"qiyi"}]}
@@ -60,4 +64,4 @@ h=几小时内的数据
 <?xml version="1.0" encoding="utf-8"?><rss version="5.0"><list page="1" pagecount="23" pagesize="20" recordcount="449"><video><last>2012-05-06 13:32:28</last><id>493</id><tid>9</tid><name><![CDATA[测试]]></name><type>子类1</type><dt>dplayer</dt><note><![CDATA[]]></note><vlink><![CDATA[http://localhost/vod/?493.html]]></vlink><plink><![CDATA[http://localhost/vodplay/?493-1-1.html]]></plink></video></list><class><ty id="1">分类1</ty><ty id="2">分类2</ty><ty id="3">分类3</ty><ty id="4">分类4</ty><ty id="5">子类1</ty><ty id="6">子类2</ty><ty id="7">子类3</ty><ty id="8">子类4</ty><ty id="9">子类5</ty><ty id="10">子类6</ty><ty id="11">子类7</ty><ty id="12">子类8</ty><ty id="13">子类9</ty><ty id="14">子类10</ty><ty id="15">子类11</ty></class></rss>
 
 内容数据格式:
-<?xml version="1.0" encoding="utf-8"?><rss version="5.0"><list page="1" pagecount="1" pagesize="20" recordcount="1"><video><last>2012-05-06 13:32:28</last><id>493</id><tid>9</tid><name><![CDATA[测试1]]></name><type>恐怖片</type><pic>http://localhost/uploads/20091130205750222.JPG</pic><lang>英语</lang><area>欧美</area><year>2012</year><state>0</state><note><![CDATA[]]></note><type>_9</type><actor><![CDATA[]]></actor><director><![CDATA[Ryan Schifrin]]></director><dl><dd from="qvod"><![CDATA[第1集$http://localhost/1.mp4|]]></dd></dl><des><![CDATA[<p>简单介绍。 <br /></p>]]></des><vlink><![CDATA[http://localhost/vod/?493.html]]></vlink><plink><![CDATA[http://localhost/vodplay/?493-1-1.html]]></plink></video></list></rss>
+<?xml version="1.0" encoding="utf-8"?><rss version="5.0"><list page="1" pagecount="1" pagesize="20" recordcount="1"><video><last>2012-05-06 13:32:28</last><id>493</id><tid>9</tid><name><![CDATA[测试1]]></name><type>恐怖片</type><pic>http://localhost/uploads/20091130205750222.JPG</pic><lang>英语</lang><area>欧美</area><year>2012</year><state>0</state><note><![CDATA[]]></note><type>_9</type><actor><![CDATA[]]></actor><director><![CDATA[Ryan Schifrin]]></director><dl><dd from="qvod"><![CDATA[第1集$http://localhost/1.mp4|]]></dd></dl><des><![CDATA[<p>简单介绍。 <br /></p>]]></des><vlink><![CDATA[http://localhost/vod/?493.html]]></vlink><plink><![CDATA[http://localhost/vodplay/?493-1-1.html]]></plink></video></list></rss>

+ 6 - 2
说明文档/API接口说明V2.txt

@@ -45,6 +45,10 @@ API 接口说明 V2(基于当前实现)
 - 路径:/api.php/provide/website/
 - 参数:ac=list|detail,t、ids、pg、wd、h、pagesize 等
 
+5) 漫画(Manga)
+- 路径:/api.php/provide/manga/
+- 参数:ac=list|detail,t、ids、pg、wd、h、pagesize 等
+
 三、模块接口(REST 风格)
 说明:除特别说明外,列表接口统一支持 offset、limit、orderby 等;详情接口统一以 {xxx_id} 为必填参数。
 
@@ -201,7 +205,7 @@ API 接口说明 V2(基于当前实现)
   - 参数:website_id:number 必填(1..MAX)
 
 11) Manga(漫画)
-- 列表:/api.php/manga/index/
+- 列表:/api.php/manga/get_list/
   - 参数:
     - page:number(>=1) 默认 1
     - limit:number(>=1) 默认 20
@@ -210,6 +214,6 @@ API 接口说明 V2(基于当前实现)
     - wd:搜索关键字
     - order:排序,默认 manga_time desc
   - 返回:与模型 listData 一致:{"code":1,"msg":"数据列表","page":number,"pagecount":number,"limit":number,"total":number,"list":[...]}
-- 详情:/api.php/manga/detail/
+- 详情:/api.php/manga/get_detail/
   - 参数:id:number(漫画ID)
   - 返回:{"code":1,"msg":"获取成功","info":{...}}

+ 119 - 1
说明文档/标签说明.txt

@@ -18,6 +18,7 @@
   │      └─topic    专题模块模板目录
   │      └─user     用户中心模块模板目录
   │      └─vod      视频模块模板目录
+  │      └─manga    漫画模块模板目录
   │      └─plot     分集剧情模块模板目录
   │      └─website  网址导航模块模板目录
   │─tempalte/2/  模板2
@@ -76,6 +77,20 @@ vod/type.html        视频分类页面
 vod/show.html        视频分类筛选页
 vod/plot.html        视频分集剧情列表
+manga/confirm.html     确认支付积分页面
+manga/copyright.html      版权提示和跳转
+manga/detail.html      漫画内容页
+manga/detail_pwd.html      验证密码页
+manga/rss.html         漫画内容rss
+manga/play.html        漫画阅读页
+manga/player.html      试看页面阅读页
+manga/player_pwd.html      验证密码页
+manga/down.html        漫画下载页
+manga/downer_pwd.html      验证密码页
+manga/search.html      漫画搜索页面
+manga/type.html        漫画分类页面
+manga/show.html        漫画分类筛选页
+│
 user/ajax_info.html   用户弹出层登录详情
 user/ajax_login.html  用户弹出层登录界面
 user/buy.html         用户中心-在线充值
@@ -141,6 +156,7 @@ website/type.html       网址分类页
 {$maccms.search_hot}       热门搜索词
 {$maccms.art_extend_class}       全局文章扩展分类
 {$maccms.vod_extend_class}       全局视频扩展分类
+{$maccms.manga_extend_class}     全局漫画扩展分类
 {$maccms.vod_extend_state}       全局视频资源
 {$maccms.vod_extend_version}       全局视频版本
 {$maccms.vod_extend_area}       全局视频地区
@@ -199,11 +215,15 @@ $GLOBALS['config']['seo'] SEO参数配置
 {$maccms.seo.website.name}  网址导航首页SEO标题
 {$maccms.seo.website.key}  网址导航首页SEO关键字
 {$maccms.seo.website.des}  网址导航首页SEO描述
+
+{$maccms.seo.manga.name}  漫画首页SEO标题
+{$maccms.seo.manga.key}  漫画首页SEO关键字
+{$maccms.seo.manga.des}  漫画首页SEO描述
 ------------------下方高能------------------------------
 $GLOBALS['type_id']  当前分类页ID,在(分类页,筛选页,内容页,播放页,下载页都有值)
 $GLOBALS['type_pid']  当前分类页父ID,在(分类页,筛选页,内容页,播放页,下载页都有值)
 
-{$maccms.mid}模块id,1=>'视频',2=>'文章',3=>'专题',4=>'评论',5=>'留言',6=>'用户中心',7=>'自定义页面',8=>'演员',9=>'角色',10=>'剧情',11=>'网址'
+{$maccms.mid}模块id,1=>'视频',2=>'文章',3=>'专题',4=>'评论',5=>'留言',6=>'用户中心',7=>'自定义页面',8=>'演员',9=>'角色',10=>'剧情',11=>'网址',12=>'漫画'
 
 {$maccms.aid}当前系统页面id
 首页1
@@ -254,6 +274,14 @@ rss3
 网址导航搜索113
 网址导航详情114
 
+漫画首页120
+漫画分类121
+漫画分类筛选122
+漫画搜索123
+漫画详情124
+漫画阅读125
+漫画下载126
+
 ------------------------------------------------
 设计首页幻灯片的时候,建议统一调用推荐值为9的数据~
 
@@ -366,6 +394,96 @@ paging是否分页yes
 {:mac_url_topic_detail($obj)} 专题详情页链接
 {:mac_url_topic_index()}  专题首页链接
 
+=======漫画列表标签=======
+order排列顺序desc倒序,asc正序
+by排序依据 id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd
+start从第几条开始
+num获取条数
+ids指定1,2,3一组ID;
+not不抱含id 多个逗号链接
+type指定获取分类数据 all所有;1,2,3指定;
+class指定某扩展分类 支持多个 动作,喜剧
+tag指定tag 支持多个  aaa,xxx
+level指定推荐值 支持多个  1,2
+area指定地区 支持多个  大陆,香港
+lang指定语言 支持多个  国语,粤语
+year指定年代 支持多个 2002,2003
+serial连载状态
+timeadd添加时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour
+timehits点击时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour
+time更新时间 一天前 -1 day,一周前-1 week,一月前-1 month,一小时前-1 hour
+hitsmonth月点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000
+hitsweek周点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000
+hitsday日点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000
+hits总点击量 大于一千 gt 1000, 小于一千 lt 1000,区间一千二千之间 between 1000,2000
+paging是否分页yes
+pageurl分页地址
+cachetime自定义缓存时间单位秒
+
+{maccms:manga num="10" paging="no" type="all" order="asc" by="sort"}
+   内部同下方,{$obj.改为{$vo.开头即可
+{/maccms:manga}
+=======漫画内容页独有标签=======
+{$obj.manga_id} 漫画id
+{$obj.type_id} 分类id
+{$obj.type_id_1} 一级分类id
+{$obj.group_id} 会员组id
+{$obj.manga_name} 漫画名称
+{$obj.manga_sub} 副标题
+{$obj.manga_en} 英文名
+{$obj.manga_status} 状态(0=锁定,1=正常)
+{$obj.manga_letter} 首字母
+{$obj.manga_color} 标题颜色
+{$obj.manga_from} 来源
+{$obj.manga_author} 作者
+{$obj.manga_tag} 标签
+{$obj.manga_class} 扩展分类
+{$obj.manga_pic} 封面图
+{$obj.manga_pic_thumb} 封面缩略图
+{$obj.manga_pic_slide} 封面幻灯图
+{$obj.manga_pic_screenshot} 内容截图
+{$obj.manga_blurb} 简介
+{$obj.manga_remarks} 备注(例如:更新至xx话)
+{$obj.manga_jumpurl} 跳转URL
+{$obj.manga_tpl} 独立模板
+{$obj.manga_level} 推荐级别
+{$obj.manga_lock} 锁定状态(0=未锁,1=已锁)
+{$obj.manga_points} 点播所需积分
+{$obj.manga_points_detail} 每章所需积分
+{$obj.manga_up} 顶数
+{$obj.manga_down} 踩数
+{$obj.manga_hits} 总点击数
+{$obj.manga_hits_day} 日点击数
+{$obj.manga_hits_week} 周点击数
+{$obj.manga_hits_month} 月点击数
+{$obj.manga_time} 更新时间
+{$obj.manga_time_add} 添加时间
+{$obj.manga_time_hits} 点击时间
+{$obj.manga_time_make} 生成时间
+{$obj.manga_score} 平均评分
+{$obj.manga_score_all} 总评分
+{$obj.manga_score_num} 评分次数
+{$obj.manga_rel_manga} 关联漫画
+{$obj.manga_rel_vod} 关联视频
+{$obj.manga_pwd} 访问密码
+{$obj.manga_pwd_url} 密码跳转URL
+{$obj.manga_content} 详细介绍
+{$obj.manga_serial} 连载状态(文字)
+{$obj.manga_total} 总章节数
+{$obj.manga_chapter_from} 章节来源
+{$obj.manga_chapter_url} 章节URL列表
+{$obj.manga_last_update_time} 最后更新时间戳
+{$obj.manga_age_rating} 年龄分级(0=全年龄,1=12+,2=18+)
+{$obj.manga_orientation} 阅读方向(1=左到右,2=右到左,3=垂直)
+{$obj.manga_is_vip} 是否VIP(0=否,1=是)
+{$obj.manga_copyright_info} 版权信息
+
+{:mac_url_manga_detail($obj)}  漫画详情页链接
+{:mac_url_manga_play($obj,['sid'=>1,'nid'=>1])}   漫画阅读页链接
+{:mac_url_manga_play($obj,'first')}   漫画阅读页第一条链接
+{:mac_url_manga_down($obj,['sid'=>1,'nid'=>1])}   漫画下载页链接
+{:mac_url_manga_down($obj,'first')}   漫画下载页第一条链接
+
 =======视频列表标签=======
 order排列顺序desc倒序,asc正序
 by排序依据 id,time,time_add,score,hits,hits_day,hits_week,hits_month,up,down,level,rnd

+ 1 - 22
说明文档/站外入库接口说明.txt

@@ -22,25 +22,4 @@
 演员/api.php/receive/actor;
 角色/api.php/receive/role;
 网址/api.php/receive/website;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+漫画/api.php/receive/manga;