后续:
开发环境、
项目结构、
框架说明、
皮肤开发
环境准备
JDK:8 或更高的版本
Maven:2 或更高的版本
MySQL:可选的,默认使用内嵌的 H2 数据库
IDE
因为是 Maven 构建的项目项目,所以只要支持 Maven 的 IDE 都可以,推荐:
IntelliJ IDEA
NetBeans
使用 IDE 打开项目即可,第一次构建时会自动下载依赖。pom 里默认激活的 profile 使用了阿里云的 Maven 仓库,理论上依赖下载会比较快。
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
运行
processor:控制器层,处理 HTTP 请求
service:服务层,实现业务逻辑,事务封装
repository:持久化层,实现数据库存取
model:数据模型,定义 JSON 键常量方便公用
其他几个包:
api:实现 B3 构思;实现 MetaWeblog API
event:一些事件处理器,可对发布文章 / 评论进行扩展
filter:初始化检查、权限过滤等
plugin:内置插件的实现
util:Markdown、Emoi、皮肤等处理工具
数据库
初始化后会自动建表。如果用 MySQL,则启动前先手动建库,JDBC 相关参数请配置 local.properties。
开发框架Solo 使用了 Latke 作为开发框架,这是一个类似 Spring 但以 JSON 为主的框架。
Latke 快速上手指南网址:https://hacpai.com/article/1466870492857
Latke 配置剖析网址:https://hacpai.com/article/1474087427032
原理相关一:为什么又要造一个叫 Latke 的轮子?
网址:https://hacpai.com/article/1403847528022
二:Latke 源码解析(一)Servlet 部分
网址:https://hacpai.com/article/1493267456529
三:Latke 源码解析(二)IOC 部分
网址:https://hacpai.com/article/1493620909167
模版引擎使用 FreeMarker 作为模版引擎
网址:https://hacpai.com/tag/FreeMarker
皮肤开发好了,接下来就是我们的皮肤开发了!
开发步骤
solo/src/main/webapp/skins/skin-name
|- css // 样式目录
| |- fonts // 字体文件
| |- selection.json // 如使用 icomoon.io,请上传原文件
| |- base.css // 样式,尽量避免使用行内样式及页内样式
|- images // 图片目录
|- js // JavaScript 目录
| |- common.js // 脚本,尽量避免在 ftl 中写脚本
|- lang // 语言配置文件,当 solo/src/main/resources/lang_zh_CN.properties 中无配置时可添加至此
| |- lang_en_US.properties // 英文
| |- lang_zh_CN.properties // 中文
|- archive-articles.ftl // 某年某月所写文章的列表页面
|- archives.ftl // 存档列表页面
|- article.ftl // 文章页面
|- article-list.ftl // 文章列表,可复用于有文章列表的页面
|- category-articles.ftl // 某分类下的文章列表页面
|- common-comment.ftl // 评论模版
|- dynamic.ftl // 动态页面
|- footer.ftl // 页尾
|- header.ftl // 页头
|- index.ftl // 首页页面
|- links.ftl // 链接列表页面
|- author-articles.ftl // 某用户所写的文章列表页面
|- macro-comments.ftl // 评论列表及回复的宏
|- macro-head.ftl // head 标签中的宏
|- page.ftl // 导航页面
|- preview.png // 皮肤首页截图,大小为 280px * 160px
|- side.ftl // 侧边栏
|- skin.properties // 皮肤信息
|- tag-articles.ftl // 某标签的文章列表页面
|- tags.ftl // 标签列表页
开发说明
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
在 solo/src/main/webapp/skins目录下按照皮肤框架创建对于的文件夹及文件。
可参照 91PHP目录中的文件进行创建及相应的修改。
建议从 index.ftl 开始入手。
JS、CSS 文件压缩可自行压缩或将皮肤目录拷贝到 solo-skin 下运行 cd toolers && yarn && npm run build或 cd toolers && npm install && npm run build。
JS、CSS 引用示例如下:
注意事项
macro-comments.ftl中标签 id 不可进行更改。
文章内容须加上 class=“article-body”,否则不能进行代码高亮。
贡献第三方皮肤可 Fork b3log-solo-third-skins,开发完成后 merge 到 b3log 下。
footer.ftl中版权声明格式如下:
Powered by <a href="http://b3log.org">B3log 开源</a> • <a href="https://hacpai.com/tag/solo">Solo</a>
Theme by <a href="your site">your-name</a>.
模板变量如果模板变量的类型是 JSONObject,其字段属性参考 org.b3log.solo.model包下的类
每个页面都包含一些公共模板变量,这些模板变量单独列出(不在 *.ftl表中给出)
每个页面的模板变量如以 Label 结尾,则为多语言配置文件,参看 lang_zh_CN.properties
公共模板变量
变量 类型 说明 footerContent String 页脚自定义内容 adminUser JSONObject 管理员 userName String 当前登录用户名 isIndex Bool 判断是否是首页 faviconAPI String 获取 favicon API 地址 isLoggedIn Bool 用户登录判断 gravatar String 当前登录人的 gravatar 地址 runtimeMode String 运行模式,例如 DEVELOPMENT runtimeEnv String 运行环境,例如 GAE pageType String 当前页面类型,例如 Index,Article,DateArticles servePath String 应用路径,可在 latke.properties 中配置 staticServePath String 静态资源路径,可在 latke.properties 中配置 staticResourceVersion String js, css 版本号,防止缓存 topBarReplacement String 公用 top-bar.ftl 内容 path String Action 路径 archiveDates List 存档日期列表 articles List 存档文章列表 blogTitle String 博客标题 blogHost String 博客地址 blogSubtitle String 博客子标题 htmlHead String 用户自定义的 HTML Head links List 链接列表 localeString String 区域设定字符串 metaKeywords String 用户自定义的关键字 metaDescription String 用户自定义的描述 mostCommentArticles List 评论最多的文章列表 mostUsedTags List 引用最多的标签列表 mostViewCountArticles List 访问最多的文章列表 noticeBoard String 用户自定义的公告栏 oId String 存档日期对象 Id pageNavigations List 自定义页面列表 paginationFirstPageNum Integer 文章列表分页第一页页码 paginationLastPageNum Integer 文章列表分页最末页页码 paginationPageNums List 文章列表分页页号 paginationPageCount Integer 文章列表页数 recentComments List 最新评论列表 skinDirName String 当前使用的皮肤目录名 statistic JSONObject 统计信息对象 onlineVisitorCnt Integer 在线访客统计数 users List 用户列表 version String 当前使用的 Solo 版本 year String 当前年份 loginURL String 登录 URL logoutURL String 登出 URL archive-date-articles.ftl
变量 类型 说明 archiveDate JSONObject 存档日期对象 article-detial.ftl
变量 类型 说明 article JSONObject 文章对象 articleComments List 文章评论列表 externalRelevantArticlesDisplayCount Integer 站外相关文章显示数 nextArticlePermalink String 下一篇文章链接 nextArticleTitle String 下一篇文章标题 previousArticlePermalink String 上一篇文章链接 previousArticleTitle String 上一篇文章标题 page.ftl
变量 类型 说明 page JSONObject 自定义页面对象 pageComments List 自定义页面评论列表 tag-articles.ftl
变量 类型 说明 tag JSONObject 标签对象 tags.ftl
变量 类型 说明 tags List 标签列表
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
骚年,坚持想法,坚持实践吧!
马上就写完了,明天会写完最后这一部分的!感谢观看,O(∩_∩)O谢谢!
,