Skip to main content

The Lektor Shortcodes plugin allows you to use shortcodes (shortcodes are something like custom tags) in your fields (not templates), so your content doesn't have to have repetitive snippets over and over.

Project description

Lektor Shortcodes

PyPI

The Lektor Shortcodes plugin allows you to use shortcodes (shortcodes are something like custom tags) in your fields (not templates), so your content doesn't have to have repetitive snippets over and over.

For example, my blog has some specific HTML that I add when I want an image with a border and caption to be displayed. The HTML looks like this:

    <div class="alignright">
        <a href="image-large.jpg">
            <img src="image.jpg" />
            <span class="caption">The caption</span>
        </a>
    </div>

Copy-pasting this every time gets tedious, and I have to search and replace it in all the content files every time I want to make a change. With the shortcodes plugin, this can be written as:

[% image align=right link="image-large.jpg" image=image.jpg caption="The caption" %]

Much easier, cleaner and less repetitive.

Installation

To install the plugin, just add lektor-shortcodes to your plugins from the command line:

lektor plugins add lektor-shortcodes

Usage

Using the plugin is simple. Just create a config file called shortcodes.ini in your configs directory and specify some shortcode templates. The templates are full Jinja templates, although (due to some limitations of ini files) they need to be on one line.

For instance, for the example above, the config file could be:

[global]
image = '<div class="align{{ align }}">{% if link %}<a href="{{ link }}"{% if not link.startswith("http") %} data-lightbox="gallery"{% endif %}>{% endif %}<img src="{{ image }}">{% if link %}</a>{% endif %}{% if caption %}<span class="caption">{{ caption }}</span>{% endif %}</div>'

This will allow you to use shortcodes with optional arguments, like so:

# An image with no caption or link:
[% image align=right image=hello.jpg %]


# An image with a link:
[% image align=right link=http://www.example.com image=hello.jpg %]

# Link and caption:
[% image align=right link=http://www.example.com image=hello.jpg caption="Hello!" %]

Shortcodes defined within the section named global will be processed automatically inside any of your site’s Markdown content. It is also possible to define shortcodes which are only expanded when the Jinja2 template for a page explicitly requests it. Shortcodes defined in any section not named global will only be applied when the template passed the content through a Jinja2 filter named shortcode. For example, if your HTML template references a field called body, you may request expanding shortcodes defined within the body-only section of your config file, like so:

{{ body|shortcodes(section="body-only") }}

This will enable all shortcodes from the specified section, in addition to all globally defined shortcodes. If no section is specified, the filter defaults to the section named main.

Miscellanea

If you find a bug or have a feature request, please open an issue or file a PR. Thanks!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lektor-shortcodes-0.2.4.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

lektor_shortcodes-0.2.4-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file lektor-shortcodes-0.2.4.tar.gz.

File metadata

File hashes

Hashes for lektor-shortcodes-0.2.4.tar.gz
Algorithm Hash digest
SHA256 186d96e09de38009aa1093ea014f10613684b9f95b19ac47374ade86bed771cb
MD5 bdc56d197bc5d2a70d3c0c51b3258405
BLAKE2b-256 20409a6cffef43d10db1adae78ad57f34c9dac4ca95936090931b1b4bb0ef151

See more details on using hashes here.

File details

Details for the file lektor_shortcodes-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for lektor_shortcodes-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b29e9283a5b3aa48518a82356b844e5db7667743f70ed55bc334c9999cf694a3
MD5 51ef83c767dede8c426f9f854924ab24
BLAKE2b-256 58740e600f3c892a665baf2b8eb7c3c8a3e668d015d16c3d2a3e94b918e80f9a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page