Appearance
快速入门
通过主题机制,可以定制 EduSoho 网校的页面排版布局、外观风格以符合网校特定气质。开发主题,需要具备一定的 HTML、CSS、JavaScript 知识。在开发主题之前,需先安装好 EduSoho,推荐将 EduSoho 安装在/var/www/edusoho
目录下,关于如何安装参见本文档的第一部门“安装配置”章节内容。下面通过制作一个简单的首页,来讲解主题开发的主要过程。
创建主题
EduSoho 自带主题的脚手架工具,可以通过命令创建一个基础的主题目录结构。
bash
cd /var/www/edusoho
app/console theme:create example # example 为主题编码(Code)
将主题注册到系统中去:
bash
app/console theme:register example
注册之后,可以在 EduSoho 【后台->系统管理->站点设置->主题】中看到刚注册的主题。
打开 EduSoho 首页,可以看到如下界面:
TODO: 这张图片要换。
目录结构
创建的主题位于web/themes/example
目录下,目录结构如下。
web/themes/example/
block/ <=== 编辑区模板目录
carousel.html.twig <=== 首页轮播图模板
static-dist/ <=== 前端 CSS/Javascript 等编译打包后的文件目录
static-src/ <=== 前端源文件目录
js/
index/
index.js <=== 首页 JavaScript 文件
index.js <=== 全局载入的的 JavaScript 文件
less/ <=== 样式目录
index.less <=== 样式文件
img/ <=== 图片目录
font/ <=== 字体目录
views/ <=== 页面模板目录
default/
index.html.twig <=== 首页模板
CHANGELOG <=== 主题更新日志
block.json <=== 编辑区配置文件
theme.jpg <=== 主题宣传图
theme.json <=== 主题元信息
block
目录下存放编辑区的模板文件,block.json
为编辑区的配置文件,参见文档编辑区。static-src
的文件会打包编译到static-dist
。编译打包的过程会将 Less 文件编译成 CSS 文件;压缩 CSS、JavaScript 文件,减小文件体积;转换 ES6 语法的 JavaScript 文件,以使不支持ES6语法的浏览器也能运行。参见前端的编译打包。theme.jpg
文件的大小为500*320px,展示在后台主题列表及云应用中心。theme.json
为主题的元信息描述,如下:json{ "code": "demo", "name": "例子", "author": "EduSoho官方", "version": "1.0.0", "support_version": "8.1.0+", "date": "2017-08-09", "thumb": "theme.png", "protocol": 3 }
code
: 主题编码,需跟主题的目录名一致。name
: 主题名称author
: 作者version
: 版本号support_version
: 该主题支持的 EduSoho 版本,+
表示该版本及其以上date
: 最后更新日期thumb
: 主题的缩略图地址protocol
: 主题协议。3
表示基于 EduSoho 8.0 的主题协议,2 表示基于 EduSoho 7.0 的版本协议。
定制首页
通过脚手架会创建首页的模板文件views/default/index.html.twig
,你可以在此基础上修改,制作自己的首页。请在编辑器中打开此文件,对照下述说明查看源码:
- 第1行:使用了
extends
继承了基础模板default/base-index.html.twig
。 参见 extends 使用文档。 - 第2行:通过
script
函数,引入了主题的首页需要用到的 JavaScript。 参见[函数、过滤器]。 - 第4行~第53行:向页面主内容区填充内容。 参见 block 使用文档。
- 第5行:显示编辑区。参见编辑区。
- 第6行~第20行:显示免费课程。
- 第9行:通过
FreeCourseSets
的数据标签,获取6个最新的免费课程。参见数据标签 - 第22行~第52行:显示最新老师。
接下去做什么
主题开发,需要具备一定的 HTML、CSS、JavaScript、jQuery、Bootstrap、Less 等前端知识,熟悉 Twig 模板引擎,如果您在这些方面比较生疏,可以学习[开发参考资料]中的相应教程。
您还需要仔细阅读主题开发这一章节的其他内容,才能全面的了解主题开发。