网站引擎开发

基于主程序 API 开发的网站功能,分别有集成引擎和独立引擎。

  • 集成引擎:本质上也是插件,只不过从产品角度理解,它是一个完整的解决文案,比如完整社区功能,或者开发的一个完整商城、博客、CMS 等等。只要路由不冲突,主程序可以同时开启多个引擎。
  • 独立引擎:等同于移动应用(App),独立部署和独立运行在主程序之外的网站,实现业务服务器分别管理。

本文档讲解的是集成引擎的开发介绍,由于集成引擎本质上也是一种插件,所以开发逻辑与 插件开发 一致,文档参见插件开发即可。本文档只介绍与插件有差异的部分。

业务功能开发

PluginConfig.php

class PluginConfig extends BasePluginConfig
{
    public $type = 1; //类型必须为 1
    public $uniKey = "DemoEngine"; //引擎标识名,全局唯一值,大驼峰命名
    public $name = '演示引擎';
    public $description = "这是一个官方演示插件";
    public $author = "唐杰";
    public $authorLink = "https://tangjie.me";
    public $currVersion = '1.0.0'; //语义化版本号
    public $currVersionInt = 1; //整型版本号
    public $accessPath = "/"; //定义前端访问路径
    public $settingPath = "/admin"; //定义设置页访问路径
}
1
2
3
4
5
6
7
8
9
10
11
12
13

视图文件介绍

1、前台说明

  • 前台界面的视图文件(模板文件)存储在 /resources/views/themes/ 目录下,路径指引存储在配置表中,配置键名以引擎 unikey_Pc_Mobile 为命名格式。
  • 引擎根据系统提供的指引,找到主题模板文件夹,读取 Blade 模板文件,渲染界面。
键名例如引擎 unikey 为 FresnsEngine
{unikey}_PcFresnsEngine_Pc
{unikey}_MobileFresnsEngine_Mobile

2、后台说明

  • 如果引擎有后台页面(设置页),需在 PluginConfig.php 文件的 settingPath 参数中提供。
  • 后台视图界面,模板文件放在安装包 views 文件夹中,如果后台涉及多语言,则放在安装包 lang 文件夹中。
  • 引擎安装后,相关文件会分发到执行位置(参考插件文档)。

引擎产品标准

为了方便用户更换网站引擎的时候,主题模板还能兼容使用,所以建议引擎和主题模板开发者采用以下标准。不仅方便用户,也能使你开发的引擎能兼容更多主题模板,提升引擎的用户规模。

该标准仅是建议,可以不采纳;该标准针对的是主功能(社区功能),如果你开发 CMS、博客、商城等非社区类功能,此标准可忽略。

路由标准

采用该路径标准,可以避免与其他引擎发生路径冲突,比如开发 CMS 或者商城等其他功能引擎的时候,可以避免使用以下路径。另外,也方便移动应用有标准的 URL 用于分享时使用,点击查看路径详情

路径介绍
/根目录,用户主页会使用根目录构建路由,例如 https://discuss.fresns.cn/tangjie
/members成员列表相关路由
/groups小组列表相关路由
/hashtags话题列表相关路由
/posts帖子列表相关路由
/comments评论列表相关路由
/user用户中心相关路由,例如注册、登录等
/group小组详情页路由
/hashtag话题详情页路由
/post帖子详情页路由
/comment评论详情页路由
/search搜索路由
/editor编辑器路由

模板目录标准

采用标准的模板文件目录,可以避免用户更换引擎的时候,无法兼容使用,详情参见 主题模板开发 views 文件夹介绍。

配置键名标准

凡是网站都会涉及统计和 ICP 信息等配置,所以为了方便用户切换引擎或者使用多个引擎的时候,不必重复配置,建议采用统一的配置键名。键名归属 website 键标签。

键名注释说明
web_stat_code统计代码网页统计工具代码
web_stat_position统计代码位置headbody
统计代码载入到 HTML 的哪个位置
site_china_mode中国大陆模式falsetrue
是否显示备案信息,如果网站服务器不在中国大陆,则关闭
site_miit_beianICP 备案号https://beian.miit.gov.cnopen in new window
site_miit_tsmICP 许可证号https://dxzhgl.miit.gov.cnopen in new window
site_miit_gongan公安备案号http://www.beian.gov.cnopen in new window

引擎参考建议

配置键名建议

以下三个配置键名来自 Fresns 官方网站引擎open in new window的功能,供参考。

