目标:增加一个完整的bbs
### 后端模型
* 需求分析
- bbs需要两个基本的模型: talk(话题), post(帖子);
- bbs分类,用栏目来表现;设置2级分类;
- 会员:使用贴心猫自带会员,(或不要会员);
* 模型架构
- 入口:后台 >> 架设 >> 超管架构 >> 模块架设
- 文档/资讯 : 复制`news` 为 `talk(话题)`,也可用 `增加条目`,设置 `栏目级数` 为`2`;
- 互动/评论 : 复制`nrem` 为 `post(帖子)`,注意设置关联模型为`talk(话题)`;
- 根据需要,设置栏目 : 架设 > 模块架设 > 文档/资讯 > [栏目/字段] (bbs分类);
- 根据需要,设置字段 : 架设 > 模块架设 > [文档/资讯|互动/评论] > [字段];
### 管理扩展
(可先忽略此操作让系统默认处理;根据需要扩展)
* 管理url与脚本对应示例
- 一般管理操作:入口`adm.php?admin-types`,对应脚本:`\imcat\flow\admin\types.php`
- DOP(DataOP)数据操作:入口`adm.php?dops-a&mod=news`,对应脚本:`\imcat\flow\dops\a.php`
- 所有后台设置的:[文档/资讯 | 互动/评论 | 用户/会员 | 广告/连接],全部对应如上`dops-a`入口,
以新闻为例,说明一下对应与扩展关系:
- a. 任何 [文档/资讯|互动/评论]等管理操作都分为:列表显示、列表更新、(增改)表单显示,表单保存;
- b. 在/imcat/dops/目录中,上述功能分别对应:`*_list_show.php、 *_list_dow.php、 *_form_show.php、 *_form_do.php`脚本区块
- c. 新闻属于文档类型,新闻表单增加(修改),所以对应`docs_form_show.php`脚本区块
- d. 如果不按如上方式处理,可扩展一个文件“/imcat/emod/news.php”自定义处理,用户自定义的扩展,建议放在“/root/extra/emod/news.php”,
两个`emod`目录作用一样,后者优先级高。
- e. 如果只扩展 新闻表单保存 部分,可扩展一个文件“/imcat/eact/news_form_do.php”自定义处理,建议放在“/root/extra/eact/news_form_do.php”
* 管理流程脚本目录
- 位置:/imcat/flow/*
- admin:后台基本脚本
- apis:主要是一些对外接口的脚本
- awex:微信公众号的脚本
- binc:一些区块
- dops: Data-OP:数据[文档/资讯 | 互动/评论 | 用户/会员 | 广告/连接]操作
- eact:dops的扩展,按action(view,list)扩展
- emod:dops的扩展,按model(模型)扩展
* 管理扩展脚本目录
- 位置:/root/extra/*
- eact:dops的扩展,按action(view,list)扩展
- emod:dops的扩展,按model(模型)扩展
- 此目录下文件,优先级高于`管理流程脚本目录(/imcat/flow/)`
### 控制器模式
因为后端管理,涉及到权限管理;另外一些操作非常复杂,大部分管理脚本按如上方式执行;
当然,也可以按之前讲的“控制器模式”扩展。
* 参考文档
- exincCtrl.php : 直接include`.php`文件,如:adm.php?exinc-demo
- extplCtrl.php : 按一般模板解析,如:adm.php?extpl-demo
- 具体请分析以上文件(贴心猫5.4+可用,也可自己扩展)。
### 前端显示
* 路由分析
- 首页:bbs.php (可省略)
- 论坛分类:bbs.php?talk-kid1
- 论坛搜索:bbs.php?talk-so
- 话题详情:bbs.php?talk.2019-81-8998
- 用户-话题列表:bbs.php?user
- 用户-发表话题:bbs.php?user-add
- 用户-编辑话题:bbs.php?user.2019-81-8998.edit (可与.add合并)
- 用户-编辑帖子:bbs.php?user.2019-81-8998.post
* 入口设置:
- 复制:`/home.php`(或/chn.php或/vcn.php) 文件为 `/bbs.php` ,作为论坛入口文件;
- 修改内容:`_cbase.tpl.vdir = 'bbs'`,`_cbase.sys.lang = 'cn'`;
- 修改文件:`/root/cfgs/sycfg/sy_vopcfg.php` 配置,增加 `bbs`相关项配置;
* 绑定模板配置:
- 创建目录: /views/bbs/ ,放置论坛模板;
- 创建文件: /views/bbs/\_config/va_home.php(首页模板配置),代码如下;
- 创建文件: /views/bbs/\_config/vc_bbs.php(bbs模板配置),代码如下;
- 创建文件: /views/bbs/\_config/ve_user.php(用户模板配置),代码如下;
* 模板配置代码(参考):
- [va_home.php]({=PATH_PROJ}/demo.php?home-code&fp=/bbs/_config/va_home.php)
- [vc_talk.php]({=PATH_PROJ}/demo.php?home-code&fp=/bbs/_config/vc_talk.php)
- [ve_user.php]({=PATH_PROJ}/demo.php?home-code&fp=/bbs/_config/ve_user.php)
- 创建模板,并调用(略);
### 语言包扩展
* 全球语言排行
- 联合国工作语言:英语, 阿拉伯语, 汉语, 法语, 俄语, 西班牙语
- 世界几大语言:英语, 汉语, 德语, 法语, 俄语, 西班牙语 (按分布与应用力)
- 世界使用人数最多语言:汉语, 西班牙语, 英语, 阿拉伯语
* 系统语言包结构
- 核心语言包结构
```
[imcat]
├─lang
│ ├─dbins 数据库架构数据 语言包
│ ├─kvphp 核心脚本 语言包
│ ├─ptinc 文本块 语言包
│ └─ucfgs 配置数组 语言包
```
- 后缀说明:-cn:中文; -en:英文; -fr:法语; -ru:俄语; -es:西班牙语; -de:德语; -jp:日语; -kr:韩语; -ar:阿拉伯语
- 为了与核心语言包区分,可把扩展语言包放到:`/root/extra/` 目录下。
* 扩展语言包
- 欲增加[-kr:韩语]语言包:
- 把如上目录的[-cn]所有文件,复制一份并改名为[-kr]后缀,然后翻译即可
- 可用机器翻译后,人工修改修正一下;
- 如果增加某种语言,且可由现有语言转换而得,可复制用转换工具转换而得,如增加繁体中文,可由简体中文用工具转化即可
- 另见:百度AI接口/系统工具-DIY转化:
* 语言包规范
- 入口文件:增加申明语言包:$\_cbase['sys']['lang'] = 'en'; // 切换语言
* js语言包
- 视图(模板)中,如果本视图需要切换多个语言,那js等文件,也需要配置多个语言;
- 只有一个语言;那直接写相关js代码
### 多语言包调用
* php-代码调用
- basLang::show('core.page_First')
- lang('admin.adm_center')
- <?php lang('tools.start_setup',0) ?>
* tpl-模版调用
- {lang(core.view_times,$click)}
- {lang(core.sys_name)}
* js-js调用
- lang('jcore.sub_key')
### 增加韩语版
处理目标:[CheerWeb(开心企业网) ](http://qiyeweb.dongguan.net.cn/index.php/home-tips)
* 入口设置:
- 复制:`vcn.php` 文件为 `/kr.php` ,作为韩语版入口文件;
- 修改内容:`_cbase.tpl.vdir = 'vkr'`,`_cbase.sys.lang = 'kr'`;
- 修改文件:`/root/cfgs/sycfg/sy_vopcfg.php` 配置,增加 `vkr` 相关项配置;
- 修改文件:`/root/cfgs/root/const.php` 配置,增加 `kr=한국어` 相关项配置;
- 复制目录: /views/comm/ 为 /views/vkr/ 韩语版模板;
* 复制语言包
- /root/extra/kvphp/lang-cn.php -=>复制 /root/extra/kvphp/lang-kr.php
- /imcat/lang/kvphp/core-cn.php -=>复制 /root/extra/kvphp/core-kr.php
- /imcat/lang/kvphp/plus-cn.php -=>复制 /root/extra/kvphp/plus-kr.php
- /imcat/lang/kvphp/flow-cn.php -=>复制 /root/extra/kvphp/flow-kr.php
- /imcat/lang/ucfgs/cfglibs-fr.php -=>复制 /root/extra/ucfgs/cfglibs-fr.php
* 翻译文字
- 翻译a. 模板目录:/views/vkr/
- 翻译b. 语言包目录:/root/extra/kvphp/ 和 /root/extra/ucfgs/
- 接口翻译见如下代码提示:(详情看相关类文件)
* 接口翻译
```
$fp1 = '/lang/ptinc/aflow-cn.php'; //
$res = devBuild::trans(DIR_IMCAT.$fp1, 'fra', 'html');
dump($res); echo "<hr>\n";
$fp1 = '/lang/ptinc/uless-cn.php'; //
$res = devBuild::trans(DIR_IMCAT.$fp1, 'fra', 'line');
dump($res); echo "<hr>\n";
$fp1 = '/lang/ucfgs/cfglibs-cn.php';
$res = devBuild::trans(DIR_IMCAT.$fp1, 'fra', '');
dump($res); echo "<hr>\n";
```
-End-