Lilian Besson f167d002c5 Update README.rst 6 years ago
..
test_data b5aaca7a68 adding unit tests to cover badge's option 8 years ago
README.rst f167d002c5 Update README.rst 6 years ago
__init__.py edfd3365af break out tag_cloud from core into plugin 9 years ago
tag_cloud.py 9c38b814b1 Better tags repartition with TAG_CLOUD_MAX_ITEMS 6 years ago
test_tag_cloud.py b5aaca7a68 adding unit tests to cover badge's option 8 years ago

README.rst

tag_cloud
=========

This plugin generates a tag-cloud.

Installation
------------

In order to use to use this plugin, you have to edit(*) or create(+) the following files::

blog/
├── pelicanconf.py *
├── content
├── plugins +
│ └── tag_cloud.py +
└── themes
└── mytheme
├── templates
│ └── base.html *
└── static
└── css
└── style.css *

In **pelicanconf.py** you have to activate the plugin::

PLUGIN_PATHS = ["plugins"]
PLUGINS = ["tag_cloud"]

Into your **plugins** folder, you should add tag_cloud.py (from this repository).

In your theme files, you should change **base.html** to apply formats (and sizes) defined in **style.css**, as specified in "Settings", below.

Settings
--------

================================================ =====================================================
Setting name (followed by default value) What does it do?
================================================ =====================================================
``TAG_CLOUD_STEPS = 4`` Count of different font sizes in the tag
cloud.
``TAG_CLOUD_MAX_ITEMS = 100`` Maximum number of tags in the cloud.
``TAG_CLOUD_SORTING = 'random'`` The tag cloud ordering scheme. Valid values:
random, alphabetically, alphabetically-rev, size and
size-rev
``TAG_CLOUD_BADGE = True`` Optionnal setting : can bring **badges**, which mean
say : display the number of each tags present
on all articles.
================================================ =====================================================

The default theme does not include a tag cloud, but it is pretty easy to add one::


    {% for tag in tag_cloud %}


  • {{ tag.0 }}
    {% if TAG_CLOUD_BADGE %}
    {{ tag.2 }}
    {% endif %}


  • {% endfor %}


You should then also define CSS styles with appropriate classes (tag-1 to tag-N,
where N matches ``TAG_CLOUD_STEPS``), tag-1 being the most frequent, and
define a ``ul.tagcloud`` class with appropriate list-style to create the cloud.
You should copy/paste this **badge** CSS rule ``ul.tagcloud .list-group-item .badge``
if you're using ``TAG_CLOUD_BADGE`` setting. (this rule, potentially long , is suggested to avoid
conflicts with CSS libs as twitter Bootstrap)

For example::

ul.tagcloud {
list-style: none;
padding: 0;
}

ul.tagcloud li {
display: inline-block;
}

li.tag-1 {
font-size: 150%;
}

li.tag-2 {
font-size: 120%;
}

/* ... add li.tag-3 etc, as much as needed */

ul.tagcloud .list-group-item span.badge {
background-color: grey;
color: white;
}

By default the tags in the cloud are sorted randomly, but if you prefers to have it alphabetically use the `alphabetically` (ascending) and `alphabetically-rev` (descending). Also is possible to sort the tags by it's size (number of articles with this specific tag) using the values `size` (ascending) and `size-rev` (descending).