键名默认键值注释说明
web_statustrue网站互动功能网页端互动功能关闭后,可指定访问网站时输出的内容数量
比如专注移动应用运营的项目,网站只为分享导流使用,不希望用户使用完整功能。
web_number5显示内容数量网页端互动功能关闭后,用户访问只显示多少条内容
比如设置为 5,则用户无论访问帖子列表还是查看评论,只显示 5 条。
web_proportion30内容显示比例网页端互动功能关闭后,帖子内容显示比例,单位:百分比
比如设置为 30%,则访问帖子详情页只显示帖子 30% 的内容,其余内容引荐打开 App 浏览。

菜单键名建议

以下菜单配置的键名归属 menus 键标签,来自 Fresns 官方网站引擎open in new window的功能,供参考。

栏目标题组件类型键名默认键值
默认首页input type="radio"default_homepagegroups
门户-导航名称input type="text"menu_portal_name
门户-标题input type="text"menu_portal_title
门户-关键词textareamenu_portal_keywords
门户-描述textareamenu_portal_description
门户-状态input type="radio"menu_portal_statustrue
成员-导航名称input type="text"menu_member_name
成员-标题input type="text"menu_member_title
成员-关键词textareamenu_member_keywords
成员-描述textareamenu_member_description
成员-配置textareamenu_member_config
成员-状态input type="radio"menu_member_statustrue
小组-导航名称input type="text"menu_group_name
小组-标题input type="text"menu_group_title
小组-关键词textareamenu_group_keywords
小组-描述textareamenu_group_description
小组-配置textareamenu_group_config
小组-状态input type="radio"menu_group_statustrue
话题-导航名称input type="text"menu_hashtag_name
话题-标题input type="text"menu_hashtag_title
话题-关键词textareamenu_hashtag_keywords
话题-描述textareamenu_hashtag_description
话题-配置textareamenu_hashtag_config
话题-状态input type="radio"menu_hashtag_statustrue
帖子-导航名称input type="text"menu_post_name
帖子-标题input type="text"menu_post_title
帖子-关键词textareamenu_post_keywords
帖子-描述textareamenu_post_description
帖子-配置textareamenu_post_config
帖子-状态input type="radio"menu_post_statustrue
评论-导航名称input type="text"menu_comment_name
评论-标题input type="text"menu_comment_title
评论-关键词textareamenu_comment_keywords
评论-描述textareamenu_comment_description
评论-配置textareamenu_comment_config
评论-状态input type="radio"menu_comment_statustrue
成员列表页-导航名称input type="text"menu_member_list_name
成员列表页-标题input type="text"menu_member_list_title
成员列表页-关键词textareamenu_member_list_keywords
成员列表页-描述textareamenu_member_list_description
成员列表页-配置textareamenu_member_list_config
成员列表页-状态input type="radio"menu_member_list_statustrue
小组列表页-导航名称input type="text"menu_group_list_name
小组列表页-标题input type="text"menu_group_list_title
小组列表页-关键词textareamenu_group_list_keywords
小组列表页-描述textareamenu_group_list_description
小组列表页-配置textareamenu_group_list_config
小组列表页-状态input type="radio"menu_group_list_statustrue
话题列表页-导航名称input type="text"menu_hashtag_list_name
话题列表页-标题input type="text"menu_hashtag_list_title
话题列表页-关键词textareamenu_hashtag_list_keywords
话题列表页-描述textareamenu_hashtag_list_description
话题列表页-配置textareamenu_hashtag_list_config
话题列表页-状态input type="radio"menu_hashtag_list_statustrue
帖子列表页-导航名称input type="text"menu_post_list_name
帖子列表页-标题input type="text"menu_post_list_title
帖子列表页-关键词textareamenu_post_list_keywords
帖子列表页-描述textareamenu_post_list_description
帖子列表页-配置textareamenu_post_list_config
帖子列表页-状态input type="radio"menu_post_list_statustrue
评论列表页-导航名称input type="text"menu_comment_list_name
评论列表页-标题input type="text"menu_comment_list_title
评论列表页-关键词textareamenu_comment_list_keywords
评论列表页-描述textareamenu_comment_list_description
评论列表页-配置textareamenu_comment_list_config
评论列表页-状态input type="radio"menu_comment_list_statustrue

访问逻辑建议

Fresns 官方网站引擎就是该逻辑,供参考。

Fresns 访问逻辑流程图

账号逻辑建议

Fresns 官方网站引擎就是该逻辑,供参考。

Fresns 账号逻辑流程图