Select your language

Obix CommonMark Content Plugin

This content plugin parses CommonMark and GitHub-Flavored Markdown, using the CommonMark parser, provided by the League of Extraordinary Packages.

Raison d'être

Although my HTML and CSS skills are more than adequate for writing website content without the need for a WYSIWYG editor, it can be cumbersome and time-consuming. However, using a WYSIWYG editor has its own disadvantages. Markdown offers a nice compromise between WYSIWYG editing and manually writing HTML and CSS.

If one does not want to use the TinyMCE editor, write raw HTML and CSS, or install a third-party extension in Joomla, one can use CodeMirror, which is bundled by default. Content created with Markdown, whether through CodeMirror or without an editor, is not displayed as regular HTML by default. This plugin parses Markdown content and renders it as standard HTML.

Minimal requirements

Joomla! 5.0
PHP 8.2

BEWARE: Installing this plugin on a server runnning a PHP version that does not match the required minimum, will result in a fatal error and render the site unusable!

Installation and configuration

Installation is the same as for any other Joomla plugin. If it is installed for the first time, as opposed to upgraded, the plugin is supposed to be activated automatically. Doesn't do any harm to check though :)

Configuration

Basic

Enabled for editors
Only enables CommonMark functionality for selected editors.
Enable syntax highlighting
Enables syntax highlighting. Only applicable to CodeMirror editor.
Enable Markdown parsing
Enables parsing of Markdown in content. Currently only in Articles (com_content) and Custom Modules (mod_custom).

Security

HTML input
strip: Strip all HTML
allow: Allow all HTML input as-is
escape: Escape all HTML
Allow unsafe links
Prevent parsing unsafe links: javascript:, vbscript:, file:, data: (except for data:image in png, gif, jpeg, or webp format).
Maximum nesting level
If you need to parse untrusted input, consider setting a reasonable max_nesting_level (perhaps 10-50) depending on your needs. Once this nesting level is hit, any subsequent Markdown will be rendered as plain text. Markdown content which is too deeply-nested (like 10,000 nested blockquotes: ‘> > > > > …’) could result in long render times or segfaults.

Flavor & Extensions

Flavor
CommonMark: Parses Markdown according to the CommonMark Specifications
GitHub-Flavor: Parses Markdown according to the GitHub Flavored Markdown Specifications
Extensions

Manually select individual additonal extensions.

GitHub-Flavor

The following extensions are automatically included when the GitHub flavor is selected and can also be manually chosen when using the CommonMark flavor.

Autolink
Enables automatic linking of URLs within text without needing to wrap them with Markdown syntax.
Disallowed Raw HTML
Disables certain kinds of HTML tags that could affect page rendering.
Strikethrough
Allows using tilde characters (~~) for ~strikethrough~ formatting.
Tables
Enables you to create HTML tables.
Task Lists
Allows the creation of task lists.
Other
Attributes
Add HTML attributes (like id and class) from within the Markdown content.
Description Lists
Create <dl> description lists using Markdown Extra’s syntax.
Embed
Embed rich content (like videos, tweets, and more) from other websites.
External Links
Tags external links with additional markup.
Footnotes
Add footnote references throughout the document and show a listing of them at the bottom.
Front Matter
Parses YAML front matter from your Markdown input.
Heading Permalinks
Makes heading elements linkable.
Inlines Only
Only includes standard CommonMark inline elements - perfect for handling comments and other short bits of text where you only want bold, italic, links, etc..
Smart Punctuation
Intelligently converts ASCII quotes, dashes, and ellipses to their fancy Unicode equivalents
Table of Contents
Automatically inserts links to the headings at the top of your document.

Points of attention

  • Please note that only UTF-8 and ASCII encodings are supported. If your Markdown uses a different encoding please convert it to UTF-8 before running it through this library.
  • Currently only article and custom module content is parsed.
  • Use caution when enabling the plugin on sites with existing content. If the content includes HTML, ensure the plugin's HTML input security settings are configured to allow all HTML input as-is.