如何解决在 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 举报,一经查实,本站将立刻删除。