website
Recipes
“How Do I…” for website
powered sites
Settings and Defaults
- How can I set a default author for all posts?
-
In your _config.py add a dictionary DEFAULTS with the key
AUTHOR
:DEFAULTS: { "AUTHOR": "John Doe" }
- How can I add new pseudo-protocols?
-
Pseudo-protocols allow you to abbreviate hyperlinks in your article posts. New ones are set in the _config.py file with the variable PROTOCOLS:
PROTOCOLS: { "foo": "http://example.com/%s" }
You can then use it in your posts like this:
href="foo:bar"
which will turn out as
href="http://example.com/bar"
- How do I enable comments for articles?
-
Since all articles are compiled to static HTML,
website
uses Disqus to host commenting functionality. Add your Disqus user name to _config.py, and the rest comes automatically:DISQUS_NAME = "foobar"
Articles
- How do I add meta-data or headers to articles?
-
The syntax of an article file is quite simple. First there come the headers in the form of key-value pairs, then an empty line followed by the post body (HTML). Header lines may be split by beginning following lines with a single white space. A complete post file looks like this:
Title: My Post Author: John Doe Date: 2011-07-01T12:00:00Z Subject: website, writing, recipe <p>This is a blog post.</p> <p>There are lots of paragraphs</p> <h2>Or Headings</h2>
- How can I create categories for articles?
-
This is simple. Use folders under _article to organize your posts. For example, putting a file under _articles/my_cat/my_post.html gives the post the category “my_cat”. Nesting folders is of course supported.
-
Use the header Subject and a comma-separated list to define tags for a post:
Title: My Post Subject: Tag 1, Tag 2 <p>Post content goes here…</p>
- How do I create a series of articles?
-
There are two headers, that are used for this. Requires points to another article, that preceeds the current, and isRequiredBy references the next, following part. If you give the article an ID, you can reference it easily:
Title: Part 2 of 3 ID: Part_2 Requires: Part_1 IsRequiredBy: Part_3 <p>This is part 2 of 3…</p>
- How can I modify an article’s short description on index pages?
-
Usually index pages show the first 200 characters of the article. You can change this in two ways: If you add a header Abstract, this abstract is displayed per default before the article text, and is also used as description. If you specify the header Description, this is used as index page description, but doesn’t occur on the article’s page.
Title: My Post Description: This appears on index pages Abstract: This is displayed in front of the article and on index pages, if Description is not set <p>This appears, if neither is set…</p>
- Can specific articles have no comment form?
-
The Status header is used for this. Add the value no-discussion and the Disqus code will not be embedded:
Title: There’s nothing to discuss Status: no-discussion
- Can I prevent an article to appear in the index pages?
-
Add the value noref to the Status header:
Title: This should not appear on index pages Status: noref
- An article should not be indexed by search engines. How?
-
You can add a robots.txt to your project, that will automatically copied to the project:
User-agent: * Disallow: /my-secret-post.html
Alternatively use the Robots header to set the corresponding meta element in the finished HTML page:
Title: Don’t spider me Robots: no-follow, no-index
- Can I use custom CSS and JS in my posts?
-
You can always embed Javascript in your post and it will be output straight through. For CSS it is a bit more complicated, because it should live in the HTML head. You can use the header Stylesheet to embed them. The strings
#a#
and#s#
will be replaced by the absolute path to the article and to the static files, respectively.Stylesheet: #a#article.css, #s#series.css
- I link regularly to other sites like Wikipedia. Can I shorten the input?
-
website
features so-called pseudo-protocols. You can use them instead of HTTP to shortenhref
andsrc
attributes.Let’s take Wikipedia as an example. Assume, you have this in your _config.py file:
PROTOCOLS: { "w": "http://en.wikipedia.org/wiki/%s" }
Then you can write in your articles href="w:Typography", which will automatically expanded to href="http://en.wikipedia.org/wiki/Typography".
- I’m not yet finished with an article. Can I exclude it from the web site?
-
Set the Status header to draft. This will keep the article from being embedded. You can combine multiple values for the Status header by separating them with commas.
If you set the variable DEBUG to True in your _config.py file, the draft will be included. This gives you the ability to preview it in your development environment.
Categories, Newsfeeds and Sitemaps
- Can I prevent an article to appear in the news feed?
-
Yes. Place the header
Robots: noindex
in the article, and it will not appear in your news feed. It will also be not spidered by search engines. - I want an introduction on a category/tag index page.
-
Create a file _doc/<category>.category.html (where <category> is the name of the category) and put any markup there. It will be included before the article list on the index page of the category. For tag index pages use _doc/<tag>.tag.html.
- I have some other content I’d like to see in my sitemap.xml file. How can I add it?
-
Put a file local_sitemap.xml in the folder _doc. This is no full XML file but rather the portion to be included in the generated sitemap.xml.
- How can I create categories for articles?
- How can I create tags for articles?
Dynamic Content
- How can I create a simple contact form?
-
There is a simple contact form included in
website
. Just set the template of one of your articles to contact and save it with the file ending .php. In your _config.py file, set the variableEMAIL
to the address the mail should go to. Presto! Your contact form is ready.If you’re not satisfied with the way the contact template handles things, remember you can always overwrite the original template.
- How do I add comment functionality to my posts?
- This is answered above.
website
uses Disqus for this. - How can I offer a site search?
Templates, Static Content and Custom Markup
- I need XHTML 1.0 instead of HTML5. Where can I change the markup?
-
You can overwrite the markup generated by
website
anytime you like by creating a folder _templates in your project and in that placing a mako template named base.mako. - Can I use a completely different template for a specific post?
-
Yes. You can have, if you like, a custom template for each one of your posts. This gives you the maximal freedom in creating your articles, from text-only blogs to full photo-diaries or HTML5 experiments.
Place the header Template in your article to choose a template from your _templates folder. The default is _templates/article.mako (this is loaded from the
website
installation, if it doesn’t exist).Title: And now for something completely different Template: funky <p>This uses the template funky.mako.</p>
- Where do I put my global CSS and JS files?
- How do I reference images from my static files in articles?
Translations and Languages
- How can I provided articles in several languages?
- How do I translate the template strings?
- I’m not satisfied with the default translation. Can I overwrite it?
- I want to translate settings like the title. How do I do that?