我使用dokuwiki,用户需要登录才能查看多个页面。当他未登录时,他会收到以下错误消息页面:
如您所见,我已经尝试添加到登录页面的链接。我想保留链接中请求的初始页面,但添加do=login
重定向到登录页面。
[[#?do=login|Perhaps you forgot to login?]]
如何创建指向同一页面的链接,但显示登录页面而不是拒绝访问?
该页面是inc/lang/en/denied.txt
给定的接受答案是您问题的更好解决方案,但要回答您的原始问题:
您可以使用跨wiki 链接“this>”链接到wiki 根目录中的任何内容。因此,对于您的示例[[this>?do=login|Perhaps you forgot to login?]]
,可以解决问题。
如果您这样做,请记住,内核的语言文件将被下一次更新覆盖。因此,最好通过将副本添加到您的 conf 文件夹来更改它们。
您是否尝试过使用此插件“showlogin”来显示此页面中附加的登录表单。 https://www.dokuwiki.org/plugin:showlogin
基本上,这是停止显示默认拒绝页面的代码,该页面包含文本消息,而是登录表单。
class action_plugin_showlogin extends DokuWiki_Action_Plugin {
/**
* Register its handlers with the dokuwiki's event controller
*/
public function register(Doku_Event_Handler &$controller) {
# TPL_CONTENT_DISPLAY is called before and after content of wikipage is written to output buffer
$controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, 'handle_tpl_content_display');
}
/**
* Handle the event
*/
public function handle_tpl_content_display(Doku_Event &$event, $param) {
global $ACT;
# If user is not logged in and access to page is denied, show login form
if (($ACT == 'denied') && (! $_SERVER['REMOTE_USER'])) {
$event->preventDefault(); // prevent "Access denied" page from showing
html_login(); // show login dialog instead
}
# .. or show regular access denied page
}
}