Sorry. There is no host configured for this domain. Welcome | Pico

Title: Welcome Description: Pico is a stupidly simple, blazing fast, flat file CMS. social: - title: Visit us on GitHub url: icon: octocat - title: Check us out on Twitter url: icon: birdy - title: Join us on Freenode IRC Webchat url:

icon: chat

Welcome to Pico

Congratulations, you have successfully installed Pico. Pico is a stupidly simple, blazing fast, flat file CMS.

Creating Content

Pico is a flat file CMS. This means there is no administration backend or database to deal with. You simply create .md files in the content folder and those files become your pages. For example, this file is called and is shown as the main landing page.

When you install Pico, it comes with a content-sample folder. Inside this folder is a sample website that will display until you add your own content. You should create your own content folder in Pico's root directory and place your files there. No configuration is required, Pico will automatically use the content folder if it exists.

If you create a folder within the content folder (e.g. content/sub) and put an inside it, you can access that folder at the URL If you want another page within the sub folder, simply create a text file with the corresponding name and you will be able to access it (e.g. content/sub/ is accessible from the URL Below we've shown some examples of locations and their corresponding URLs:

Physical Location URL
content/ /
content/ ?sub (not accessible, see below)
content/sub/ ?sub (same as above)
content/sub/ ?sub/page
content/a/very/long/ ?a/very/long/url (doesn't exist)

If a file cannot be found, the file content/ will be shown. You can add files to any directory. So, for example, if you wanted to use a special error page for your blog, you could simply create content/blog/

As a common practice, we recommend you to separate your contents and assets (like images, downloads, etc.). We even deny access to your content directory by default. If you want to use some assets (e.g. a image) in one of your content files, you should create an assets folder in Pico's root directory and upload your assets there. You can then access them in your markdown using %base_url%/assets/ for example: ![Image Title](%base_url%/assets/image.png)

Text File Markup

Text files are marked up using Markdown and Markdown Extra. They can also contain regular HTML.

At the top of text files you can place a block comment and specify certain meta attributes of the page using YAML (the "YAML header"). For example:

Title: Welcome
Description: This description will go in the meta description tag
Author: Joe Bloggs
Date: 2013/01/01
Robots: noindex,nofollow
Template: index

These values will be contained in the {{ meta }} variable in themes (see below).

There are also certain variables that you can use in your text files:


Pico is not blogging software - but makes it very easy for you to use it as a blog. You can find many plugins out there implementing typical blogging features like authentication, tagging, pagination and social plugins. See the below Plugins section for details.

If you want to use Pico as a blogging software, you probably want to do something like the following: 1. Put all your blog articles in a separate blog folder in your content directory. All these articles should have both a Date and Template meta header, the latter with e.g. blog-post as value (see Step 2). 2. Create a new Twig template called blog-post.twig (this must match the Template meta header from Step 1) in your theme directory. This template probably isn't very different from your default index.twig, it specifies how your article pages will look like. 3. Create a in your content folder and set its Template meta header to e.g. blog. Also create a blog.twig in your theme directory. This template will show a list of your articles, so you probably want to do something like this: {% for page in pages|sort_by("time")|reverse %} {% if starts with "blog/" %} <div class="post"> <h3><a href="{{ page.url }}">{{ page.title }}</a></h3> <p class="date">{{ page.date_formatted }}</p> <p class="excerpt">{{ page.description }}</p> </div> {% endif %} {% endfor %} 4. Make sure to exclude blog articles from your page navigation. You can achieve this by adding {% if not ( starts with "blog/") %}...{% endif %} to the navigation loop ({% for page in pages %}...{% endfor %}) in your theme's index.twig.


Pico is highly customizable in two different ways: On the one hand you can change Pico's appearance by using themes, on the other hand you can add new functionality by using plugins. Doing the former includes changing Pico's HTML, CSS and JavaScript, the latter mostly consists of PHP programming.

This is all Greek to you? Don't worry, you don't have to spend time on these techie talk - it's very easy to use one of the great themes or plugins others developed and released to the public. Please refer to the next sections for details.


You can create themes for your Pico installation in the themes folder. Check out the default theme for an example. Pico uses Twig for template rendering. You can select your theme by setting the $config['theme'] option in config/config.php to the name of your theme folder.

All themes must include an index.twig (or index.html) file to define the HTML structure of the theme. Below are the Twig variables that are available to use in your theme. Please note that paths (e.g. {{ base_dir }}) and URLs (e.g. {{ base_url }}) don't have a trailing slash.