0

我使用dokuwiki,用户需要登录才能查看多个页面。当他未登录时,他会收到以下错误消息页面:

在此处输入图像描述

如您所见,我已经尝试添加到登录页面的链接。我想保留链接中请求的初始页面,但添加do=login重定向到登录页面。

[[#?do=login|Perhaps you forgot to login?]]

如何创建指向同一页面的链接,但显示登录页面而不是拒绝访问?

该页面是inc/lang/en/denied.txt

4

2 回答 2

1

给定的接受答案是您问题的更好解决方案,但要回答您的原始问题:

您可以使用跨wiki 链接“this>”链接到wiki 根目录中的任何内容。因此,对于您的示例[[this>?do=login|Perhaps you forgot to login?]],可以解决问题。

如果您这样做,请记住,内核的语言文件将被下一次更新覆盖。因此,最好通过将副本添加到您的 conf 文件夹来更改它们。

于 2013-09-15T13:13:46.120 回答
0

您是否尝试过使用此插件“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
    }

}
于 2013-09-05T07:50:27.380 回答