我正在为我的网站编写插件。它有一个顶级文件的文件,但所有子页面都是由插件本身生成的。这主要是因为插件必须处理数据库。
目前我的网页设置为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
一样。
答案 0 :(得分: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));