Voldemort ist ein einfacher statischer Site -Generator mit Jinja2- und Markdown -Vorlagen.
sudo python setup.py install
oder
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
Gehen Sie zum Beispielverzeichnis
cd example
und rennen
voldemort
Starten Sie den httpserver
voldemort --serve -p 8080
Öffnen Sie Ihren Browser und sehen Sie die Website in Aktion.
Bereitstellen Sie die Website ein
voldemort --deploy -u foobarnb -a foobarnbaz.com -t /home/foobarnbaz/public_html
Beiträge enthalten hauptsächlich 2 Abschnitte. Konfigurationsabschnitt und den Abschnitt Vorlage. Alle Daten innerhalb von --- definieren die Konfiguration und werden als YAML-Daten validiert. Sie können Ihre postbezogenen Attribute hier festlegen. Im Abschnitt "Vorlagen" können Sie Jinja2 -Vorlagen oder Markdowns in {% markdown %} und {% endmarkdown %} -blöcken verwenden (Sie können diese Blöcke ignorieren, wenn layout im Abschnitt Metadaten definiert ist).
Gemäß der Standardkonfiguration von Voldemort sollten sich alle Basisvorlagen in layout befinden und Verzeichnisse include . Dies ist keine harte Einschränkung, sondern behalten, um die Bedeutung zu erhalten. Beiträge sind in einem Verzeichnis mit dem Namen posts geschrieben. Zum Beispiel haben wir eine Verzeichnisstruktur, wie unten gezeigt
layout/
listing.html
post.html
include/
navigation.html
posts/
voldemort-is-awesome.markdown
index.html
css/
screen.css
pygments.css
Und wir haben die folgenden Daten in 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>
und include/header.html enthält
<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' />
Wir können den folgenden index.html schreiben, der die Titelseite Ihres Blogs mit allen Beiträgen generiert, die mit dem Wert in Einstellungen, der in settings.yaml angegeben ist, huldiert (Standardeinstellungen bis 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 %}
Und unsere 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.
Weitere Informationen zu Vorlagen finden Sie unter den folgenden Dokumentationen.
Sie können die Standardeinstellungen ändern, indem Sie die settings.yaml bearbeiten.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
Benutzerdefinierte Daten sollten nur unter site hinzugefügt werden, wie unten gezeigt
site :
name : "Pythoned!"
address : "http://foobarnbaz.com"
author_name : "Sreejith Kesavan"
author_email: "[email protected]"
Sie können Ihre Website an einem bevorzugten Ort oder GitHub selbst bereitstellen.
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 %}
Neben den von Jinja2 bereitgestellten integrierten Filtern stellt Voldemort die folgenden Filter zur Verfügung, die Sie innerhalb von HTML-Seiten verwenden können.
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) }}