Skip to main content

Pelican plugin to set anchor tag's class attribute to differentiate between internal and external links

Project description

Link Class: A Plugin for Pelican

Build Status PyPI Version License

This Pelican plugin allows you to set the class attribute of <a> elements (generated in Markdown by [ext](link)) according to whether the link is external (i.e., starts with http:// or https://) or internal to the Pelican-generated site.

For now, this plugin only works with Markdown. It has been tested with version 3.0+ of the Python-Markdown module and may not work with previous versions.

Installation

This plugin is available as a package at PyPI and can be installed via:

python -m pip install pelican-linkclass

As long as you have not explicitly added a PLUGINS setting to your Pelican settings file, then the newly-installed plugin should be automatically detected and enabled. Otherwise, you must add avatar to your existing PLUGINS list. For more information, please see the How to Use Plugins documentation.

Configuration

In order to avoid clashes with already-defined classes in the user CSS style sheets, it is possible to specify the name of the classes that will be used. They can be specified in the Pelican setting file with the LINKCLASS variable, which must be defined as a list of tuples, like this:

'LINKCLASS' = (('EXTERNAL_CLASS', 'name-of-the-class-for-external-links'),
               ('INTERNAL_CLASS', 'name-of-the-class-for-internal-links'))

The default values for EXTERNAL_CLASS and INTERNAL_CLASS are, respectively, 'external' and 'internal'.

Styling Hyperlinks

One of the possible uses of this plugins is for styling. Suppose that we have the following Markdown content in your article:

This is an [internal](internal) link and this is an
[external](http://external.com) link.

If the default configuration variable values are used, then one possible CSS setting could be:

a.external:before {
    content: url('../images/external-link.png');
    margin-right: 0.2em;
}

(The file external-link.png is also distributed with this plugin. To use it, copy it to the appropriate place in your web site source tree, for instance in theme/static/images/.)

Then, the result will look like the following:

figure

Note that this plugin also works with reference-style links, as in the following example:

This is an [internal][internal] link and this is an
[external][external] link.

 [internal]: internal
 [external]: http://external.com

Contributing

Contributions are welcome and much appreciated. Every little bit helps. You can contribute by improving the documentation, adding missing features, and fixing bugs. You can also help out by reviewing and commenting on existing issues.

To start contributing to this plugin, review the Contributing to Pelican documentation, beginning with the Contributing Code section.

Acknowledgments

Many thanks to Yuliya Bagriy for setting up the package for PyPI, to Lucas Cimon for fixing the issues with pytest, and to Justin Mayer for helping with migration of this plugin under the Pelican Plugins organization.

Author

Copyright © 2015, 2017, 2019, 2021-2023, 2025 Rafael Laboissière (rafael@laboissiere.net)

License

This project is released under the terms of the GNU Affero Public License, version 3 or later.

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

pelican_linkclass-2.1.5.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pelican_linkclass-2.1.5-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file pelican_linkclass-2.1.5.tar.gz.

File metadata

  • Download URL: pelican_linkclass-2.1.5.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pelican_linkclass-2.1.5.tar.gz
Algorithm Hash digest
SHA256 28d58e20fef70d279eb23c5b38c3b38bb10bdf5da0fb8b14459bc1fac98f8c8a
MD5 87ce739b5f6d9a64ea22a6e70d64d547
BLAKE2b-256 24e1d9fbe537c8361a7cf6f380e7fa3412deb35cecabe2564cadd21095bb9454

See more details on using hashes here.

Provenance

The following attestation bundles were made for pelican_linkclass-2.1.5.tar.gz:

Publisher: main.yml on pelican-plugins/linkclass

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pelican_linkclass-2.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for pelican_linkclass-2.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dab4e9fce041fb6d631dbe3b8459200b8f58f52cfbca40b5287d59d08aff66ed
MD5 fad994848eada9b04002b3dd4dba401a
BLAKE2b-256 35916773ed7b5920792d7ed1c8ddec93d85df001e41f57122da2df37c5faa8c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pelican_linkclass-2.1.5-py3-none-any.whl:

Publisher: main.yml on pelican-plugins/linkclass

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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