Voldemort adalah generator situs statis sederhana menggunakan template jinja2 dan markdown.
sudo python setup.py install
atau
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
Pergi ke Direktori Contoh
cd example
dan lari
voldemort
Mulai httpserver
voldemort --serve -p 8080
Buka browser Anda dan lihat situs web yang sedang beraksi.
Menyebarkan situs web
voldemort --deploy -u foobarnb -a foobarnbaz.com -t /home/foobarnbaz/public_html
Posting terutama berisi 2 bagian. Bagian konfigurasi dan bagian template. Semua data di dalam dua --- mendefinisikan konfigurasi dan divalidasi sebagai data YAML. Anda dapat mengatur atribut terkait posting Anda di sini. Di bagian template Anda dapat menggunakan templat Jinja2 atau penurunan harga di {% markdown %} dan {% endmarkdown %} blok (Anda bisa mengabaikan blok ini jika layout didefinisikan di bagian metadata).
Sesuai konfigurasi default Voldemort, semua templat dasar harus ada dalam layout dan include direktori. Ini bukan keterbatasan yang sulit, tetapi disimpan untuk melestarikan maknanya. Posting ditulis dalam direktori bernama posts . Misalnya, kami memiliki struktur direktori seperti yang ditunjukkan di bawah ini
layout/
listing.html
post.html
include/
navigation.html
posts/
voldemort-is-awesome.markdown
index.html
css/
screen.css
pygments.css
Dan kami memiliki data berikut dalam 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>
dan include/header.html berisi
<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' />
Kami akan dapat menulis index.html berikut yang menghasilkan halaman depan blog Anda dengan semua posting, paginated dengan nilai yang disediakan di settings.yaml (default ke 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 %}
Dan sampel posting kami posts/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.
Untuk informasi lebih lanjut tentang templating, baca dokumentasi berikut.
Anda dapat mengubah pengaturan default dengan mengedit 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
Data yang ditentukan pengguna hanya boleh ditambahkan di bawah site seperti yang ditunjukkan di bawah ini
site :
name : "Pythoned!"
address : "http://foobarnbaz.com"
author_name : "Sreejith Kesavan"
author_email: "[email protected]"
Dan Anda dapat menggunakan situs web Anda ke lokasi yang disukai atau Github sendiri.
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 %}
Terlepas dari filter bawaan yang disediakan oleh Jinja2, Voldemort menyediakan filter berikut untuk digunakan di dalam halaman 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) }}