How many pages in a space?

Emily Johnson July 11, 2011

I just want to know how many pages are in a Confluence space without having to manually count or run a SQL query. I know the usage tracker plugin used to do it, and it was disabled by default because it impacted performance, but I cant find it even to run for a bit and then re-disable. Any other ideas>? I dont need anything fancy, just a page count.

Thanks,

Emily

8 answers

1 accepted

3 votes
Answer accepted
MatthewC
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.
July 11, 2011

If you have the Reporting plugin, you could use this markup:

{report-info:space > all pages > size}

OR you could create a user macro.....

Name: pagecount

No Macro Body

Output generates wiki markup (or HTML doesn't really matter)

Template:

## get page manager...

#set($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager'))

#set($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null))

#set($containerManager=$getInstanceMethod.invoke(null,null))

#set($containerContext=$containerManager.containerContext)

#set($pageManager=$containerContext.getComponent('pageManager'))

#set($pageCount=$pageManager.getPages($space,true).size())

Page Count: *$pageCount*

jim kennedy July 17, 2011

The fix described by Matthew above works for me, but only in the current space. If I do {pagecount} I get the number of pages in the current space.

Is there any syntax that would allow me to count the pages in a different space?

Jeremy Largman
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 17, 2011

Hi Jim,

I added another line to the user macro Count Pages in a Space. Check the green tip box.

jim kennedy July 18, 2011

Hi Jeremy, thanks but that doesn't seem to work for me. I should probabaly have mentioned that I'm on version 3.1.

MatthewC
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.
July 18, 2011

Hi Jim, Jeremy's version is a much cleaner solution but it only works for 3.5+. I'm still working with 3.2 in our production instance and the updated example below should (hopefully) work for you (although I haven't got 3.1 to test it on)

jim kennedy July 18, 2011

Thanks Matthew, there are plans to upgrade from 3.1 straight to 3.5. I'm hoping a lot of our problems go away then.

Emily Johnson July 18, 2011

I used the pagecount macro, which you kind of create yourself. (I'm on version 3.5) Worked a treat. Thanks, Matthew!

8 votes
twong_atlassian
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.
July 13, 2011

SQL-- Show number of CURRENT PAGES (as opposed to historical versions of pages) in every space:

SELECT
    spacename,
    COUNT(*)
FROM
    spaces s
JOIN
    content c
ON
    s.spaceid = c.spaceid
WHERE
    c.contenttype='PAGE'
AND prevver IS NULL
GROUP BY
    spacename
ORDER BY
    spacename;
mybucket2018 April 28, 2021

Thanks this helped

3 votes
David Gregory December 29, 2016

One brute force method that I have used is to:

  1. create a page in another space
  2. On that page place the Children Display macro
  3. Edit the macro and Show Descendents as well as fill in the Parent Page with the root of the page tree you wish to count (Space Home)
  4. Export this page to Word
  5. Use the Word native Statistics to get a count of the number of lines
  6. The number of pages will be 1 less than the number of lines since there is a line for the page name
2 votes
K_ Yamamoto
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
November 30, 2016

For Confluence Cloud users, consider using REST API because Confluence Cloud doen't support SQL, Macro, or some Add-ons for stats.

 

A_USER="admin"
A_PASSWD="__YOUR_PASSWORD_HERE__"
INSTANCE_HOST="__YOUR_SUBDOMAIN_HERE__.atlassian.net"
 
# Total number of pages
curl -sGLu ${A_USER}:${A_PASSWD} "https://${INSTANCE_HOST}/wiki/rest/api/search" --data-urlencode 'cql=type IN (blogpost, page)' --data-urlencode 'limit=0' | jq '.totalSize'

 

Refer my related answer at For Confluence Cloud, how do I find the total number of pages? for more detail if you needed.

 

liteyear April 7, 2021

This works well for all pages, provided you heed my note I added to your link about use of passwords being deprecated.

 

I'm interested in how to restrict this search to a single space. I tried adding --data-urlencode 'cqlcontext={"spaceKey":"KEY"}' but it seems to make no difference.

But adding "and space = KEY" to the cql seems to do the trick. Eg:

A_USER="admin"
A_TOKEN="__YOUR_TOKEN_HERE__"
INSTANCE_HOST="__YOUR_SUBDOMAIN_HERE__.atlassian.net"
SPACE_KEY="__YOUR_KEY_HERE__" # Total number of pages curl -sGLu ${A_USER}:${A_TOKEN} "https://${INSTANCE_HOST}/wiki/rest/api/search" --data-urlencode "cql=type IN (blogpost, page) and space = $SPACE_KEY" --data-urlencode 'limit=0' | jq '.totalSize'
1 vote
MatthewC
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.
July 17, 2011

Modification of original user macro which takes the Space Code as the body of the macro

e.g. {pagecount}CONFTEST{pagecount}

## get page manager...

#set($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager'))

#set($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null))

#set($containerManager=$getInstanceMethod.invoke(null,null))

#set($containerContext=$containerManager.containerContext)

#set($pageManager=$containerContext.getComponent('pageManager'))

#set($spaceManager=$containerContext.getComponent('spaceManager'))

#set($targetSpace=$spaceManager.getSpace($body))

#set($pageCount=$pageManager.getPages($targetSpace,true).size())

#set($spaceName=$targetSpace.getName())

Space Name: *$spaceName*

Page Count: *$pageCount*

Milo Test
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.
July 3, 2015

Can this be modified to get a count of child pages of a certain parent page?

0 votes
Jeremy Largman
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
January 29, 2012

I reopened this question. Questions need not be closed just because they're answered :).

0 votes
Jeremy Largman
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 11, 2011

I figured I could write a quick user macro for this, so I went to go look at the available community User Macros, and there's one already. See Count Pages in a Space.

And, yes, I was indeed to my surprise to see that I was the author! Can't remember that at all... So, let me know if that doesn't work on your version and needs an update.

MatthewC
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.
July 11, 2011

Hi Jeremy, I don't think that one works any more, not since they lost the .getPages() from the space object (3.1 cleanup?)

my attempt gets hold of the pageManager object to call it's getPages() method.

Like Irina likes this
Jeremy Largman
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 11, 2011

You're right, sorry about that! I figured out what needs to happen in 3.5 and posted again. You need to use spaceManager:

$spaceManager.findPageTotal($space)
Jonathan Simonoff
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.
October 15, 2012

findPageTotal returns a basically useless number that includes all versions of the pages. The JavaDoc notes "this probably doesn't give the number you are looking for."

Steve Mosley July 21, 2014

Is there any replacement for this in Confluence 5.5? as findPageTotel still appears to reutrn that number which isn't fit for this purpose.

0 votes
Betsy Walker
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.
July 11, 2011

Here's a user macro that does it, accepting a single parameter representing the SpaceKey of the space on which to report:

## pagecount - no body, unprocessed, generates WM
#if ($paramspace)
#set ($space=${paramspace})
#else
#set ($space="WikiHelp")
#end

{report-table}
{space-reporter:space=$space}
{text-sort:space:name|mode=natural|order=ascending}
{space-reporter}
{report-column:title=Space}{report-info:space:name|link=true}{report-column}
{report-column:title=Pages}{report-info:space:all pages > collection:size}{report-column}
{report-table}

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events