我刚开始使用 ProcessWire 系统并非常享受它。
在我的主页上,我想显示来自随机页面的图像。该页面可以是任何页面,只要它是 ID 为“1010”的父页面的子页面。
有可能吗,如果可以,我该如何实现?
我当前显示主页图像的代码是这样的:
if($page->image) echo "<img src='{$page->image->url}'>";
但是,我想从上述父 ID 的任何子页面中选择一个随机图像。
我找到了这个,但不确定它是否有用。
非常感谢任何指针:-)
您应该在模板的代码中尝试这样的事情(假设您的图像字段被调用image
):
/* Find all children of page with ID 1010 that include an image */
$allChildPages = $pages->find('parent=1010,image.count>0');
/* Select a page from all children in the PageArray randomly */
$randomChildPage = $allChildPages->getRandom();
if ($randomChildPage->image) {
echo "<img src='{$randomChildPage->image->url}'>";
}
看一下相关代码:
$pages
->
find()
将Pages的集合(匹配Selector)作为 a PageArray
(扩展WireArray
类)返回。$anyWireArray
->
getRandom()
返回自身的随机元素。还可以查看这个论坛主题,其中讨论了几种随机化来自不同页面的图像的策略。