MD Composer extras

MD Composer Extras

This theme component adds few formatting options in the composer : underline, align center, align right, justify and strikethrough. You can customize the text of each button in the settings, making it compatible with every languages. Exist in rtl version (change align right to align left).

Repository link


Preview the theme component on the theme creator forum


This theme component is an alternative of the Discourse Formatting Toolbar, I don’t recommend using both.

I recommend the plugin, but if you don’t want to (or can’t) install a plugin, this theme component might add enough options in the composer for you.

Also, to adapt the the component in mobile devices, I hid some buttons : bullet list, list and justify. They seemed the less helpful in this device.

For RTL languages forums, here is the rtl version : GitHub - iunctis/md-composer-extras-rtl: Add some formatting option in your discourse composer (rtl version)

Let me know if there is some issue !


I used some work done by @Johani in his theme components to add translations of the elements, and auto-integration of fa5 icons.


It becomes like this if I use alignin together with underline.

That’s a limitation of the div align code, you need to add a line between the div align and your text

<div align="center">


That’s why I used a bbcode in my formatting toolbar, but I could only use the div in this theme component.

I’ll probably add an extra line by default and a little explanation


I upgraded the component to add those extra lines by default, now, when you use a align button and the underline button, you’ll have something like this

What are the disadvantages of using the theme-component?

The plugin is easier to customize, we can choose which buttons will appear or not, and there are some additional options like color or a float button that can do something like this with the image


Quite amazing what can be done with theme components! Well done.


Nicely done :slight_smile:
Do you think it’s possible to somehow to convert the HTML tags to some default tag like [Center] and something in the backend will convert it back (for UI reasons)? :slight_smile:

At the time, it wasn’t possible to create some bbcodes easily with theme components, I don’t know if it is now.

For now, if you want bbcode center and a button in the composer, the best way is to use the plugin : Formatting toolbar

1 Like

A tag like [center] will still require a plugin but you’re correct @Steven :+1:

At the time of this component’s creation you had to use HTML <div> tags. However, you can now use [wrap="foo"][/wrap] in themes / components.

You can read more about that here

Here’s a simple example

Some center aligned text 

would create this markup when the post is cooked

<div class="d-wrap" data-wrap="center">
  <p>Some center aligned text</p>

which you can then target with a CSS attribute selector like so

[data-wrap="center"] {
  text-align: center;

and that would create something like this in both the composer preview and the rendered post


Some right aligned text 

and that would result in this cooked markup

<div class="d-wrap" data-wrap="right">
  <p>Some center aligned text</p>

You can then add this CSS

[data-wrap="right"] {
  text-align: right;

for this result

Since the component currently uses the HTML align attribute, this change should be 100% backwards compatible.

Give it a go whenever you have the time and feel free to PM me if you have any questions about that.


I just submitted pull requests for the wrap components.


I added further pull requests for float left, with a CSS option for float right, moving the strikethrough button to be with the bold, italics, and underline buttons, and created a basic columns button. The last may be better as its own component or pushed to the pop up menu.

I removed the pull request; it needs further modifications. I am also looking to add superscript and subscript buttons, but once you add in calendar events, slick, and tiles, there are too many buttons on the composer in mobile’s vertical composer. It shouldn’t be a problem in horizontal, but if all buttons should be accessible from either menu, then they should be moved into the pop up.

Any thoughts, @Steven, on how you want to handle this?

I will just split the main js into two files and work on some responsive CSS.

Ideally we should also add settings to disable/hide the buttons as desired.

EDIT: I’ve implemented the changes mentioned (but elements do not have an option to be hid outside of CSS) and just need to test the changes before submitting a PR.


That PR should be good now, @Steven.

Responsiveness and New Buttons by thw26 · Pull Request #8 · iunctis/md-composer-extras · GitHub

This PR implements responsiveness, floats, columns, superscript, and subscript. See the README for how columns work.


No idea why I am. Getting this. Just uploaded the other day. I’m on the lastest version of this. At least that’s what it tells me.

1 Like

I pushed an upgrade recently but it should work correctly, I just tested on a website on desktop and mobile

Can you try deleting the component and reinstall it ? It seems broken on your forum

Or do you use also the formatting toolbar plugin ? It might create double icons


OK thanks I’ll look and do what you say happy birthday too :slight_smile:


Is it possible to hide some icons?

Which ones do you want to hide? I’ll help you do that

Strike, sub, sup Thanks!

Easiest way would be to add these css lines in your theme, in Common > CSS

.d-editor-button-bar .strikethrough_button, .d-editor-button-bar .superscript_button, .d-editor-button-bar .subscript_button {
    display: none;