home-code

示例❤源码



目标:增加一个完整的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-模版调用
  - &#123;lang(core.view_times,$click)} 
  - &#123;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-