基于 Pjango 的开源博客。
Clone or download
enums Merge pull request #31 from enums/5.x
【5.1.1】新增ubuntu16.04环境安装脚本
Latest commit caf6fb0 Dec 10, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets
Script 【5.1.1】新增ubuntu16.04环境安装脚本 Dec 10, 2018
Source/Calatrava 【5.1.0】修正路径 Dec 10, 2018
Workspace 【5.1.0】新增从配置文件读取配置 Dec 10, 2018
.gitignore 【5.0.2】更新 gitignore Dec 9, 2018
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md Dec 21, 2017
CONTRIBUTING.md Add CONTRIBUTING.md Dec 21, 2017
ISSUE_TEMPLATE.md Update README.md Dec 21, 2017
LICENSE Add LICENSE Jul 1, 2017
Package.swift 【5.0.1】修复 Linux 下处理依赖时可能出现无法继续的问题 Dec 9, 2018
README.md Update README.md Dec 21, 2017

README.md

基于 Pjango 的主题博客。使用 Swift3.x 开发,运行在 macOSLinux 上。使用 Pjango,可以快速搭建你的网站。只需集成你需要的组件,而无需关心服务器和数据库具体的实现细节。

Calatrava 则是对其的高度集成,它是已经完成的博客系统。使用 Calatrava,你可以迅速在你的云服务器上运行起你的博客,直接开始写作。

组分

项目包含:

  • 前端样式和网页模板。
  • 基于 Pjango 的博客服务器程序。
  • 基于 Pjango 的可扩展插件集成。

安装

  • 克隆此仓库。
  • 修改 AppDelegate.swift 中的 PJANGO_WORKSPACE 路径。
  • 若遇到无法写入日志的错误,请手动新建日志的目录,路径同样位于 AppDelegate.swift 中。
  • 按照下文中 准备工作 一节中修改 hosts 添加本地解析。
  • macOS:使用下面的命令生成 Xcode 工程进行编译:
$ swift package generate-xcodeproj
  • Linux: 使用 Swift Package Manager 编译:
$ swift build
  • macOS 中请使用 root 用户执行,否则无法使用 80 端口。
  • 打开浏览器,输入 calatravatest.com 进入博客。

效果预览

参考: 我的博客

如果你喜欢这个效果,可以以 Star 的方式支持我。

使用引导

基于 Pjango 实现,Model 和 View 分离,具体请参考 Pjango 的文档。

默认的设计下,Model 都有一分钟的内存缓存,可以修改各 Model 的 cacheTime 参数。

更多设置可以直接看源码后修改对应的属性。

1. WorkSpace 结构

默认的 WorkSpace 包含以下目录:

  • static:静态资源目录,发布后可通过 url 直接访问到静态资源。
  • templates:网页模板目录,包含未渲染的网页模板以及博文内容。
  • runtime:运行时目录,默认情况目录下仅产生日志文件。
  • filedb:文件数据驱动,默认情况下博客不关联任何数据库,数据以 json 文件方式存放在该目录下。

2. 准备工作

修改 hosts,添加本地解析以方便调试。

127.0.0.1       www.calatravatest.com
127.0.0.1       calatravatest.com
127.0.0.1       posts.calatravatest.com
127.0.0.1       project.calatravatest.com

Global.swiftAppDelegate.swift 有部分参数需要根据实际情况修改,如路径和域名等。

3. 修改博客参数

在默认使用文件数据驱动的情况下,在 Workspace/filedb/default/LocalConfig.json 修改对应参数即可。

4. 发布博文

以下为 macOS 平台下使用 MacDown 编写博文的步骤:

4.1 编写博文内容

使用 MacDown 编写内容并导出成 HTML。

4.2 转换成可用的 HTML

克隆 这个 仓库,编译后二进制程序可自行保存。

运行这个程序,参数为输入文件和输出文件路径,剔除导出的 HTML 中的样式部分。

4.3 推送模板和配图到对应目录

将博文 HTML 推送至 Workspace/templates/posts 目录下。

将配图等静态资源推送至 Workspace/static 目录下。

编写时请注意静态资源的路径。本地编写时推荐将 .md 文稿临时放在 static目录下,以配合写作时的静态资源路径和发布以后的 url 访问地址一直。

4.4 在数据库中插入博文记录

在默认使用文件数据驱动的情况下,在 Workspace/filedb/default/posts.json 文件中加入相应记录即可。

博文模型:

var pid = PCDataBaseField.init(name: "PID", type: .int)
var title = PCDataBaseField.init(name: "TITLE", type: .string, length: 64)
var date = PCDataBaseField.init(name: "DATE", type: .string, length: 16)
var read = PCDataBaseField.init(name: "READ", type: .int)
var love = PCDataBaseField.init(name: "LOVE", type: .int)
var tag = PCDataBaseField.init(name: "TAG", type: .string, length: 64)

因此,按照模型的结构,json 结构:

{
  "objs" : [
    [
      "id,记录的额外字段,任意整数,不可重复",
      "PID,博文id,整数,和博文 HTML 文件名一直。如PID = 17001,对应 HTML 文件为 17001.html",
      "TITLE,博文标题",
      "DATE,博文发布日期,YYYY-MM-dd HH:mm:ss",
      "READ,阅读数量",
      "LOVE,点赞数量",
      "TAG,标签列表,以|分隔",
    ]
  ]
}

5. 添加标签、项目和建设历史等

根据上面提到的规则,根据各自的模型代码直接修改对应的 json 文件记录即可。

如果改用Pjango-MySQL组件,直接改数据库记录即可。

6. 修改网页

部分页面内容是直接渲染静态网页的,如 about.html 中的关于内容。因此这部分内容可以直接修改 HTML。

联系我

发邮件给我: enum@enumsblog.com

协议

Calatrava 基于 AGPL-3.0 协议进行分发和使用,更多信息参见协议文件。