linaphp/lina

静态博客生成器

v0.6.1 2024-05-12 18:11 UTC

README

lina's logo

Lina PHP - 轻量级且速度极快的静态博客生成器

Lina 是一个具有偏见的平面文件 CMS,适用于希望拥有简单快速博客的用户。Lina 使用 Blade 模板引擎,因此您可以使用所有 Blade 功能。

特性

  • 速度极快:Lina 是一个轻量级且超级快速的静态博客生成器。
  • 用 PHP 编写:如果您讨厌 JavaScript,Lina 就是您的选择。
  • Blade 模板引擎:您可以使用所有 Blade 功能。
  • 极简主义:Lina 是一个静态博客生成器。它不是一个完整的 CMS。
  • 部署到任何地方!您知道的,只是 html 文件 🤣

要求

  • PHP 8.3

入门

有一些方法可以安装 Lina

将 Lina 作为依赖项,使用此选项,您可以轻松保持 lina 更新。

mkdir my-blog && cd my-blog && composer init --name=linaphp/blog --no-interaction --require=bangnokia/lina:^0.5 && composer install
./vendor/bin/lina new . # scaffolding a new blog skeleton in the current directory
./vendor/bin/lina serve # start a development server and happy writing

或作为全局 composer 包安装 Lina

composer global require linaphp/lina
lina new my-blog
lina serve

或者您可以使用 phar 文件

curl -LO https://github.com/linaphp/lina/releases/latest/download/lina.phar && chmod +x lina.phar

文件夹结构

如果您想从其他博客平台迁移,您可以查看 Lina 的基本结构

content/
    posts/
        2020-11-01-hello.md
    index.md
resources/
    views/
        index.blade.php
        post.blade.php
public/ 
    images/
    style.css
  • content 目录是您存储 markdown 内容文件的地方。
  • resources/views 目录是您存储 blade 模板的地方。
  • public 目录是您存储资产如图像、css...的地方。此文件夹也是所有生成的文件存储的地方。因此,如果您想将自定义文件存储在 git 中,请务必将其添加到 .gitignore

我们强烈建议您使用日期作为内容文件的名称前缀,这样就可以轻松排序和查找内容。Lina 会自动从 slug 中删除日期,因此您不必担心 URL。

辅助函数

有一些函数可以用来以编程方式访问您的内容。

获取目录中的所有内容

获取目录中的所有内容。内容将按文件名中的日期排序。

foreach (lina()->index('post') as $post) {
    echo $post->title;
}

获取单个内容

$post = lina()->get('posts/2020-11-01-hello.md');

部署

Lina 可以部署到任何静态托管提供商。以下是一些示例:Github pages、Netlify、Vercel、Cloudflare pages...

部署在 Github pages 上

因此,请修改 .github/workflows/deploy.yml 文件以匹配您的需求。

部署在 Cloudflare pages 上

我们还提供了 Cloudflare pages 的配置文件。您可以在 cloudflare-page.sh 中找到它。您可以修改它以匹配您的需求。此外,您还需要更改 构建配置 如此。 Cloudflare deploy

用 Lina 构建

所以,你知道,至少那是我。

待办事项

  • 添加 lina serve 命令以供开发使用
  • 添加代码高亮支持
  • 支持实时重新加载
  • Cloudflare pages 支持