Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,551,839
Community Members
 
Community Events
184
Community Groups

Create a Confluence plugin to single source content?

Edited

I have an idea for a way to use Confluence to single-source content for reuse in other applications, and I'm wondering if I can create a plugin (or plugins) to accomplish this.

Example: Let's say I have a page of documentation that includes a one-line definition for an "Item ID". I want that exact same definition to show up as a tooltip in a completely separate application that lets users populate "Item ID".

My idea is that I could tag the one-line definition in Confluence using a custom hidden macro, and give it a unique key like "item-id-definition". The macro would have no visible effect on the documentation.

Let's say in total I have 50 of these text strings, each with an associated unique key. I could then have some process run every couple of hours that pulls in every snippet of text that is tagged with this custom macro, and export the text and the key into a separate database or data file. The application needing the text for the tooltip could then lookup the text by key and pull in the content.

Can this be accomplished?

 

 

1 comment

Robert Reiner _smartics_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Aug 16, 2017

HTML defines a unique ID attribute to select an element of a page. Confluence typically sets this attribute for some elements. Please have a look at the HTML source that is generated by Confluence with you browser.

The section macro of our commercial projectdoc Toolbox (but probably there are macros in free add-ons that also do this) renders the ID attribute (I'm one of the authors of the projectdoc Toolbox). But you can also go with the section macro provided by Confluence, if you set a heading in front. That is: the section macro does not render this ID, but you can grab the element, since you know the ID of the heading in front.

It depends on the services you use to fetch this information from a Confluence page on how to integrate a plugin that accesses a page, parses it and returns your fragments. We have a macro (HTML Snippet Macro) that does this, but from the Confluence side. Your use case is the other way round.

If you require to add an extra attribute (that is cannot or do not want to use the ID attribute), this too can be accomplished. But you would need to write a separate macro. Maybe a user macro would be the easiest approach to this.

Maybe you already have macros (also from third parties) that already render the HTML ID attribute. I would recommend to check if any of these does. And if it does, everything on the Confluence side is already done.

Thanks for the reply. I'm not seeing any IDs generated by Confluence when I view the HTML source.

Robert Reiner _smartics_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Aug 18, 2017

Maybe it depends on the version of Confluence you are running?

On a 5.10.8 I get this:

<div class="innerCell">
<h1 id="qqHome-Hello">Hello</h1>
<p>hi</p>
</div>

The 'qqHome' is the (encoded) name of the page the heading (and paragraph) is part of.

OK, I'm able to create those IDs now, thanks. But the issue is that the IDs change whenever the text changes. We'd need the IDs to be static.

Robert Reiner _smartics_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Aug 18, 2017

This depends on your use case, but if the text you change is in the <p> element (replacing "hi" in the example), then h1 would not change. If this does not suite your requirements (because you need to change the heading), you'd need to check for a macro, such as the Section Macro' Identifier parameter (as I mentioned in my first post).

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events