Merge branch 'master' of git://github.com/getpelican/pelican

This commit is contained in:
Nico Di Rocco 2012-09-11 22:11:59 +02:00
commit 81d6d85461
15 changed files with 188 additions and 112 deletions

View file

@ -23,7 +23,7 @@ different projects.
To create a virtual environment, use the following syntax:: To create a virtual environment, use the following syntax::
$ mkvirtualenv pelican $ mkvirtualenv pelican
To clone the Pelican source:: To clone the Pelican source::
@ -65,5 +65,5 @@ Try to respect what is described in the `PEP8 specification
<http://www.python.org/dev/peps/pep-0008/>`_ when providing patches. This can be <http://www.python.org/dev/peps/pep-0008/>`_ when providing patches. This can be
eased via the `pep8 <http://pypi.python.org/pypi/pep8>`_ or `flake8 eased via the `pep8 <http://pypi.python.org/pypi/pep8>`_ or `flake8
<http://pypi.python.org/pypi/flake8/>`_ tools, the latter of which in <http://pypi.python.org/pypi/flake8/>`_ tools, the latter of which in
particular will give you some useful hints about ways in which the particular will give you some useful hints about ways in which the
code/formatting can be improved. code/formatting can be improved.

View file

@ -26,7 +26,7 @@ suggestions or problems you might have via IRC or the issue tracker.
If you want to contribute, please fork `the git repository If you want to contribute, please fork `the git repository
<https://github.com/getpelican/pelican/>`_, create a new feature branch, make <https://github.com/getpelican/pelican/>`_, create a new feature branch, make
your changes, and issue a pull request. Someone will review your changes as soon your changes, and issue a pull request. Someone will review your changes as soon
as possible. Please refer to the :doc:`How to Contribute <contribute>` section as possible. Please refer to the :doc:`How to Contribute <contribute>` section
for more details. for more details.
You can also contribute by creating themes and improving the documentation. You can also contribute by creating themes and improving the documentation.
@ -43,7 +43,7 @@ I'm creating my own theme. How do I use Pygments for syntax highlighting?
Pygments adds some classes to the generated content. These classes are used by Pygments adds some classes to the generated content. These classes are used by
themes to style code syntax highlighting via CSS. Specifically, you can themes to style code syntax highlighting via CSS. Specifically, you can
customize the appearance of your syntax highlighting via the ``.codehilite pre`` customize the appearance of your syntax highlighting via the ``.codehilite pre``
class in your theme's CSS file. To see how various styles can be used to render class in your theme's CSS file. To see how various styles can be used to render
Django code, for example, you can use the demo `on the project website Django code, for example, you can use the demo `on the project website
<http://pygments.org/demo/15101/>`_. <http://pygments.org/demo/15101/>`_.
@ -105,7 +105,7 @@ I'm getting a warning about feeds generated without SITEURL being set properly
In order to properly generate all URLs properly in Pelican you will need to set In order to properly generate all URLs properly in Pelican you will need to set
``SITEURL`` to the full path of your blog. When using ``make html`` and the ``SITEURL`` to the full path of your blog. When using ``make html`` and the
default Makefile provided by the `pelican-quickstart` bootstrap script to test default Makefile provided by the `pelican-quickstart` bootstrap script to test
build your site, it's normal to see this warning since ``SITEURL`` is build your site, it's normal to see this warning since ``SITEURL`` is
deliberately left undefined. If configured properly no other ``make`` commands deliberately left undefined. If configured properly no other ``make`` commands
should result in this warning. should result in this warning.
@ -124,5 +124,5 @@ setting names). Here is an exact list of the renamed setting names::
Older 2.x themes that referenced the old setting names may not link properly. Older 2.x themes that referenced the old setting names may not link properly.
In order to rectify this, please update your theme for compatibility with 3.0+ In order to rectify this, please update your theme for compatibility with 3.0+
by changing the relevant values in your template files. For an example of by changing the relevant values in your template files. For an example of
complete feed headers and usage please check out the ``simple`` theme. complete feed headers and usage please check out the ``simple`` theme.

View file

