Creating Custom Extensions
Custom extension are usually Python scripts that you can add in the _exts subdirectory of your blog and hook up to the build by updating the extensions list in your conf.py.
Tinkerer extensions are pretty much Sphinx extensions, so you can start by reading about Sphinx extensions.
What Tinkerer adds to this is a set of metadata and other information which is passed to the templating engine when rendering each file. This information resides in the Context variable and your extensions can use and/or alter it to extend Tinkerer functionality.
Going forward, the Tinkerer post and page RST templates can be found in the _templates subdirectory of a blog, so if your custom extension adds, for example, an additional directive which should appear in each new post, you can instruct the user to update his post template accordingly (or have a setup script that does it automatically).
Context
The context object passed by the builder to the templating engine contains some additional information added by Tinkerer besides the information provided by Sphinx. It contains the following extra keys:
website, tagline, description
These are values retrieved from conf.py.
text_recent_posts, text_posted_by, text_blog_archive, text_filed_under, text_tags, text_tags_cloud, text_categories
These are localized strings which are translated by Tinkerer and get passed to the templating engine for rendering.
pages
The list of pages (documents under /pages).
recent
The list of recent posts.
tags, taglinks, categories, catlinks
These are the lists of post tags, tag links, categories and category links.
prev, next
Previous and next links. These exist only for posts and for documentation pages (pages under doc/ directory). Other pages, for example pages under pages/ directory, don’t have previous/next relationships.
Metadata
This is an object containig additional metadata:
is_post, is_page
Flags used to indicate whether what is currently being rendered is a post or a page.title, link
Post or page title and link (URL).date, formatted_date, formatted_date_short
Post timestamp. date is raw date; formatted_date is date formatted as string using localized formatting; formatted_date_short is similar to formatted_date but using a short format (month and day, without year).body
HTML body of the post as converted from RST.author
Post author.filing
Filing dictionary which contains two keys: tags and categories. These contain the list of tags and categories of the post.comments
True if post should display a comment box.comment_count
Contains additional HTML/JavaScript code to retrieve the number of comments of a post. Extensions like the built-in disqus or fbcomments populate this value.num
This is a number which will be unique for each post during a build. It can be used to associate data with posts.
Back to Tinkerer Reference.