If you are dropping Feather into an existing website to use as a blog, simply rename the folder to whatever you'd like your blog to be called such as
blog and this will then be accessible at
If you are using Feather for your entire site, simply upload all of the contents from the Feather directory into your root, i.e:
Your directory structure should look something like this:
public_html/ core/ example.htaccess example.nginx.conf i18n/ includes/ index.php media/ pages/ posts/ themes/ blank/ chirp/
nginx.conf are included, rename or copy the contents to your current file to use.
Ensure you set
RewriteBase / in
location / in
nginx.conf to the location you installed Feather to, this is typically
/ for root directory installation.
Once uploaded, open
includes/config.php and edit the configuration options at the top of the file to finish the setup. Any options you do not need, simply leave blank, do not delete!
Create your Markdown files in the relevant directories,
These are simply text files with an
.md extension and are made up of text, Markdown, and HTML content.
The slug is the filename without extension, for example, a file in
this-is-a-page.md would be accessible at
When naming your files, ensure you use dashes
- to separate words.
The files are split into 2 parts.
The first 5 lines is YAML Frontmatter style metadata, the second part is Markdown content.
title: The title summary: The summary which is used in the meta tags, post excerpt and page intro featured image: https://example.com/media/image.jpg tags: optional, comma, separated, tags accent: #bada55 Content can now begin...
Tags are used for posts only and the accent is only used if the active theme utilises it.
You can leave any metadata item empty if you don't require, but your main content must not start until line 6.
Next, simply add the rest of your content as normal.
If you are not familiar with Markdown, simply checkout the Markdown Cheatsheet
When creating pages, if you would like to create a page, but not have it show in the menu, simply leave
You can then manually link to it anywhere either using Markdown or straight HTML, the choice is yours.
To install a new theme, simply drop the extracted folder into
To tell Feather what theme to use, update the
const Theme option in
includes/config.php with the theme name.
The theme name is simply the folder name.
If the theme has any theme options, you can change those by editing
includes/theme.php inside that theme directory.
For info on creating themes check out the Developer Docs
If you would like to translate Feather into a different language, you can, Feather core and all Feather themes and addons are translation ready!
Third-party themes and addons must add their own gettext support to be translation ready.
There are many ways to translate, and different software to help you, for this guide, we are using a Mac and PoEdit.
The easiest way to begin translating is simply place the entire Feather folder, including the core and all themes & addons on your Desktop.
Next, we're going to use the Mac Terminal.
Run the following command(s) to generate a
.po file for all translatable strings in the application.
cd Desktop/feather find . -name "*.php" >POTFILES xgettext -n --files-from=POTFILES
This will generate a file named
messages.po inside the Feather directory.
We now need to open this file with PoEdit.
Once open, select the language you are translating to, then simply go through each string and translate into the language of your choice, once done, select
File > Compile to MO from the PoEdit menu.
You will now have 2 files,
We now need to create our translation directory inside Feather.
Navigate to the
i18n directory, inside you need to create a new directory with your language & country code.
A locale name usually has the form
ll is an ISO 639 two-letter language code, and
CC is an ISO 3166 two-letter country code.
For example, for German in Germany, ll is de, and CC is DE, so this would require a directory named
Inside this directory create a final directory named
LC_MESSAGES, and place your compiled
.mo file inside.
Your directory structure will now look like this, with the exception of different language / country codes.
i18n/ en_GB/ LC_MESSAGES/ messages.mo
The final step is to tell Feather to use the language.
includes/config.php and set the i18n option,
const i18n = "en_GB"; to your desired language.
For info on making themes and addons translation ready when developing, check out the Developer Docs
The search function is only available in Feather PRO.
To add the search form anywhere within a theme, simply include the form:
include( get_root_path() . "/searchform.php" );
Or if you've installed Feather in a sub-directory:
include( get_root_path() . "/sub-directory/searchform.php" );
It is the themes responsibility to display & style the in-page search form to match the theme styling.
If you do not want to display the in-page form, but would like to link to the actual search page, you can create a normal HTML link:
<a href="https://getfeather.app/search/" title="Search">Search</a>
Or a with Markdown link:
Addons are only available in Feather PRO. They are snippets of HTML, CSS & JS and extend functionality.
To install an addon, simply drop the extracted file in the
If the addon is valid, Feather will autoload the functionality provided.
If you would like to disable any addon, simply prefix the folder with
For more info on creating addons, check out the Developer Docs
That's all folks!