101 lines
4.0 KiB
ReStructuredText
101 lines
4.0 KiB
ReStructuredText
|
tag_cloud
|
||
|
=========
|
||
|
|
||
|
**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/tag-cloud>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
|
||
|
|
||
|
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::
|
||
|
|
||
|
<ul class="tagcloud">
|
||
|
{% for tag in tag_cloud %}
|
||
|
<li class="tag-{{ tag.1 }}">
|
||
|
<a href="{{ SITEURL }}/{{ tag.0.url }}">
|
||
|
{{ tag.0 }}
|
||
|
{% if TAG_CLOUD_BADGE %}
|
||
|
<span class="badge">{{ tag.2 }}</span>
|
||
|
{% endif %}
|
||
|
</a>
|
||
|
</li>
|
||
|
{% endfor %}
|
||
|
</ul>
|
||
|
|
||
|
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 <span>.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).
|