Template Tags

Zinnia provides several template tags based on inclusion_tag system to create some widgets in your Web site’s templates.


The presence of the template argument in many template tags allow you to reuse and customize the rendering of a template tag in a generic way. Like that you can display the same template tag many times in your pages but with a different appearance.

To start using any of the following template tags you need to load them first at the top of your template:

{% load zinnia %}


Display the latest entries.

zinnia.templatetags.zinnia.get_recent_entries(number=5, template='zinnia/tags/entries_recent.html')

Return the most recent entries.

Usage examples:

{% get_recent_entries %}
{% get_recent_entries 3 %}
{% get_recent_entries 3 "custom_template.html" %}
{% get_recent_entries template="custom_template.html" %}


Display the latest entries marked as draft.

zinnia.templatetags.zinnia.get_draft_entries(number=5, template='zinnia/tags/entries_draft.html')

Return the last draft entries.

Usage examples:

{% get_draft_entries %}
{% get_draft_entries 3 %}
{% get_draft_entries 3 "custom_template.html" %}
{% get_draft_entries template="custom_template.html" %}


Display random entries.

zinnia.templatetags.zinnia.get_random_entries(number=5, template='zinnia/tags/entries_random.html')

Return random entries.

Usage examples:

{% get_random_entries %}
{% get_random_entries 3 %}
{% get_random_entries 3 "custom_template.html" %}
{% get_random_entries template="custom_template.html" %}


Display entries similar to an existing entry.

zinnia.templatetags.zinnia.get_similar_entries(context, number=5, template='zinnia/tags/entries_similar.html')

Return similar entries.

Usage examples:

{% get_similar_entries %}
{% get_similar_entries 3 %}
{% get_similar_entries 3 "custom_template.html" %}
{% get_similar_entries template="custom_template.html" %}


Display an HTML calendar with date of publications.

If you don’t set the year or the month parameter, the calendar will look in the context of the template if one of these variables is set in this order : (month, day, object.creation_date).

If no one of these variables is found, the current month will be displayed.

zinnia.templatetags.zinnia.get_calendar_entries(context, year=None, month=None, template='zinnia/tags/entries_calendar.html')

Return an HTML calendar of entries.

Usage examples:

{% get_calendar_entries %}
{% get_calendar_entries 2011 4 %}
{% get_calendar_entries 2011 4 "custom_template.html" %}
{% get_calendar_entries template="custom_template.html" %}
{% get_calendar_entries year=object.creation_date|date:"Y" month=12 %}


Display the archives by month.


Return archives entries.

Usage examples:

{% get_archives_entries %}
{% get_archives_entries "custom_template.html" %}


Display all the archives as a tree.


Return archives entries as a tree.

Usage examples:

{% get_archives_entries_tree %}
{% get_archives_entries_tree "custom_template.html" %}


Display all the published authors.

zinnia.templatetags.zinnia.get_authors(context, template='zinnia/tags/authors.html')

Return the published authors.

Usage examples:

{% get_authors %}
{% get_authors "custom_template.html" %}


Display all the published categories.

zinnia.templatetags.zinnia.get_categories(context, template='zinnia/tags/categories.html')

Return the published categories.

Usage examples:

{% get_categories %}
{% get_categories "custom_template.html" %}


Display a hierarchical tree of all the categories available.

zinnia.templatetags.zinnia.get_categories_tree(context, template='zinnia/tags/categories_tree.html')

Return the categories as a tree.

Usage examples:

{% get_categories_tree %}
{% get_categories "custom_template.html" %}


Store in a context variable a queryset of all the published tags.


Return the published tags.

Usage example:

{% get_tags as entry_tags %}


Display a cloud of published tags.

zinnia.templatetags.zinnia.get_tag_cloud(context, steps=6, min_count=None, template='zinnia/tags/tag_cloud.html')

Return a cloud of published tags.

Usage examples:

{% get_tag_cloud %}
{% get_tag_cloud 9 %}
{% get_tag_cloud 9 3 %}
{% get_tag_cloud 9 3 "custom_template.html" %}
{% get_tag_cloud template="custom_template.html" %}


Display the latest comments.

zinnia.templatetags.zinnia.get_recent_comments(number=5, template='zinnia/tags/comments_recent.html')

Return the most recent comments.

Usage examples:

{% get_recent_comments %}
{% get_recent_comments 3 %}
{% get_recent_comments 3 "custom_template.html" %}
{% get_recent_comments template="custom_template.html" %}


Display the latest linkbacks.

zinnia.templatetags.zinnia.get_recent_linkbacks(number=5, template='zinnia/tags/linkbacks_recent.html')

Return the most recent linkbacks.

Usage examples:

{% get_recent_linkbacks %}
{% get_recent_linkbacks 3 %}
{% get_recent_linkbacks 3 "custom_template.html" %}
{% get_recent_linkbacks template="custom_template.html" %}


Display a Digg-like pagination for long list of pages.

zinnia.templatetags.zinnia.zinnia_pagination(context, page, begin_pages=1, end_pages=1, before_pages=2, after_pages=2, template='zinnia/tags/pagination.html')

Return a Digg-like pagination, by splitting long list of page into 3 blocks of pages.

Usage examples:

{% zinnia_pagination page_obj %}
{% zinnia_pagination page_obj 2 2 %}
{% zinnia_pagination page_obj 2 2 3 3 %}
{% zinnia_pagination page_obj 2 2 3 3 "custom_template.html" %}
{% zinnia_pagination page_obj begin_pages=2 template="custom_template.html" %}


Display the breadcrumbs for the pages handled by Zinnia.

zinnia.templatetags.zinnia.zinnia_breadcrumbs(context, root_name='', template='zinnia/tags/breadcrumbs.html')

Return a breadcrumb for the application.

Usage examples:

{% zinnia_breadcrumbs %}
{% zinnia_breadcrumbs "News" %}
{% zinnia_breadcrumbs "News" "custom_template.html" %}
{% zinnia_breadcrumbs template="custom_template.html" %}


Store in a context variable a Template choosen from his position whithin a loop of entries.

zinnia.templatetags.zinnia.zinnia_loop_template(context, default_template)

Return a selected template from his position within a loop and the filtering context.

Usage example:

{% for object in object_list %}
  {% zinnia_loop_template "my-template.html" as template %}
  {% include template %}
{% endfor %}


Display the statistics about the contents handled in Zinnia.


Return statistics on the content of Zinnia.

Usage examples:

{% zinnia_statistics %}
{% zinnia_statistics "custom_template.html" %}


Display the Gravatar image associated to an email, useful for comments.

zinnia.templatetags.zinnia.get_gravatar(email, size=80, rating='g', default=None, protocol='http')

Return url for a Gravatar.

Usage examples:

{% get_gravatar user.email %}
{% get_gravatar user.email 50 %}
{% get_gravatar user.email 50 "PG" %}
{% get_gravatar user.email 50 "PG" "identicon" "https" %}
{% get_gravatar user.email rating="PG" protocol="https" %}


Insert a non-breaking space between the last two words of your sentence.

zinnia.templatetags.zinnia.widont(*args, **kwargs)

Add an HTML non-breaking space between the final two words of the string to avoid “widowed” words.

Usage example:

{{ variable|widont }}


Return the Python week number of a date.


Return the Python week number of a date. The django |date:”W” returns incompatible value with the view implementation.

Usage example:

{{ date_variable|week_number }}


Return an admin URL for managing the comments, whatever the the application used.


Return the admin URLs for the comment app used.

Usage example:

{% url 'changelist'|comment_admin_urlname %}


Return an admin URL for managing the users, whatever the the application used.


Return the admin URLs for the user app used.

Usage example:

{% url 'changelist'|user_admin_urlname %}