当插件生成子项时突出显示活动页面
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));
我正在为我的网站编写插件。它有一个顶级文件的文件,但所有的子页面都是由插件本身生成的。这主要是因为插件必须处理数据库。
目前我的网页设置为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));