@ -17,7 +17,7 @@ While the above is the simplest method, the recommended approach is to create
a virtual environment for Pelican via virtualenv_ and virtualenvwrapper_ before a virtual environment for Pelican via virtualenv_ and virtualenvwrapper_ before
installing Pelican. Assuming you've followed the virtualenvwrapper installing Pelican. Assuming you've followed the virtualenvwrapper
`installation <http://virtualenvwrapper.readthedocs.org/en/latest/install.html>`_ `installation <http://virtualenvwrapper.readthedocs.org/en/latest/install.html>`_
and `shell configuration and `shell configuration
<http://virtualenvwrapper.readthedocs.org/en/latest/install.html#shell-startup-file>`_ <http://virtualenvwrapper.readthedocs.org/en/latest/install.html#shell-startup-file>`_
steps, you can then open a new terminal session and create a new virtual steps, you can then open a new terminal session and create a new virtual
environment for Pelican:: environment for Pelican::
@ -26,7 +26,7 @@ environment for Pelican::
Once the virtual environment has been created and activated, Pelican can be Once the virtual environment has been created and activated, Pelican can be
be installed via ``pip`` or ``easy_install`` as noted above. Alternatively, if be installed via ``pip`` or ``easy_install`` as noted above. Alternatively, if
you have the project source, you can install Pelican using the distutils you have the project source, you can install Pelican using the distutils
method:: method::
$ cd path-to-Pelican-source $ cd path-to-Pelican-source
@ -209,7 +209,7 @@ Pages
If you create a folder named ``pages``, all the files in it will be used to If you create a folder named ``pages``, all the files in it will be used to
generate static pages. generate static pages.
Then, use the ``DISPLAY_PAGES_ON_MENU`` setting, which will add all the pages to Then, use the ``DISPLAY_PAGES_ON_MENU`` setting, which will add all the pages to
the menu. the menu.
If you want to exclude any pages from being linked to or listed in the menu If you want to exclude any pages from being linked to or listed in the menu
@ -219,7 +219,7 @@ things like making error pages that fit the generated theme of your site.
Importing an existing blog Importing an existing blog
-------------------------- --------------------------
It is possible to import your blog from Dotclear, WordPress, and RSS feeds using It is possible to import your blog from Dotclear, WordPress, and RSS feeds using
a simple script. See :ref:`import`. a simple script. See :ref:`import`.
Translations Translations
@ -277,14 +277,13 @@ For RestructuredText, use the code-block directive::
<indented code block goes here> <indented code block goes here>
For Markdown, include the language identifier just above code blocks:: For Markdown, include the language identifier just above the code block,
indenting both the identifier and code::
:::identifier :::identifier
<code goes here> <code goes here>
(indent both the identifier and code)
The specified identifier (e.g. ``python``, ``ruby``) should be one that The specified identifier (e.g. ``python``, ``ruby``) should be one that
appears on the `list of available lexers <http://pygments.org/docs/lexers/>`_. appears on the `list of available lexers <http://pygments.org/docs/lexers/>`_.
Publishing drafts Publishing drafts

View file

@ -31,7 +31,7 @@ BeatifulSoup can be installed like any other Python package::
$ pip install BeautifulSoup $ pip install BeautifulSoup
For pandoc, install a package for your operating system from the For pandoc, install a package for your operating system from the
`pandoc site <http://johnmacfarlane.net/pandoc/installing.html>`_. `pandoc site <http://johnmacfarlane.net/pandoc/installing.html>`_.

View file

@ -3,7 +3,7 @@ Pelican
Pelican is a static site generator, written in Python_. Pelican is a static site generator, written in Python_.
* Write your weblog entries directly with your editor of choice (vim!) * Write your weblog entries directly with your editor of choice (vim!)
in reStructuredText_ or Markdown_ in reStructuredText_ or Markdown_
* Includes a simple CLI tool to (re)generate the weblog * Includes a simple CLI tool to (re)generate the weblog
* Easy to interface with DVCSes and web hooks * Easy to interface with DVCSes and web hooks
@ -79,4 +79,4 @@ A French version of the documentation is available at :doc:`fr/index`.
.. _`Pelican documentation`: http://docs.getpelican.com/latest/ .. _`Pelican documentation`: http://docs.getpelican.com/latest/
.. _`Pelican's internals`: http://docs.getpelican.com/en/latest/internals.html .. _`Pelican's internals`: http://docs.getpelican.com/en/latest/internals.html
.. _`#pelican on Freenode`: irc://irc.freenode.net/pelican .. _`#pelican on Freenode`: irc://irc.freenode.net/pelican
.. _webchat: http://webchat.freenode.net/?channels=pelican&uio=d4 .. _webchat: http://webchat.freenode.net/?channels=pelican&uio=d4

