伏地魔是一个使用jinja2和标记模板的简单静态站点生成器。
voldemort的Python项目详细描述
伏地魔
伏地魔是一个简单的静态站点生成器,使用jinja2和markdown 模板。
安装
sudo python setup.py install
或
sudo easy_install -U voldemort
使用选项
Usage: voldemort [options] Options: -h, --help show this help message and exit -w WORK_DIR, --work_dir=WORK_DIR Working Directory -s, --serve Start the HTTP Server -p PORT, --port=PORT Port inwhich the HTTPServer should run -d, --deploy Deploy this website -u USER, --user=USER Login name for server -a AT, --at=AT Server address to deploy the site -t TO, --to=TO Deployment directory --skip-blog Skip blog posts generation --skip-pages Skip pages generation --skip-tags Skip tags generation --skip-feeds Skip Atom feed generation --skip-sitemap Skip sitemap generation
用法示例
转到示例目录
cd example
然后运行
voldemort
启动httpserver
voldemort --serve -p 8080
打开浏览器并查看正在运行的网站。
部署网站
voldemort --deploy -u foobarnb -a foobarnbaz.com -t /home/foobarnbaz/public_html
写文章
员额主要包括2个科。配置节和模板 章节。两个---中的所有数据都定义了配置,并且 验证为yaml数据。你可以在这里设置与文章相关的属性。 在模板部分,您可以使用jinja2模板或 {% markdown %}和{% endmarkdown %}块(可以忽略 如果在元数据部分中定义了layout,则这些块。
根据伏地魔的默认配置,所有基本模板都应该是 在layout和include目录中。这不难 限制,但为了保留意义而保留。帖子写在 名为posts的目录。例如,我们有一个目录结构 如下所示
layout/ listing.html post.html include/ navigation.html posts/ voldemort-is-awesome.markdown index.html css/ screen.css pygments.css
我们在layout/listing.html
中有以下数据<!DOCTYPE html> <html lang="en-US"> <head> <title>foobarnbaz.com - {{ page.title }}</title> {% include "head-common.html" %} </head> <body> <section class="page-content"> {% block content %}{% endblock %} </section> </body> </html>
并且include/header.html包含
<meta charset="UTF-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="author" content="Sreejith K" /> <link rel="alternate" href="http://feeds2.feedburner.com/foobarnbaz" title="foobarnbaz.com" type="application/atom+xml" /> <link rel="stylesheet" href="/css/screen.css" type="text/css" /> <link rel="stylesheet" href="/css/pygments.css" type="text/css" /> <link href='/images/layout/favicon.ico' rel='shortcut icon' type='image/ico' />
我们将能够编写以下index.html,它将生成 你的博客的首页,上面有所有的文章,并用值分页 在settings.yaml中提供(默认为5)。
--- paginate: true --- {% extends "listing.html" %} {% block content %} {% for post in paginator.posts %} <article class="excerpt"> <header> <h1><a href="{{ post.url }}">{{ post.title }}</a></h1> <time datetime="{{ post.date | date_to_string }}" pubdate="pubdate"> {{ post.date.strftime("%b %d, %Y") }} </time> </header> {% if loop.first %} {{ post.content }} <p class="full-post"><a href="{{ post.url }}#comments">comments...</a></p> {% else %} <p>{{ post.content }}</p> <p class="full-post"><a href="{{ post.url }}">full post...</a></p> {% endif %} </article> {% endfor %} {% endblock %}
以及我们的示例postposts/voldemort-is-awesome.markdown,
--- title: Voldemort date: '02-10-2011' time: '10:45' layout: 'post.html' --- [Voldemort](https://github.com/semk/voldemort) is an awesome static site generator based in Jinja2 and Markdown templates.
有关模板的更多信息,请阅读以下文档。
配置
您可以通过编辑settings.yaml来更改默认设置。
layout_dirs : - layout # directory inwhich base tempaltes reside - include # html code that can be included goes here posts_dir : posts # directory where you write posts post_url : "%Y/%m/%d" # url to posts. You can alter the order site_dir : _site # generated site will be in this directory paginate : 5 # number of pages to be paginated at once
用户定义的数据只能添加到site下,如下所示
site : name : "Pythoned!" address : "http://foobarnbaz.com" author_name : "Sreejith Kesavan" author_email: "sreejithemk@gmail.com"
您可以将网站部署到首选位置或github 本身。
deploy : user : semk at : github.com to : semk.github.com
全局变量
site: User defined variables from settings.yaml. Also includes site.time Eg: site.name, site.address, site.time posts: A list of all your posts. All attributes in the YAML section can be accessed either using . or []. eg. post['date'], post.date paginator: You can paginate your posts using this object. eg: {% for post in paginator.posts %} Attributes: posts: list of posts in this paginator current_page : current page number (None if not) next_page : next page number (None if not) previous_page : previous page number (None if not) post: Info about the post. Only accessible in posts. Attributes: content : html content of the post url : url to this post id : identifier for the post (url) next : points to the next post previous : points to the previous post tags : points to the tags and you can access all the attributes in the config section (eg: post.date) page: Info about a page. Only available in pages other than posts. Attributes: content : html content of the post and you can access all the attributes in the config section (eg: page.title) tags: Tags for the blog posts. Globally available. Eg: You can loop like {% for tag in tags %} and access tag.name, tag.url and tag.posts tag: Available only to the tag template (Default `tag.html`) Usage: {% for post in tag.posts %}
过滤器
除了Jinja2提供的内置过滤器外,伏地魔还提供 下面是在HTML页面中使用的过滤器。
date: Format datetime objects. eg. post.date | date("%d-%m-%Y") date_to_string: Convert date to string. eg. "27 Jan 2011" date_to_long_string: Format a date in long format. eg. "27 January 2011" date_to_xmlschema: Format a date for use in XML. eg. "2011-04-24T20:34:46+05:30" xml_escape: Replace special characters "&", "<" and ">" to HTML-safe sequences. cgi_escape: CGI escape a string for use in a URL. Replaces any special characters with appropriate %XX replacements. uri_escape: Escape special characters in url. number_of_words: Return number of words in a string. excerpt: Split the html data. Eg: {{ post.content | excerpt(70) }}