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

Next challenges

Recent achievements

  • Global
  • Personal

Recognition

  • Give kudos
  • Received
  • Given

Leaderboard

  • Global

Trophy case

Kudos (beta program)

Kudos logo

You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.

View group

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

How to link to Space home in User Macro?

This macro lets you enter a page name, and prints "This is the <Page Name> page in the <Space Name> space"

## @param PageToInclude:title=Page to Include|type=confluence-content|required=true|desc=To specify a page in a different space, use SPACEKEY:Page Title.

#if ( $paramPageToInclude.indexOf(":") == -1 )
  #set ( $spaceKey = $space.key )
  #set ( $contentTitle = $paramPageToInclude)
#else
  #foreach ( $part in $paramPageToInclude.split(":") )
    #set ( $spaceKey = $part )
    #break
  #end
  #foreach ( $part in $paramPageToInclude.split(":") )
    #set ( $contentTitle = $part )
  #end
#end


<br>
This is the
<ac:link>
    <ri:page ri:content-title="$!contentTitle" ri:space-key="$spaceKey"/> $!contentTitle
</ac:link>
page in the
     $spaceManager.getSpace($spaceKey).getName()
space.

The <PageName> line is a link to the page, and it works. The <SpaceName> displays the name of the space correctly. But when I try to make the <SpaceName> line into a link, like this:

<ac:link>
    <ri:page ri:content-title=$spaceManager.getSpace($spaceKey).getName()>
</ac:link>

...it doesn't show the full name. For instance, it says "Testing" instead of the correct name, "Testing Space", and of course the link it creates is dead.

 

 

 

 

1 answer

1 accepted

0 votes
Answer accepted

Confluence and Velocity don't have a built in way of linking to a page without showing the page name. Therefore, you have to build the link yourself:

## @param PageToInclude:title=Page to Include|type=confluence-content|required=true|desc=To specify a page in a different space, use SPACEKEY:Page Title.

#if ( $paramPageToInclude.indexOf(":") == -1 )
#set ( $spaceKey = $space.key )
#set ( $contentTitle = $paramPageToInclude)
#else
#foreach ( $part in $paramPageToInclude.split(":") )
#set ( $spaceKey = $part )
#break
#end
#foreach ( $part in $paramPageToInclude.split(":") )
#set ( $contentTitle = $part )
#end
#end
#set ( $linkSpace = $spaceManager.getSpace($spaceKey) )

<p> </p>
<p> This is the
<ac:link>
<ri:page ri:content-title="$!contentTitle" ri:space-key="$spaceKey"/>
</ac:link>
page in the
<a href="$linkSpace.homePage.urlPath"> $linkSpace.name </a>
space.
</p>

That works. Thanks!

One question: What's the difference between ".name" (which you used) and ".getname" (which I had used)?

Hi Shawn,

It's exactly the same. Velocity has a name-shortening shortcut built in, so if you have a procedure with no parameters (like .getName()) then you can refer to it without the get and make the first capital letter small (.name) and it will refer to the same thing.

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Confluence Cloud

Introducing Confluence Cloud for Microsoft Teams (Available for Preview!)

Hi Atlassian Community, Remote work has shifted how teams collaborate, and we’ve heard from many of you that Microsoft Teams has become mission critical to many of your workflows, from how you chat...

2,483 views 21 19
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you