Hello,
If I have:
$currentEdition = page('editions')->children()->visible()->last();
What would be the best practice to collect a specific subpage of $currentEdition
such as /exhibitions
?
Right now I am using find():
$currentExhibitions = $currentEdition->find('exhibitions');
…but seems a bit overkill since I know which subpage I am looking for and it is a direct child.
What would be the best practice here?
Thank you
Looks ok to me, unless you want to address the page directly:
$currentExhibitions = page('edition/exhibitions');
Using $currentEdition->find('exhibitions')
is not an overkill in that case because the find
method will look for a direct child of $currentEdition
first.
The page
helper also uses $site->children()->find($uri)
under the hood.
Use whatever you find nicer!
If you pass a UID to find()
, Kirby will only look for direct children, never further down the tree.
That’s correct, it will only further if there’s a slash relative to the parent page where find
was called from.
Thank you both.
I was wondering if perhaps there could be something like:
page($currentExhibition . '/exhibitions');
page($currentExhibition->uid() . '/exhibitions');
would be possible. With the downside that it will throw an error. if $currentExhibition
doesn’t exist.
This here:
$currentExhibitions = $currentEdition->find('exhibitions');
has the same. problem, though. It should actually be:
if($currentEdition) {
$currentExhibitions = $currentEdition->find('exhibitions');
}
You are right, thank you.
Between
page($currentExhibition->uid() . '/exhibitions');
and
$currentEdition->find('exhibitions');
…is there any notable difference ?
No, as @pedroborges already pointed out, the page helper uses find internally anyway. So go with what you like best.
1 Like