内联汇合用户宏

MrT*_*rTJ 6 macros confluence

如何使用生成内联输出的主体创建汇合宏?以下宏:

## @noparams
<font color="red">$body</font>
Run Code Online (Sandbox Code Playgroud)

适用于本文

Before macro [macro starts here]macro body[macro ends here] after macro.
Run Code Online (Sandbox Code Playgroud)

将创建此HTML代码:

<p>Before macro </p>
<font color="red">macro body</font>
<p>after macro.</p>
Run Code Online (Sandbox Code Playgroud)

如何删除<p></p>标签?

boi*_*eau 3

这是 Confluence 的问题。为了避免这种情况,你必须使用 html 输出。如果正文或宏包含 wiki 标记,那么您将必须手动渲染它。我的解决方法如下:

## Use this macro to avoid new lines:
#macro(doNothing)#end
##
## (Do stuff with body in wiki format, if appropriate)
##
## Convert to html and remove paragraph tags:
#set($renderedhtml = "")
#if ($body && ($body.length()>0))
  #set($globalHelper = $action.getHelper())
  #set($renderedhtml = $globalHelper.renderConfluenceMacro("$body").replaceAll("</?[pP]>",""))
#end
##
## (Do stuff with body in html format, if appropriate)
##
## Output text:
$renderedhtml#doNothing()
Run Code Online (Sandbox Code Playgroud)

编辑:如果您想保留宏中的 p 标签,您将需要修改正则表达式。上面代码中的正则表达式将删除所有 p 标签。

  • 感谢您的答复。不幸的是,我的问题显然不是由我的宏生成的代码中的新段落,而是汇合在我的宏之前插入`&lt;/p&gt;`_before_和`&lt;p&gt;`_after_我的宏,将前面和后面的文本嵌入到新段落中。我也可以取消这些标签吗? (2认同)