Last week I was prompted and inspired to make a fun new Lektor Plugin, and promised more
I just made another @getlektor plugin! Upon request, kind of. This one was a fun one; Jinja-ified Content. This makes 3 or 4 I need to put on that list! I better get to it! https://t.co/hpoj3eHqJr
— Joseph Nix (@nixjdm) April 13, 2018
so now I'm delivering! Today I unveil four shiny new Lektor plugins, and a new Lektor theme!
All of these plugins I've added to the plugin list on getlektor.com.
This was the kick-in-the-pants motivator for all of this. It got my blood pumping.
Jinja is a super useful tool, and Lektor makes great use of it already. Even when I was starting out with Lektor I saw that not only can you use Jinja inside your template files, but in your models too. That's really cool! But... I couldn't use them in Content. :( "Oh well, I don't really need that. I'll make do." I said to myself at the time. And time slipped on by.
Until just last week someone came to the Lektor docs page listing the plugins, and wanted the same thing. Suddenly it all came back to me, and now, with the validation that I was at least half-way normal for wanting the feature in the first place. Others were out there like me. So I got to work, and now you can use the result. You can now use Jinja in any Content field that is string-like, i.e. strings, HTML, Markdown, reStructuredText, Asciidocs, etc. The Content has access to the normal Lektor Template Context and any other filters provided by other plugins. The Content is rendered with Jinja first, and then formatted if that's relevant, as it would be for Markdown.
I find this plugin very useful when I quickly want to sling some Jinja, and test some syntax or expression. Instead of tracking down which template needs modifying, and where in the page a given section of HTML or {% block %}
even is, I an just open a fresh page and throw something in the body content. Much faster test.
In my opinion, this is the fanciest of the plugins I'm publishing today. If you're curious about plugin development, check out my source code for it.
The next three plugins we've had internally here at Terminal Labs, using them for this website. We just broke them out.
The Natrual Language Toolkit is pretty cool, and used a lot in Data Science and Machine Learning. Here, we give it perhaps one its most trivial tasks of helping to build a static sites <meta>
for SEO ;)
This plugin offers three "simple" Jinja filters that use nltk to allow you determine a string's keywords, sentences, and first sentence. That last one is just a little sugar on the second, of course. This was born out of a combination of wanting a little better SEO on our site, classic programming "laziness", plus a desire to have a little more fun with nltk. Instead of using our brains to actually come up with keywords and descriptions for our html <meta>
tags, especially on many old pages, we generate them from the content of the page with these tags.
Of all of Django's builtin template tags, over the years I think I've had to use slugify the most. It's a staple, and indispensable. Any time I work on a project that uses Jinja instead, I end up making it. This Lektor site was no exception. It's just too common to need to slugify some string. You can now use this-is-a-test
to get this-is-a-test
.
Going hand in hand with the Natural Language plugin, we needed to take our content fields, that had HTML all mixed up in them, and treat turn them into text before NLTK could take over. Not doing that resulted in some very unuseful keywords from some alien language. You can use this plugin to transform
</head> <body> <div class="top_row"> <a draggable="false" href="/"> <div id="logo_box"> <img draggable="false" src="/static/images/logo.svg?h=3459f811" alt="terminal labs"> <div class="logo_subtext">Python Mercenaries</div> </div> </a>
into Python Mercenaries
. Pretty nifty, right? Because of the handiness of the Jinja-Content plugin, I just tested this and tried it right here in this page. Proof. That really is useful.
We've grabbed the Number #2 Theme spot over at https://github.com/lektor/lektor-themes !
Theming is still pretty new to Lektor, so I thought change this site wot use a theme of it's own style. Now anyone can easily use this retro terminal style too! It's got a fully functional example-site you can trivially get up and running. Just download it, navigate into the example-site
dir, and run lektor server
. I took a few screenshots too.
This got me a little more exposure to the theming system by getting my hands dirty with it, which feels nice. I like to get dirty. It's food for thought as the Lektor Themes continues to develop. I encourage going through this exercise for your websites :)
That's a wrap! Go Get Lektor!