I have an about page in my root in the panel. I don’t like the visible feature but I have no better option this time so I tried it.
The about page was the only visible page. It was not easy to figure out how to get just that visible page.
Returns 0
Wrong for me.
<?php echo page()->children()->visible()->count(); ?>
Returns 0
Wrong for me.
<?php echo pages()->visible()->count(); ?>
Return 1
Correct for me.
<?php echo site()->index()->visible()->count(); ?>
Why does not the first two work? I’m on the site root/home on front end, not in a page.
1 Like
That’s easy to explain:
page()
fetches the homepage. So unless you don’t have any subpages in your home folder, it’s correct that you get 0 here.
pages()
does not exist.
the correct way would be either
$pages->visible()
if you are in a template or snippet
or
site()->pages()->visible()
if you are in a plugin
2 Likes
sorry, I’m wrong about pages()
I added that as a helper to build collections of pages. I admit that this is not clear on first sight. I might need to change that or document it better.
2 Likes
Thanks! That explains it.
I would prefer to have both…
$pages->visible()
…and…
site()->pages()->visible()
…in the docs. Then we can easily find the version we need, both for the template / snippet and for the plugin.
For me, I was testing the Patterns plugin and needed the functions for the config file. Generating a topmenu.