So, following up on my transition to pelican, here's a little help for navigating a pelican site. If you've ever wondered why sometimes there's a highlighted menu item at the top, and other times there isn't, read on.
Categories
With Pelican, every post belongs to exactly one category - that category is
'misc'
if one is not provided (and you can override that named by setting
DEFAULT_CATEGORY = 'somethingelse'
in your pelicanconf.py
file).
Alternatively, if the post is in a subdirectory, it's category becomes the
subdirectory name. So if you have a situation like this:
.../content/unicorns/lady-rainicorn.md
The lady-rainicorn
post will be filed under the category of unicorns
.
You can explicitly override this category-from-subdirectory behavior, by
specifying the category in the header of the file, like so:
title: All about Lady Rainicorn
slug: lady-rainicorn
category: adventure-time
Categories are where a lot of the pelican themes get the top navigation bar,
which is referred to as the menu in Pelican. You'll notice that this post is
filed under technology
. If you're viewing this on the main page, that won't
be highlighted, but if you click on the title of this post, you'll see that
technology
will become highlighted. Same deal if you just click on
technology
, which will get you a listing of the latest post in that category,
and a pagination of all previous ones.
Pages
The menu items need not be limited to categories, however. With the popular
notmyidea
template (which is what I've customized for my journal here), if you
create any pages (by putting the file in a content/pages/
directory), then the
title of that page will appear in front of all of the categories in the menu.
These pages don't show up in RSS feeds, though.
Menuitems
Additionally, you can specify other MENUITEMS
in pelicanconf.py
, which will
go in front of all pages and categories. MENUITEMS
is a list of tuples, each
tuple should be composed of a link name, and a url. This is how I link to the
listing of all of my blog posts:
MENUITEMS = [('all', '/blog/archives.html')]
Tags
Finally, you can have zero or more tags attached to a post. Tags, by default, do
not get a feed generated for them. To enable a tag feed, you'll have to set a
line like this in your pelicanconf.py
files:
TAG_FEED_ATOM = "feeds/tag_%s.atom.xml"
Menu highlighting
The notmyidea
template only contains logic for highlighting the active
category. This is why, if you click on 'All' at the top of mine, it doesn't
stay highlighted when you're on that page.
On the other hand, if you click at cycling
at
the menu bar, it will stay highlighted, and you will see a listing of the
articles in that category. But if you click on the cycling
tag in one of those posts - the menu item will not be
highlighted, and you will see some more articles - in particular, right now my
review of Just Ride will also be listed, but it
lives in the category of books
, because that's
where I'm keeping book reviews.
Summary
So there you have it - now you know the differences between categories, tags, pages, and menu items, as far as Pelican is concerned. For me, the bottom line is that I'll probably stick to just using categories, and will try to use tags sparingly. In my transition from WordPress, I cleaned up and removed a whole bunch of tags (since they were either redundant (the same tags kept appearing together), or were too specific (most tags were only used for one post).