当插件生成子项时突出显示活动页面

Highlight the Active Page when Children are Generated by Plugin

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

目前我的网页设置为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 在示例主题中突出显示一样。

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

1.路由必须设置

如果未设置页面的路由,则调用 active() 时页面永远不会 return 为真。由于没有页面 return 为真,因此突出显示永远不会出现。

示例代码:

$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));