首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Grav管理中获取页面的后代

在Grav管理中获取页面的后代
EN

Stack Overflow用户
提问于 2021-06-14 21:37:49
回答 1查看 136关注 0票数 0

在grav主题插件中,我想提供一种方法,用其他页面的路径填充页面蓝图中的选择输入字段:

代码语言:javascript
复制
video_route:
  type: select
  data-options@: '\Grav\Theme\MyTheme::videoRoutes'

这些页面必须是另一个特定页面的后代,在这里称为“视频”。我的主题插件方法如下所示:

代码语言:javascript
复制
public static function videoRoutes() : array
{
    $pages = new Pages(Grav::instance());
    $pages->init();
    $collection = $pages->getCollection(['items' => ['@page.descendants' => '/videos']]);
    [...]
}

在Grav\Common\Pages::getCollection()方法中,可以找到并实例化“视频”对象,params数组的格式似乎也是正确的。但是结果集合是空的。我的方法有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 07:43:04

尝试以下几点:

代码语言:javascript
复制
public static function videoRoutes()
{
    $grav = Grav::instance();
    $grav['admin']->enablePages();   
    $pages = $grav['pages'];

    $collection = $pages->getCollection(['items' => ['@page.descendants' => '/videos']]);
    [...]
}

Admin->enablePages()打电话给Pages->enablePages()。根据文档

公共enablePages():无效 方法用于管理,以便稍后加载前端页。

请注意,如果您在Grav主题回购中安装的主题内部使用上述代码,那么您将在下一次更新主题时丢失所有更改。在这种情况下,您应该创建一个继承主题,或者创建一个插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67977526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档