View file

@ -52,7 +52,7 @@ Take a look at the Markdown reader::
text = open(filename) text = open(filename)
md = Markdown(extensions = ['meta', 'codehilite']) md = Markdown(extensions = ['meta', 'codehilite'])
content = md.convert(text) content = md.convert(text)
metadata = {} metadata = {}
for name, value in md.Meta.items(): for name, value in md.Meta.items():
if name in _METADATA_FIELDS: if name in _METADATA_FIELDS:
@ -81,7 +81,7 @@ both; only the existing ones will be called.
context is shared between all generators, and will be passed to the context is shared between all generators, and will be passed to the
templates. For instance, the ``PageGenerator`` ``generate_context`` method templates. For instance, the ``PageGenerator`` ``generate_context`` method
finds all the pages, transforms them into objects, and populates the context finds all the pages, transforms them into objects, and populates the context
with them. Be careful *not* to output anything using this context at this with them. Be careful *not* to output anything using this context at this
stage, as it is likely to change by the effect of other generators. stage, as it is likely to change by the effect of other generators.
* ``generate_output`` is then called. And guess what is it made for? Oh, * ``generate_output`` is then called. And guess what is it made for? Oh,

View file

@ -64,7 +64,7 @@ In this example, we can see there are three themes available: ``notmyidea``, ``s
Note that you can combine the ``--list`` option with the ``-v`` or ``--verbose`` option to get more verbose output, like this: Note that you can combine the ``--list`` option with the ``-v`` or ``--verbose`` option to get more verbose output, like this:
.. code-block:: console .. code-block:: console
$ pelican-themes -v -l $ pelican-themes -v -l
/usr/local/lib/python2.6/dist-packages/pelican-2.6.0-py2.6.egg/pelican/themes/notmyidea /usr/local/lib/python2.6/dist-packages/pelican-2.6.0-py2.6.egg/pelican/themes/notmyidea
/usr/local/lib/python2.6/dist-packages/pelican-2.6.0-py2.6.egg/pelican/themes/two-column (symbolic link to `/home/skami/Dev/Python/pelican-themes/two-column') /usr/local/lib/python2.6/dist-packages/pelican-2.6.0-py2.6.egg/pelican/themes/two-column (symbolic link to `/home/skami/Dev/Python/pelican-themes/two-column')
@ -118,7 +118,7 @@ Creating symbolic links
To symbolically link a theme, you can use the ``-s`` or ``--symlink``, which works exactly as the ``--install`` option: To symbolically link a theme, you can use the ``-s`` or ``--symlink``, which works exactly as the ``--install`` option:
.. code-block:: console .. code-block:: console
# pelican-themes --symlink ~/Dev/Python/pelican-themes/two-column # pelican-themes --symlink ~/Dev/Python/pelican-themes/two-column
In this example, the ``two-column`` theme is now symbolically linked to the Pelican themes path, so we can use it, but we can also modify it without having to reinstall it after each modification. In this example, the ``two-column`` theme is now symbolically linked to the Pelican themes path, so we can use it, but we can also modify it without having to reinstall it after each modification.
@ -130,11 +130,11 @@ This is useful for theme development:
$ sudo pelican-themes -s ~/Dev/Python/pelican-themes/two-column $ sudo pelican-themes -s ~/Dev/Python/pelican-themes/two-column
$ pelican ~/Blog/content -o /tmp/out -t two-column $ pelican ~/Blog/content -o /tmp/out -t two-column
$ firefox /tmp/out/index.html $ firefox /tmp/out/index.html
$ vim ~/Dev/Pelican/pelican-themes/two-coumn/static/css/main.css $ vim ~/Dev/Pelican/pelican-themes/two-coumn/static/css/main.css
$ pelican ~/Blog/content -o /tmp/out -t two-column $ pelican ~/Blog/content -o /tmp/out -t two-column
$ cp /tmp/bg.png ~/Dev/Pelican/pelican-themes/two-coumn/static/img/bg.png $ cp /tmp/bg.png ~/Dev/Pelican/pelican-themes/two-coumn/static/img/bg.png
$ pelican ~/Blog/content -o /tmp/out -t two-column $ pelican ~/Blog/content -o /tmp/out -t two-column
$ vim ~/Dev/Pelican/pelican-themes/two-coumn/templates/index.html $ vim ~/Dev/Pelican/pelican-themes/two-coumn/templates/index.html
$ pelican ~/Blog/content -o /tmp/out -t two-column $ pelican ~/Blog/content -o /tmp/out -t two-column
@ -152,7 +152,7 @@ The ``--install``, ``--remove`` and ``--symlink`` option are not mutually exclus
--symlink ~/Dev/Python/pelican-themes/two-column \ --symlink ~/Dev/Python/pelican-themes/two-column \
--verbose --verbose
In this example, the theme ``notmyidea-cms`` is replaced by the theme ``notmyidea-cms-fr`` In this example, the theme ``notmyidea-cms`` is replaced by the theme ``notmyidea-cms-fr``

View file

@ -16,7 +16,7 @@ To load plugins, you have to specify them in your settings file. You have two
ways to do so. ways to do so.
Either by specifying strings with the path to the callables:: Either by specifying strings with the path to the callables::
PLUGINS = ['pelican.plugins.gravatar',] PLUGINS = ['pelican.plugins.gravatar',]
Or by importing them and adding them to the list:: Or by importing them and adding them to the list::
@ -76,14 +76,22 @@ request if you need them!
List of plugins List of plugins
=============== ===============
Not all the list are described here, but a few of them have been extracted from The following plugins are currently included with Pelican under ``pelican.plugins``:
the Pelican core and provided in ``pelican.plugins``. They are described here:
Tag cloud * `GitHub activity`_
--------- * `Global license`_
* `Gravatar`_
* `HTML tags for reStructuredText`_
* `Related posts`_
* `Sitemap`_
Translation Ideas for plugins that haven't been written yet:
-----------
* Tag cloud
* Translation
Plugin descriptions
===================
GitHub activity GitHub activity
--------------- ---------------
@ -116,23 +124,78 @@ variable, as in the example::
``github_activity`` is a list of lists. The first element is the title ``github_activity`` is a list of lists. The first element is the title
and the second element is the raw HTML from GitHub. and the second element is the raw HTML from GitHub.
Global license
--------------
This plugin allows you to define a LICENSE setting and adds the contents of that
license variable to the article's context, making that variable available to use
from within your theme's templates.
Gravatar
--------
This plugin assigns the ``author_gravatar`` variable to the Gravatar URL and
makes the variable available within the article's context. You can add
AUTHOR_EMAIL to your settings file to define the default author's email
address. Obviously, that email address must be associated with a Gravatar
account.
Alternatively, you can provide an email address from within article metadata::
:email: john.doe@example.com
If the email address is defined via at least one of the two methods above,
the ``author_gravatar`` variable is added to the article's context.
HTML tags for reStructuredText
------------------------------
This plugin allows you to use HTML tags from within reST documents. Following
is a usage example, which is in this case a contact form::
.. html::
<form method="GET" action="mailto:some email">
<p>
<input type="text" placeholder="Subject" name="subject">
<br />
<textarea name="body" placeholder="Message">
</textarea>
<br />
<input type="reset"><input type="submit">
</p>
</form>
Related posts
-------------
This plugin adds the ``related_posts`` variable to the article's context.
To enable, add the following to your settings file::
from pelican.plugins import related_posts
PLUGINS = [related_posts]
You can then use the ``article.related_posts`` variable in your templates.
For example::
{% if article.related_posts %}
<ul>
{% for related_post in article.related_posts %}
<li>{{ related_post }}</li>
{% endfor %}
</ul>
{% endif %}
Sitemap Sitemap
------- -------
The plugin generates a sitemap of the blog. The sitemap plugin generates plain-text or XML sitemaps. You can use the
It can generates plain text sitemaps or XML sitemaps. ``SITEMAP`` variable in your settings file to configure the behavior of the
Configuration
"""""""""""""
You can use the setting ``SITEMAP`` variable to configure the behavior of the
plugin. plugin.
The ``SITEMAP`` variable must be a Python dictionary, it can contain tree keys: The ``SITEMAP`` variable must be a Python dictionary, it can contain three keys:
- ``format``, which sets the output format of the plugin (``xml`` or ``txt``)
- ``format``, which set the output format of the plugin (``xml`` or ``txt``)
- ``priorities``, which is a dictionary with three keys: - ``priorities``, which is a dictionary with three keys:
@ -154,9 +217,8 @@ The ``SITEMAP`` variable must be a Python dictionary, it can contain tree keys:
- ``indexes``, the update frequency of the index pages - ``indexes``, the update frequency of the index pages
An valid value is ``always``, ``hourly``, ``daily``, ``weekly``, ``monthly``, Valid frequency values are ``always``, ``hourly``, ``daily``, ``weekly``, ``monthly``,
``yearly`` or ``never``. ``yearly`` and ``never``.
If a key is missing or a value is incorrect, it will be replaced with the If a key is missing or a value is incorrect, it will be replaced with the
default value. default value.
@ -168,11 +230,9 @@ The sitemap is saved in ``<output_path>/sitemap.<format>``.
They are only used in the XML sitemaps. They are only used in the XML sitemaps.
For more information: <http://www.sitemaps.org/protocol.html#xmlTagDefinitions> For more information: <http://www.sitemaps.org/protocol.html#xmlTagDefinitions>
**Example**
Example Here is an example configuration (it's also the default settings):
"""""""
Here is an example of configuration (it's also the default settings):
.. code-block:: python .. code-block:: python

View file

@ -4,7 +4,7 @@ Some history about Pelican
.. warning:: .. warning::
This page comes from a report the original author (Alexis Métaireau) wrote This page comes from a report the original author (Alexis Métaireau) wrote
right after writing Pelican, in December 2010. The information may not be right after writing Pelican, in December 2010. The information may not be
up-to-date. up-to-date.
Pelican is a simple static blog generator. It parses markup files Pelican is a simple static blog generator. It parses markup files
@ -113,7 +113,7 @@ concepts. Here is what happens when calling the ``generate_context``
method: method:
* Read the folder “path”, looking for restructured text files, load * Read the folder “path”, looking for restructured text files, load
each of them, and construct a content object (``Article``) with it. To do so, each of them, and construct a content object (``Article``) with it. To do so,
use ``Reader`` objects. use ``Reader`` objects.
* Update the ``context`` with all those articles. * Update the ``context`` with all those articles.

View file

@ -16,6 +16,9 @@ False, None, etc.), dictionaries, or tuples should *not* be enclosed in
quotation marks. All other values (i.e., strings) *must* be enclosed in quotation marks. All other values (i.e., strings) *must* be enclosed in
quotation marks. quotation marks.
Unless otherwise specified, settings that refer to paths can be either absolute or relative to the
configuration file.
The settings you define in the configuration file will be passed to the The settings you define in the configuration file will be passed to the
templates, which allows you to use your settings to add site-wide content. templates, which allows you to use your settings to add site-wide content.
@ -58,10 +61,10 @@ Setting name (default value) What doe
Python-Markdown documentation for a complete list of Python-Markdown documentation for a complete list of
supported extensions. supported extensions.
`OUTPUT_PATH` (``'output/'``) Where to output the generated files. `OUTPUT_PATH` (``'output/'``) Where to output the generated files.
`PATH` (``None``) Path to look at for input files. `PATH` (``None``) Path to content directory to be processed by Pelican.
`PAGE_DIR` (``'pages'``) Directory to look at for pages. `PAGE_DIR` (``'pages'``) Directory to look at for pages, relative to `PATH`.
`PAGE_EXCLUDES` (``()``) A list of directories to exclude when looking for pages. `PAGE_EXCLUDES` (``()``) A list of directories to exclude when looking for pages.
`ARTICLE_DIR` (``''``) Directory to look at for articles. `ARTICLE_DIR` (``''``) Directory to look at for articles, relative to `PATH`.
`ARTICLE_EXCLUDES`: (``('pages',)``) A list of directories to exclude when looking for articles. `ARTICLE_EXCLUDES`: (``('pages',)``) A list of directories to exclude when looking for articles.
`PDF_GENERATOR` (``False``) Set to True if you want to have PDF versions `PDF_GENERATOR` (``False``) Set to True if you want to have PDF versions
of your documents. You will need to install of your documents. You will need to install
@ -373,19 +376,19 @@ Setting name (default value) What does it do?
alphabetical order; default lists alphabetically.) alphabetical order; default lists alphabetically.)
================================================ ===================================================== ================================================ =====================================================
Theming Themes
======= ======
Theming is addressed in a dedicated section (see :ref:`theming-pelican`). Creating Pelican themes is addressed in a dedicated section (see :ref:`theming-pelican`).
However, here are the settings that are related to theming. However, here are the settings that are related to themes.
================================================ ===================================================== ================================================ =====================================================
Setting name (default value) What does it do? Setting name (default value) What does it do?
================================================ ===================================================== ================================================ =====================================================
`THEME` Theme to use to produce the output. Can be the `THEME` Theme to use to produce the output. Can be a relative
complete static path to a theme folder, or or absolute path to a theme folder, or the name of a
chosen between the list of default themes (see default theme or a theme installed via
below) ``pelican-themes`` (see below).
`THEME_STATIC_PATHS` (``['static']``) Static theme paths you want to copy. Default `THEME_STATIC_PATHS` (``['static']``) Static theme paths you want to copy. Default
value is `static`, but if your theme has value is `static`, but if your theme has
other static paths, you can put them here. other static paths, you can put them here.
@ -393,22 +396,32 @@ Setting name (default value) What does it do?
`WEBASSETS` (``False``) Asset management with `webassets` (see below) `WEBASSETS` (``False``) Asset management with `webassets` (see below)
================================================ ===================================================== ================================================ =====================================================
By default, two themes are available. You can specify them using the `-t` option:
By default, two themes are available. You can specify them using the `THEME` setting or by passing the
``-t`` option to the ``pelican`` command:
* notmyidea * notmyidea
* simple (a synonym for "full text" :) * simple (a synonym for "plain text" :)
You can define your own theme too, and specify its placement in the same
manner. (Be sure to specify the full absolute path to it.)
Here is :doc:`a guide on how to create your theme <themes>`
You can find a list of themes at http://github.com/getpelican/pelican-themes.
There are a number of other themes available at http://github.com/getpelican/pelican-themes.
Pelican comes with :doc:`pelican-themes`, a small script for managing themes. Pelican comes with :doc:`pelican-themes`, a small script for managing themes.
The `notmyidea` theme can make good use of the following settings. I recommend You can define your own theme, either by starting from scratch or by duplicating
using them in your themes as well. and modifying a pre-existing theme. Here is :doc:`a guide on how to create your theme <themes>`.
Following are example ways to specify your preferred theme::
# Specify name of a built-in theme
THEME = "notmyidea"
# Specify name of a theme installed via the pelican-themes tool
THEME = "chunk"
# Specify a customized theme, via path relative to the settings file
THEME = "themes/mycustomtheme"
# Specify a customized theme, via absolute path
THEME = "~/projects/mysite/themes/mycustomtheme"
The built-in `notmyidea` theme can make good use of the following settings. Feel
free to use them in your themes as well.
======================= ======================================================= ======================= =======================================================
Setting name What does it do ? Setting name What does it do ?
@ -444,26 +457,27 @@ adding the following to your configuration::
Asset management Asset management
---------------- ----------------
The `WEBASSETS` setting allows to use the `webassets`_ module to manage assets The `WEBASSETS` setting allows you to use the `webassets`_ module to manage
(css, js). The module must first be installed:: assets such as CSS and JS files. The module must first be installed::
pip install webassets pip install webassets
`webassets` allows to concatenate your assets and to use almost all of the The `webassets` module allows you to perform a number of useful asset management
hype tools of the moment (see the `documentation`_): functions, including:
* css minifier (`cssmin`, `yuicompressor`, ...) * CSS minifier (`cssmin`, `yuicompressor`, ...)
* css compiler (`less`, `sass`, ...) * CSS compiler (`less`, `sass`, ...)
* js minifier (`uglifyjs`, `yuicompressor`, `closure`, ...) * JS minifier (`uglifyjs`, `yuicompressor`, `closure`, ...)
Others filters include gzip compression, integration of images in css with Others filters include gzip compression, integration of images in CSS via data
`datauri` and more. Webassets also append a version identifier to your asset URIs, and more. `webassets` can also append a version identifier to your asset
url to convince browsers to download new versions of your assets when you use URL to convince browsers to download new versions of your assets when you use
far future expires headers. far-future expires headers. Please refer to the `webassets documentation`_ for
more information.
When using it with Pelican, `webassets` is configured to process assets in the When using with Pelican, `webassets` is configured to process assets in the
``OUTPUT_PATH/theme`` directory. You can use it in your templates with a ``OUTPUT_PATH/theme`` directory. You can use `webassets` in your templates by
template tag, for example: including one or more template tags. For example...
.. code-block:: jinja .. code-block:: jinja
@ -471,22 +485,22 @@ template tag, for example:
<link rel="stylesheet" href="{{ ASSET_URL }}"> <link rel="stylesheet" href="{{ ASSET_URL }}">
{% endassets %} {% endassets %}
will produce a minified css file with the version identifier: ... will produce a minified css file with a version identifier:
.. code-block:: html .. code-block:: html
<link href="http://{SITEURL}/theme/css/style.min.css?b3a7c807" rel="stylesheet"> <link href="http://{SITEURL}/theme/css/style.min.css?b3a7c807" rel="stylesheet">
The filters can be combined, for example to use the `sass` compiler and minify These filters can be combined. Here is an example that uses the SASS compiler
the output:: and minifies the output:
.. code-block:: jinja .. code-block:: jinja
{% assets filters="sass,cssmin", output="css/style.min.css", "css/style.scss" %} {% assets filters="sass,cssmin", output="css/style.min.css", "css/style.scss" %}
<link rel="stylesheet" href="{{ ASSET_URL }}"> <link rel="stylesheet" href="{{ ASSET_URL }}">
{% endassets %} {% endassets %}
Another example for javascript: Another example for Javascript:
.. code-block:: jinja .. code-block:: jinja
@ -494,20 +508,20 @@ Another example for javascript:
<script src="{{ ASSETS_URL }}"></script> <script src="{{ ASSETS_URL }}"></script>
{% endassets %} {% endassets %}
will produce a minified and gzipped js file: The above will produce a minified and gzipped JS file:
.. code-block:: html .. code-block:: html
<script src="http://{SITEURL}/theme/js/packed.js?00703b9d"></script> <script src="http://{SITEURL}/theme/js/packed.js?00703b9d"></script>
Pelican's debug mode is propagated to webassets to disable asset packaging, Pelican's debug mode is propagated to `webassets` to disable asset packaging
and instead work with the uncompressed assets. However, this also means that and instead work with the uncompressed assets. However, this also means that
the `less` and `sass` files are not compiled, this should be fixed in a future the LESS and SASS files are not compiled. This should be fixed in a future
version of webassets (cf. the related `bug report version of `webassets` (cf. the related `bug report
<https://github.com/getpelican/pelican/issues/481>`_). <https://github.com/getpelican/pelican/issues/481>`_).
.. _webassets: https://github.com/miracle2k/webassets .. _webassets: https://github.com/miracle2k/webassets
.. _documentation: http://webassets.readthedocs.org/en/latest/builtin_filters.html .. _webassets documentation: http://webassets.readthedocs.org/en/latest/builtin_filters.html
Example settings Example settings
================ ================

View file

@ -35,7 +35,7 @@ To make your own theme, you must follow the following structure::
* `templates` contains all the templates that will be used to generate the content. * `templates` contains all the templates that will be used to generate the content.
I've just put the mandatory templates here; you can define your own if it helps I've just put the mandatory templates here; you can define your own if it helps
you keep things organized while creating your theme. you keep things organized while creating your theme.
Templates and variables Templates and variables
======================= =======================
@ -44,7 +44,7 @@ This document describes which templates should exist in a theme, and which
variables will be passed to each template at generation time. variables will be passed to each template at generation time.
All templates will receive the variables defined in your settings file, if they All templates will receive the variables defined in your settings file, if they
are in all-caps. You can access them directly. are in all-caps. You can access them directly.
Common variables Common variables
---------------- ----------------
@ -55,14 +55,14 @@ All of these settings will be available to all templates.
Variable Description Variable Description
============= =================================================== ============= ===================================================
articles The list of articles, ordered descending by date articles The list of articles, ordered descending by date
All the elements are `Article` objects, so you can All the elements are `Article` objects, so you can
access their attributes (e.g. title, summary, author access their attributes (e.g. title, summary, author
etc.) etc.)
dates The same list of articles, but ordered by date, dates The same list of articles, but ordered by date,
ascending ascending
tags A key-value dict containing the tags (the keys) and tags A key-value dict containing the tags (the keys) and
the list of respective articles (the values) the list of respective articles (the values)
categories A key-value dict containing the categories (keys) categories A key-value dict containing the categories (keys)
and the list of respective articles (values) and the list of respective articles (values)
pages The list of pages pages The list of pages
============= =================================================== ============= ===================================================
@ -182,7 +182,7 @@ dates Articles related to this tag, but ordered by date,
ascending ascending
articles_paginator A paginator object for the list of articles articles_paginator A paginator object for the list of articles
articles_page The current page of articles articles_page The current page of articles
dates_paginator A paginator object for the list of articles, dates_paginator A paginator object for the list of articles,
ordered by date, ascending ordered by date, ascending
dates_page The current page of articles, ordered by date, dates_page The current page of articles, ordered by date,
ascending ascending

View file

@ -12,11 +12,11 @@ file generator, we can take advantage of this.
User Pages User Pages
---------- ----------
GitHub allows you to create user pages in the form of ``username.github.com``. GitHub allows you to create user pages in the form of ``username.github.com``.
Whatever is created in the master branch will be published. For this purpose, Whatever is created in the master branch will be published. For this purpose,
just the output generated by Pelican needs to pushed to GitHub. just the output generated by Pelican needs to pushed to GitHub.
So given a repository containing your articles, just run Pelican over the posts So given a repository containing your articles, just run Pelican over the posts
and deploy the master branch to GitHub:: and deploy the master branch to GitHub::
$ pelican -s pelican.conf.py ./path/to/posts -o /path/to/output $ pelican -s pelican.conf.py ./path/to/posts -o /path/to/output
@ -35,7 +35,7 @@ really easy, which can be installed via::
$ pip install ghp-import $ pip install ghp-import
Then, given a repository containing your articles, you would simply run Then, given a repository containing your articles, you would simply run
Pelican and upload the output to GitHub:: Pelican and upload the output to GitHub::
$ pelican -s pelican.conf.py . $ pelican -s pelican.conf.py .

View file

@ -378,7 +378,7 @@ class PagesGenerator(Generator):
os.path.join(self.path, self.settings['PAGE_DIR']), os.path.join(self.path, self.settings['PAGE_DIR']),
exclude=self.settings['PAGE_EXCLUDES']): exclude=self.settings['PAGE_EXCLUDES']):
try: try:
content, metadata = read_file(f) content, metadata = read_file(f, settings=self.settings)
except Exception, e: except Exception, e:
logger.warning(u'Could not process %s\n%s' % (f, str(e))) logger.warning(u'Could not process %s\n%s' % (f, str(e)))
continue continue

View file

@ -4,13 +4,14 @@ from pelican import signals
License plugin for Pelican License plugin for Pelican
========================== ==========================
Simply add license variable in article's context, which contain This plugin allows you to define a LICENSE setting and adds the contents of that
the license text. license variable to the article's context, making that variable available to use
from within your theme's templates.
Settings: Settings:
--------- ---------
Add LICENSE to your settings file to define default license. Define LICENSE in your settings file with the contents of your default license.
""" """

View file

@ -5,20 +5,22 @@ from pelican import signals
Gravatar plugin for Pelican Gravatar plugin for Pelican
=========================== ===========================
Simply add author_gravatar variable in article's context, which contains This plugin assigns the ``author_gravatar`` variable to the Gravatar URL and
the gravatar url. makes the variable available within the article's context.
Settings: Settings:
--------- ---------
Add AUTHOR_EMAIL to your settings file to define default author email. Add AUTHOR_EMAIL to your settings file to define the default author's email
address. Obviously, that email address must be associated with a Gravatar
account.
Article metadata: Article metadata:
------------------ ------------------
:email: article's author email :email: article's author email
If one of them are defined, the author_gravatar variable is added to If one of them are defined, the author_gravatar variable is added to the
article's context. article's context.
""" """