0

我正在为我的网站编写插件。它有一个顶级文件的文件,但所有子页面都是由插件本身生成的。这主要是因为插件必须处理数据库。

目前我的网页设置为mysite.com/plugin_page. 这个插件页面实际上有一个关联.md文件。该插件能够生成子页面,例如mysite.com/plugin_page/view/$mysite.com/plugin_page/new

当我查看mysite.com/plugin_page正确的页面时,它会被标记为活动页面,因此它会在导航栏中突出显示,正如我所期望的那样。但是,一旦我转到子页面,就不会突出显示任何页面。

我想mysite.com/plugin_page/view/$突出显示它的父页面,就像blog示例主题中突出显示的博客条目一样。

4

1 回答 1

0

在挖掘 Grav 源代码后,我找到了解决这个问题的方法。它涉及几个步骤。

1.必须设置路线

如果未设置页面的路由,则页面在active()调用时将永远不会返回 true。由于没有任何页面返回 true,因此突出显示永远不会出现。

示例代码:

$uri  = $this->grav['uri'];
$page = $this->grav['page'];

...

$page->route($uri->path());

2.页面需要分配到合适的父页面

如果生成的页面本身不是父页面,则需要将其分配给适当的父页面。

示例代码:

$pages        = $this->grav['pages'];
$parent_route = $this->config->get('plugins.myplugin.parent_route');
$page->parent($pages->find($parent_route));
于 2018-03-24T05:35:14.590 回答