elazar / scribing
一个简单的静态博客生成器
Requires
- cocur/slugify: ^2.5
- elazar/auryn-configuration: ^1.0
- league/commonmark: ^0.15.3
- league/plates: ^3.3
- rdlowrey/auryn: ^1.4
- symfony/console: ^3.2
- zendframework/zend-feed: ^2.8
README
Scribing 是一个简单的静态博客生成器,或 静态站点生成器,使用 PHP 编写,旨在生成博客。
安装
使用 Composer。
composer require elazar/scribing
示例
如果您想查看使用 Scribing 的网站示例,请查看 此存储库。
内容
Scribing 的内容使用 Common Markdown 编写。
Scribing 支持两种文档类型:文章和页面。
文章
文章包括一个顶级标题,包含一个标题,后跟一个用强调格式化的日期。
# Post Title *September 28, 2017* Content goes here
Scribing 为每篇文章构建一个单独的文件,并在存档页面上包含对其的链接。其路径来自 Markdown 内容文件中包含的日期和标题。
页面
页面包括一个顶级标题,但与文章不同,它们不是日期特定的。通常,它们的内容很少更改。
# Page Title
Content goes here
Scribing 在基于 Markdown 内容文件名称的路径上为每个页面构建一个文件。
设计
Scribing 使用 Plates 模板引擎。
当运行时,Scribing 需要指定一个模板路径。此路径必须引用包含两个 Plates 模板文件的目录:布局模板和存档页面模板。
布局模板
layout.php
用作文章和页面的布局模板。
从 Markdown 内容生成的 HTML 传递到 $content
变量。
顶级标题传递到 $title
变量。它可以在文档的 <title>
标签中使用。
存档模板
archive.php
用于生成存档页面的内容。与其它页面的内容不同,存档页面的内容是从文章内容文件中包含的数据生成的,而不是在 Markdown 中手动创建。
一个以年份为键的文章关联数组传递到 $posts
,其中每个年份引用的是该年份的文章枚举数组。每篇文章由一个包含 'date'
、'url'
和 'title'
键的关联数组表示。
公共数据
对于需要在模板之间共享的任何公共数据,例如导航,创建一个返回数据数组的 PHP 文件。
return [ 'nav' => [ '/' => 'Home', '/archive' => 'Archive', // ... ], ];
生成站点
要基于您创建的文章和页面内容文件以及 Plates 模板文件生成博客的静态文件,您使用 scribing
控制台命令。
文章和页面
scribing
支持多个子命令,其中两个是:build:posts
和 build:pages
。两者使用相同的参数。
build:posts [--templateData=path/to/data.php] <sourcePath> <destinationPath> <templatePath>
--templateData
是可选的,用于指定公共数据文件的路径,如果需要的话。
<sourcePath>
是包含文章或页面源文件的目录。
<destinationPath>
是 scribing
将生成的文件存储的目录。
<templatePath>
是包含模板文件的目录。
要构建页面而不是文章,只需在上面的示例中将 build:pages
替换为 build:posts
。
订阅
要从帖子中构建一个源,scribing
支持一个 build:feed
子命令。
build:feed --feedTitle="Feed Title" --feedLink="https://example.com/feed.xml" <sourcePath> <destinationPath>
--feedTitle
是 Atom 格式所需的源标题
--feedLink
是 Atom 格式所需的源绝对 URL
<sourcePath>
是包含要包含在源中的帖子源文件的目录
<destinationPath>
是 scribing
将存储源文件的目录
使用 GitHub Pages
如果您使用 Scribing 生成要在 GitHub Pages 上托管的网站,请设置一个存储您的内容、模板、样式表、图片等内容的仓库,该仓库与 GitHub 用于显示网站的仓库分开。
以下是一个推荐的目录结构
.
├── content
│ ├── pages
│ └── posts
├── images
├── scripts
├── styles
└── templates
上述大多数目录的目的应该是显而易见的。
scripts
目录旨在存放用于调整或部署 Scribing 生成文件的构建和实用脚本。
例如,Scribing 不处理样式表或内容许可文件,因此必须手动将这些文件复制到构建目录。
如果您想 创建一个自定义 404 页面,您可以像普通页面一样编写内容,然后将生成的文件移动到构建脚本中的适当位置,如下所示
mv build/404/index.html build/404.html ; rm -fR build/404
如果您想定位最新帖子并将其用作网站的着陆页,可以这样做
LATEST=`find build/ -type f | grep -E '[0-9]+' | grep -v '404' | sort -nr | head -n 1` cp "$LATEST" build/index.html
以下是一些相关的资源,供您进一步阅读
许可证
Scribing 的源代码根据 MIT 许可证 许可。