symplify/statie

此包已被弃用,不再维护。作者建议使用 symplify/symfony-static-dumper 包。

静态网站生成器

v7.2.3 2020-02-27 16:45 UTC

This package is auto-updated.

Last update: 2020-03-12 09:56:06 UTC


README

logo.svg

[自2020-03以来弃用] Statie - PHP中的现代和简单静态网站生成器

使用 Symfony Static Dumper 代替

Downloads

Statie 可以处理 HTML、Markdown 和 Twig 文件,并生成静态 HTML 页面。

安装

composer require symplify/statie

如何生成和查看网站?

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

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

最后一步是安装 node 依赖项

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

您使用 Jekyll 或 Sculpin 吗?

配置

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>

您是否写文章?

创建一个新的空 .md 文件,包含日期、URL 化标题和 ID

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 过滤器

所有内容均来自 这个基本集 以及更多

{% 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 }}

文档

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

贡献

问题追踪器 上打开一个问题或向主仓库发送 拉取请求