PHPackages                             malenki/phantastic - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. malenki/phantastic

ActiveProject[Utility &amp; Helpers](/categories/utility)

malenki/phantastic
==================

A static blog generator like Jekyll in Ruby world but with tags, categories, blocs in native.

19[8 issues](https://github.com/malenkiki/phantastic/issues)PHP

Since Apr 26Pushed 12y ago1 watchersCompare

[ Source](https://github.com/malenkiki/phantastic)[ Packagist](https://packagist.org/packages/malenki/phantastic)[ RSS](/packages/malenki-phantastic/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Phantastic!
===========

[](#phantastic)

PHP static blog generator ala Jekyll with tags, categories and blocks in native.

How to install it?
------------------

[](#how-to-install-it)

Before, you must have [composer](http://getcomposer.org/) to install and use **Phantastic**.

You can install **Phantastic** following 3 possible ways:

- by downloading [archive](https://github.com/malenkiki/phantastic/archive/0.2.tar.gz) of the **latest stable release**. Untar it and then go into the newly created directory to run `composer update`
- by cloning the git repository `git clone https://github.com/malenkiki/phantastic.git` and then do the same action like seen previously after untar. Unlike previous, you get the `dev-master` branch.
- by using composer into one shot like this: `composer create-project malenki/phantastic your-project-name dev-master`, where `your-project-name` will be the directory to install **Phantastic** and then you can start to play with it.

How does it work?
-----------------

[](#how-does-it-work)

You can use command line options or write a configuration file in YAML.

Call `./phantastic --help` or without args to have some help.

How must I write my posts?
--------------------------

[](#how-must-i-write-my-posts)

Like you already do with Jekyll! You write some **markdown post text files** with **YAML header** and that's all folks!

A post must have at least two properties: `layout` and `title`. The first give the name of the template to use, the second is the post's title.

So, this is a correct minimal post:

```
    ---
    layout: my-template
    title: Some Very Important Heading
    ---

    # Blah Blah

    A short sentence.
```

Tell me more about blocks…
--------------------------

[](#tell-me-more-about-blocks)

Blocks are **pieces of text** written using markdown syntax.

This files are saved into their own directory.

Into template PHP files, you can call this blocks like you want, following some tags of the posts, or directly.

So, all text can be defined outside of templates.

Tell me more about categories…
------------------------------

[](#tell-me-more-about-categories)

Categories are autodefined by **directories' hierarchy** used into posts' directory. But, you can also **associated this directories to other names** by using **YAML configuration file**.

To link directories to their right name, do following, for example:

```
    categories
        some_dir: My Category
        some_other_dir: Another Category Name
        last_butnot_the_least_dir: This Category Is A Must Have!
```

Tell me more about tags…
------------------------

[](#tell-me-more-about-tags)

Well, tags are… tags :) You can defined **some tags for each of your posts into YAML header** like follow:

```
    tags:
        - foo
        - bar
        - something
```

So, when generator runs, it creates tag pages, and a cloud tags is available!

Custom YAML Header Properties
-----------------------------

[](#custom-yaml-header-properties)

Yes, you can **add anything you want** into YAML header to use it later into your template.

Tell me more!
-------------

[](#tell-me-more)

Later… I must improve this project yet before go further into the doc, but it is functional like you can see live example here: .

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/6af62130bd16d4e6bbaa5877829b6377386ef9fb6593592052dbb6eeb87c4a02?d=identicon)[malenki](/maintainers/malenki)

---

Top Contributors

[![malenkiki](https://avatars.githubusercontent.com/u/195776?v=4)](https://github.com/malenkiki "malenkiki (28 commits)")

### Embed Badge

![Health badge](/badges/malenki-phantastic/health.svg)

```
[![Health](https://phpackages.com/badges/malenki-phantastic/health.svg)](https://phpackages.com/packages/malenki-phantastic)
```

###  Alternatives

[aferrandini/urlizer

Library for urlizer

24768.2k8](/packages/aferrandini-urlizer)[coderevolutionplugins/gpt-3-encoder-php

PHP BPE Text Encoder/Decoder for GPT-2 / GPT-3

10046.1k](/packages/coderevolutionplugins-gpt-3-encoder-php)[cjstroud/classnames-php

A simple PHP utility for conditionally joining classNames together

20166.9k1](/packages/cjstroud-classnames-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
