微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Grav admin 中获取页面的后代

如何解决在 Grav admin 中获取页面的后代

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

video_route:
  type: select
  data-options@: '\Grav\Theme\MyTheme::videoRoutes'

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

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

Grav\Common\Page\Pages::getCollection() 方法中,找到并实例化了 'videos' 对象,并且 params 数组的格式似乎也是正确的。但是生成的集合是空的。我的方法有什么问题?

解决方法

尝试以下操作:

public static function videoRoutes()
{
    $grav = Grav::instance();
    $grav['admin']->enablePages();   
    $pages = $grav['pages'];

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

Admin->enablePages() 调用 Pages->enablePages()。根据{{​​3}}:

public enablePages() : 无效

admin 中用于稍后加载前端页面的方法。

请注意,如果您在从 Grav 的主题存储库安装的主题中使用上述代码,您将在下次更新主题时丢失所有更改。在这种情况下,您应该创建一个 docs,或创建一个插件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?