Day 7
Today we bring a smattering of weblog.lol updates all centered around navigating your weblog. Yay!
First things first, though: as this little baby weblog service continues to grow before our collective eyes, I think it’s important to pause for a moment and review some terminology. Given today’s updates, this will hopefully be helpful. (And without a solid understanding of the points below, things might become confusing.)
So far we’ve talked about paths and slugs. Now let’s talk about locations.
First, a diagram:
https://foobar.weblog.lol/this-is-the-path/this-is-the-slug
| | |
address path slug
|___________location_____________|
The key points here:
- The slug is the last bit of a blog post, usually derived from the post title, but you can manually set a slug in your post metadata (
Slug: my-so-called-life
). - The path comes after the URL and before the slug. It can be set dynamically, by defining your post path format in your configuration, or by supplying a specific path in your post metadata (
Path: /thoughts/secrets/
). - The location is everything after the weblog address, consisting of the path (if one is set) + the slug.
The last term, location, is new. And with today’s update, you can now specify a location in your post metadata if you’d like. The location is the end-all-be-all of accessing something on your weblog. If a location has been specified, paths and slugs become irrelevant: the location takes precedence, and it defines how the post/page will be accessed.
These are all examples of valid location metadata:
-
Location: /totally/arbitrary/location
-
Location: /pages/about
-
Location: /lol
In all three of the examples above, the post/page would be accessible at that exact location. Doesn’t matter if a slug is set, doesn’t matter if a path is set.
Got it? Awesome. Because you’re going to need to remember locations for this next thing.
Weblog Navigation
Today’s update brings another fun new feature: the {navigation}
tag! To use it, you’ll first want to configure your navigation by setting it up in your configuration file, like this:
Navigation: about, favorites, thoughts/random
The format here is a comma-separated list of page locations. See, I told you that locations would be important! You’re not specifying the slugs or titles here (though those may actually match the location; it just depends on your setup); you’re specifying the actual location where the post or page can be accessed.
With that established, you can drop {navigation}
in your page template, and you’ll get a nice semantic <nav>
element with a list of your specified pages (including the page titles, which is nice because if you rename those pages your nav will update automatically as well). You can style this however you’d like, but I’ll soon have an updated template available that shows how to do this.
Two notes about navigation:
- For the time being, the navigation is “dumb” in that it’s not aware of the pages that visitors are accessing. This is in contrast to the recent post list, which has that awareness (when you’re visiting a specific post, that post isn’t a hyperlink in the recent posts list because it’s the active page). Anyway, don’t worry, this same treatment will be applied to the navigation soon.
- This approach to navigation isn’t for everyone. If you find it useful, great! But you may be equally happy to manage your navigation directly in your template file, which is totally cool as well.
Landing Page
One more new feature today, which is the ability to specify a landing page. Previously, your weblog would default to the post recent post. That doesn’t work for everyone, so now you can specify a landing page if you’d like. (If you don’t, the previous behavior will continue to apply.)
To set your landing page, just add this to your configuration:
Landing page: my-awesome-landing-page
And yeah, you guessed it—the my-awesome-landing-page
is a location. Make sure it’s valid, because I didn’t have time to add any kind of validation for this and I don’t know what happens if you put an invalid location there. (Not even joking — I don’t even have time to proofread this post because I’m four minutes away from going to hang out with my kids and play some video games.)
Other updates
- Fixed an issue where an invalid timezone setting would render your weblog totally inaccessible (oops, sorry)
- Configured an exclusion for pages so that the global post path format doesn’t apply to them
- The Recent Pages list on the weblog.lol UI now displays pages in alphabetical order (while Recent Posts is in chronological order)
- the
{permalink}
tag would sometimes include malformed URLs with double-slashes, but not any more
That’s all for now! Thanks, as always, for enduring the quirks and glitches with the weblog. See you again tomorrow, behind yet another door.
— Adam