Skip to content
页面梗概

助力生态可持续发展

赞助 Fresns 发展

成为赞助者

主题开发

主题模板是 Laravel Blade 模板文件,必须依赖网站引擎运行,为网站引擎提供 UE&UI 界面;开发主题模板需要先确认为哪个引擎开发的,需要遵循该引擎的模板标准,参见该引擎的开发文档。

文件目录结构

php
ThemeDemo/          // 主题模板文件夹(以 uniKey 命名)
├── assets/             // 主题特有的资源文件
│   ├── fresns.png          // 主题封面图(正方形),必须存在且位置固定
│   ├── js/
│   │   └── app.js
│   └── css/
│       └── style.css
├── portal/             // 门户视图文件夹
├── users/              // 用户视图文件夹
├── groups/             // 小组视图文件夹
├── hashtags/           // 话题视图文件夹
├── posts/              // 帖子视图文件夹
├── comments/           // 评论视图文件夹
├── profile/            // 用户主页视图文件夹
├── search/             // 搜索视图文件夹
├── account/            // 账号视图文件夹
├── follows/            // 关注视图文件夹
├── messages/           // 消息视图文件夹
├── editor/             // 编辑器视图文件夹
├── functions.blade.php // 主题设置页
├── private.blade.php   // 私有模式提示页
├── error.blade.php     // 错误提示页
└── theme.json          // 主题配置文件,负责定义主题的基础属性

主题文件和目录结构由「引擎」定义,不同的引擎有不一样的技术方案,所以文件和目录结构会有差异,详情请阅读「引擎」提供的文档。

Fresns 官方引擎的主题规范详见路径结构

文件分发介绍

主题安装发布时,将静态资源分发到 public 目录。

主题文件夹分发到站点资源目录
/extensions/themes/{unikey}/assets//public/assets/themes/{unikey}/
其余文件不分发

theme.json 配置文件

  • 由于主题模板也是入库管理的模式,所以「安装」使用了插件的配置文件来处理主题模板的信息入库。
json
{
    "unikey": "ThemeDemo",
    "name": "演示主题",
    "description": "这是演示主题",
    "author": "唐杰",
    "authorLink": "https://tangjie.me",
    "version": "1.0.0",
    "functions": true, // 是否有设置功能
    "functionKeys": [
        // 设置功能的配置键名,与 functions.blade.php 配合使用。
        {
            "itemKey": "theme_menu_name",
            "itemType": "string",
            "itemTag": "themes",
            "isMultilingual": true,
        },
        {
            "itemKey": "themeSet",
            "itemType": "string",
            "itemTag": "themes",
            "isMultilingual": false,
        },
        {
            "itemKey": "themeSelect",
            "itemType": "string",
            "itemTag": "themes",
            "isMultilingual": false,
            "options": [
                {
                    "label": "option1",
                    "value": "1"
                },
                {
                    "label": "option2",
                    "value": "2"
                },
                {
                    "label": "option3",
                    "value": "3"
                }
            ]
        }
    ]
}

functions.blade.php 设置功能

主题模板设置文件,负责定义主题模板自己的配置项,共有四种配置类型。

  • 1、常规表单组件:组件为 input、textarea、select
  • 2、上传文件组件:组件为 input type="file"
  • 3、多语言组件:组件为 input 或 textarea
  • 4、关联插件组件:组件为 select 或 select multiple