drdplusinfo/statie

静态网站生成器

v6.0.10 2024-08-27 18:22 UTC

This package is auto-updated.

Last update: 2024-08-28 16:35:10 UTC


README

Statie - PHP中的现代简单静态网站生成器

Build Status Downloads

Statie可以将HTML、Markdown和Twig或Latte文件转换为静态HTML页面。

安装

composer require symplify/statie

如何生成和查看网站?

  1. 为Statie准备内容
vendor/bin/statie init

你喜欢 Latte 吗?

vendor/bin/statie init --templating latte

这将生成配置、模板、布局和gulp代码,你可以享受实时预览。

最后一步是安装node依赖项

npm install
  1. /source (参数) 生成静态网站到 /output (默认值) 的HTML
vendor/bin/statie generate source
  1. 在本地运行网站
gulp
  1. 并在浏览器中查看localhost:8000

你使用Jekyll或Sculpin吗?

我们将帮助你迁移

vendor/bin/statie migrate-jekyll
vendor/bin/statie migrate-sculpin

它们将为你完成95%的迁移工作。如果你在迁移过程中仍有困难,请查看

配置

statie.yml 配置

这基本上是您从Symfony应用程序中熟悉的Symfony Kernel config.yml。您可以

# statie.yml
imports:
    - { resource: 'data/favorite_links.yml' }

parameters:
    site_url: 'http://github.com'
    socials:
        facebook: 'http://facebook.com/github'

services:
    App\SomeService: ~

参数在所有模板中可用

{# source/_layouts/default.twig #}

<p>Welcome to: {{ site_url }}</p>

<p>Checkout my FB page: {{ socials.facebook }}</p>

你写文章吗?

创建一个带有日期、Web化标题和ID的新空 .md 文件

vendor/bin/statie create-post "My new post"

Statie提供默认模板

id: __ID__
title: "__TITLE__"
---

你想有自己的模板吗?配置其路径

# statie.yaml
parameters:
    post_template_path: 'templates/my_own_post.twig'

就是这样!

如何生成API?

Statie web Friendsofphp.org 提供有关PHP会议和小组的信息。它们已经存储在参数中。你想将它们发布为JSON API吗?

parameters:
    api_parameters:
        - 'groups'
        - 'meetups'

这将生成2个页面

/api/groups.json
/api/meetups.json

带有JSON参数,任何人现在都可以使用。

如何重定向旧页面?

# statie.yml
parameters:
    redirects:
        old_page: 'new_page'
        old_local_page: 'https://external-link.com'

你是演讲者吗?使用你的JoindIn演讲

# statie.yml
parameters:
    joind_in_username: 'tomasvotruba'
vendor/bin/statie dump-joind-in

这将生成包含你的演讲的 source/_data/generated/joind_in_talks.yaml 文件

parameters:
    joind_in_talks:
        # ...

然后你可以像使用Statie模板中的任何其他参数一样使用它们

{% for joind_in_talk in joind_in_talks %}
    ...
{% endfor %}

有用的Twig和Latte过滤器

所有来自 Latte基本集 以及更多

Twig

{% set users = sort_by_field(users, 'name') %}
{% set users = sort_by_field(users, 'name', 'desc') %}

<!-- picks all posts defined in "related_items: [1]" in post -->
{% set relatedPosts = related_items(post)}

{{ content|reading_time }} mins
{{ post.getRawContent|reading_time }} mins

{{ perexDeprecated|markdown }}
{% set daysToFuture = diff_from_today_in_days(meetup.startDateTime) %}

{{ post|link }}

Latte

{var $users = ($users|sort_by_field:'name')}
{var $users = ($users|sort_by_field:'name', 'desc')}

<!-- picks all posts defined in "related_items: [1]" in post -->
{var $relatedPosts = (post|related_items)}

{$content|reading_time} mins
{$post->getRawContent()|reading_time} mins

{$perexDeprecated|markdown}
{var $daysToFuture = diff_from_today_in_days($meetup->startDateTime())}

{$post|link}

文档

感谢 @crazko,您可以在 statie.org 上享受整洁的文档,并查看使用Statie的项目。

贡献

问题 或向主仓库发送 pull-request