statie
statie copied to clipboard
[DEPRECATED] [READ-ONLY] Use Symfony plugin instead →
[DEPRECATED since 2020-03] Statie - Modern and Simple Static Site Generator in PHP
Use Symfony Static Dumper instead
Statie takes HTML, Markdown and Twig files and generates static HTML page.
Install
composer require symplify/statie
How to Generate and See the Website?
- Prepare content for Statie
vendor/bin/statie init
This will generate config, templates, layouts and gulp code, so you can enjoy live preview.
Last step is install node dependencies:
npm install
- Generate static site from
/source(argument) to/output(default value) in HTML:
vendor/bin/statie generate source
- Run website locally
gulp
- And see web in browser localhost:8000.
Do you use Jekyll or Sculpin?
Configuration
statie.yml Config
This is basically Symfony Kernel config.yml that you know from Symfony application. You can:
# statie.yml
imports:
- { resource: 'data/favorite_links.yml' }
parameters:
site_url: 'http://github.com'
socials:
facebook: 'http://facebook.com/github'
services:
App\SomeService: ~
Parameters are available in every template:
{# source/_layouts/default.twig #}
<p>Welcome to: {{ site_url }}</p>
<p>Checkout my FB page: {{ socials.facebook }}</p>
Do You Write Posts?
Create a new empty .md file with date, webalized title and ID:
vendor/bin/statie create-post "My new post"
Statie privides default template:
id: __ID__
title: "__TITLE__"
---
Do you want your own template? Configure path to it:
# statie.yaml
parameters:
post_template_path: 'templates/my_own_post.twig'
That's it!
How to Generate API?
Statie web Friendsofphp.org provide info about PHP meetups and groups. They're already stored in parameters. Do you want to publish them as JSON API?
parameters:
api_parameters:
- 'groups'
- 'meetups'
This will generate 2 pages:
/api/groups.json
/api/meetups.json
With parameters as JSON, that anyone can use now.
How to Redirect old page?
# statie.yml
parameters:
redirects:
old_page: 'new_page'
old_local_page: 'https://external-link.com'
Are you Speaker? Use your JoindIn Talks
# statie.yml
parameters:
joind_in_username: 'tomasvotruba'
vendor/bin/statie dump-joind-in
This will generated source/_data/generated/joind_in_talks.yaml file with your talks:
parameters:
joind_in_talks:
# ...
Then you can use them like any other parameter in your Statie templates:
{% for joind_in_talk in joind_in_talks %}
...
{% endfor %}
Useful Twig Filters
All from this basic set and more:
{% 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 }}
Documentation
Thanks to @crazko you can enjoy neat documentation and see projects that use Statie at statie.org.
- How to Tweet your Posts with Travis
- How to Thank your Contributors
Contributing
Open an issue or send a pull-request to main repository.