Jump to content

"Virtual Pages" to organize root level pages and keep Admin Pages Tree tidy


Recommended Posts


SEO matters and so hiding pages behind a "section" is not necessarily good - example:

  • Current practice is to show the pages "Foo, Bar, Baz" in a section.
    • https://www.example.com/resources/foo
    • https://www.example.com/resources/bar
    • https://www.example.com/resources/baz
  • For SEO reasons, it's better to show the page at root level like so:
    • https://www.example.com/foo
    • https://www.example.com/bar
    • https://www.example.com/baz


This design is fully possible today. However, the root folder becomes disorganized when all pages are published in the root - and the pages tree structure is not of much use when all pages are published in the root.


As a publisher, when publishing many pages that have a root level url, I want to organize my pages below a Virtual Page (that doesn't have a url), so that pages are organized in a Pages Tree Structure (using "Virtual Pages").

What is a "Virtual Page"?

  • Virtual Page can never have a name (Admin -> Page -> Settings -> Name).
    • The Name field is simply blank
    • The Name field is never used in the url for child pages.
  • Virtual Page is a container used to organize other pages.
  • Virtual Page is never shown in the front-end.
  • Virtual Page is shown in the Editing interface only.
  • Virtual Page might have a Template - but the template can only be used in the Admin interface.
  • Virtual Page might have fields (Title, Summary, Text etc.) - but the contents cannot be shown online.
Link to comment
Share on other sites

Hello @SwimToWin,

just out of curiosity:

1 hour ago, SwimToWin said:

For SEO reasons, it's better to show the page at root level like so:

Is there a source for this statement? I don't quite believe that this makes any difference at all.

Also you can already achieve this by using for example URL segments on your homepage: https://processwire.com/docs/front-end/how-to-use-url-segments/
You would just have to check the URL segment with the page somewhere else in the page tree.

Regards, Andreas

  • Like 5
Link to comment
Share on other sites

3 hours ago, SwimToWin said:


SEO matters and so hiding pages behind a "section" is not necessarily good - example:

Hopefully those other suggestions will help answer your question, but like @AndZyk I'd be interested to see what the justification is for not organising your pages in sections.

My feeling is that hiding navigational elements is more likely to have a detrimental effect on usability (and hence SEO). I can't be the only one who occasionally edits a URL to navigate up a level (ok, I might be). Perhaps it's different if you have a limited number of products on a site but I think having a decent hierarchy is going to be better for users.

  • Like 1
Link to comment
Share on other sites

Short URLs VS Flat URL Structure

Does URL Length Affect SEO?

Google: No Benefit to An Artificially Flat URL Structure

  • Like 6
Link to comment
Share on other sites

1) It seems, the SEO reason that I gave is being taken very literaly. To me, it's more a matter of having built-in flexibility to structure pages without necessarily exposing the structure. I may not want to expose the parent page in the front-end.

2) "Virtual Pages" aligns with Ryan's "no assumptions" design principle. ProcessWire allows the admin to structure pages - but doesn't make (too many) assumptions about how these pages are output in the frontend. Or, to put it in the words of Ryan, "ProcessWire doesn't control the front-end, there are very few assumptions that can be made from an editing perspective." See also: No assumptions (cute interview!).

3) Short urls are cool - SEO or not - and "Virtual Pages" help me achieve that. Consider these versions of the same url:

  • Long: www.example.com/book-reviews/wheres-wally-in-hollywood/
  • Short: www.example.com/wheres-wally-in-hollywood/

4) WordPress has a bunch of change / shortify your urls tools - some quick examples:

@bernhard URL hooks are nice. Thanks for that pointer.

@wbmnfktr Thanks for the VirtualParents module link. I'm trying not to use plug-ins and would prefer to have this flexibility built-in (or use hooks).

Thanks for constructive inputs and perspective. I'll rest my case.

  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...