Adding a user macro plugin
User Macros are a kind of Confluence plugin module.
User Macro Plugin Modules
User macro plugin modules allow plugin developers to define simple macros directly in the atlassian-plugin.xml
file, without writing any additional Java code. User macro plugin modules are functionally identical to User Macros configured through the administrative console, except that they can be packaged and distributed in the same way as normal plugins.
Configuring a Macro Plugin Module
Macro plugin modules are configured entirely inside the atlassian-plugin.xml
file, as follows:
<atlassian-plugin name='Hello World Macro' key='confluence.extra.helloworld'>
<plugin-info>
<description>Example user macro</description>
<vendor name="Atlassian Software Systems" url="http://www.atlassian.com"/>
<version>1.0</version>
</plugin-info>
<user-macro name='helloworld' key='helloworld' hasBody='true' bodyType='raw' outputType='html'>
<description>Hello, user macro</description>
<template><![CDATA[Hello, $body!]]></template>
</user-macro>
<!-- more macros... -->
</atlassian-plugin>
- The <template> section is required, and defines the velocity template that will be used to render the macro
- All the velocity variables available in User Macros are available in user macro plugin modules
- The name and key of the macro must be specified the same as Macro Plugins
- No class attribute is required
- The attributes of the <user-macro> element match the corresponding configuration for user macros:
Available Attributes
Attribute |
Required |
Default Value |
Allowed Values |
hasBody |
No |
false |
- true – the macro expects a body (i.e. {hello}World{hello})
- false – the macro does not expect a body (i.e. Hello, {name})
|
bodyType |
No |
raw |
- raw – the body will not be processed before being given to the template
- escapehtml – HTML tags will be escaped before being given to the template
- rendered – the body will be rendered as wiki text before being given to the template
|
outputType |
No |
html |
- html – the template produces HTML that should be inserted directly into the page
- wiki – the template produces Wiki text that should be rendered to HTML before being inserted into the page
|