Markdown-based personal blog
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


###Markdown-based blog

Since I was getting tired of using wordpress I decided to try to roll the code myself. This project is inspired by pico.


  • Extended markdown syntax (php-markdown, php-smartypants).
  • Syntax highliting (prettify).
  • Localization.
  • Caching of rendered markdown pages (zf2).
  • Support for themes (twig).
  • Simple and short single-file application.


  1. Update settings.php with your configuration.
  2. Adjust RewriteBase inside htaccess if needed.


Page structure

A page is a normal markdown text file, with the addition of an header containing metadata. The available fields are:

  • title: will be displayed next to the site name.
  • date: the format is Y/M/D.
  • description: used in <meta name="description"/>
  • robots: used in <meta name="robots"/>
  • excerpt: number of lines (from the beginning of the content) to include in the page preview.

This is a sample header:

    title = Title
    date = 2013/03/31
    description = Description
    robots = noindex,nofollow
    excerpt = 8

All pages must end with the .md extension.

Page localization

This blog supports using up to two languages, with the following rules about page filenames.

  • Localized pages end with a double extension, like and
  • The order of preference is [localized page], [neutral page], [page in another language].


Sections are showed in the navigation menu. To create a section do the follwing:

  • Create a directory under /content.
  • Add a new page named index (can be localized).
  • Add a section_index field inside the header and set it to a number describing the show order in the navigation menu (lower to higher).
  • Sections can have subdirectories, but they will not generate additional sections (useful to organize the pages).


Layouts are saved inside the homonymous directory.

Layouts can access a number of data through twig:

  • {{ lang }}
  • {{ layout_url }}
  • {{ base_dir }}
  • {{ base _url }}
  • {{ continue_reading }}
  • {{ analytics_ua }}
  • {{ frontpage }}
  • {{ url }}
  • {{ site_title }}
  • {{ sections }}
  • {{ metadata }}
  • {{ content }}

Look at the default theme's index.html for sample usage.


Markdown is rendered in three passes:

  1. MarkdownExtra
  2. SmartyPants
  3. Prettify (client-side)

About the syntax, refer to the respective project documentation. Note: you can use html, and can also include markdown inside html tags if you specify the markdown="1" attribute.


  • Integrate comments (using external services).