1

我有一个现有的网站,它有自己的用户管理,我将PmWiki纳入其中。

因此,我使用 PmWiki 中的ExternAuth配方来处理我的身份验证。这很好用,允许我根据现有用户身份验证系统设置的会话变量对用户进行身份验证。

但是,有一个缺点:PmWiki 会在多个页面上链接到用户个人资料页面。例如,当显示谁编辑了页面时。我希望这些链接指向Profiles/UserName我现有的用户个人资料页面,而不是指向表单的不存在的 Wiki 页面。

有没有办法将 PmWiki[[~UserName]]链接在页面上呈现为“外部”链接http://example.com/profiles/UserName而不是正常的 PmWiki 行为?

4

2 回答 2

1

我想我自己想出来了......诀窍是使用标记命令来定义一个标记,该标记将在将其他“内联”标记更改为外部链接的同时更改用户配置文件链接。该链接稍后将在标记链中转换为指向外部的真实 HTML 链接。

// Set author information:
$AuthId = $_SESSION['userid'];
$Author = $_SESSION['name'] . ' (userid=' . $_SESSION['userid'] . ')';

// Change the way links to user profiles are shown:
$EnableAuthorSignature = 1; // Allow for ~~~ and ~~~~ markup
$AuthorLink = "[[http://{$_SERVER['SERVER_NAME']}/profiles/{$_SESSION['userid']} | {$_SESSION['name']}]]";
Markup("profilelinks", "inline", "/\[\[~(.*?)\s\(userid=(\d+)\)\]\]/", "[[http://{$_SERVER['SERVER_NAME']}/profiles/$2 | $1]]");

我不确定这是最优雅的解决方案,但它似乎工作......

于 2015-07-06T12:40:34.413 回答
0

原作者链接[[~user]]定义script/author.php为:

Markup('[[~','<links','/\\[\\[~(.*?)\\]\\]/',"[[$AuthorGroup/$1]]");

where$AuthorGroup默认设置为“Profiles”组名。

您可以通过以下方式将其更改为您的需要:

DisableMarkup('[[~');
Markup('[[~','<links', '/\\[\\[~(.*?)\\]\\]/',"[[($UrlScheme://{$_SERVER['SERVER_NAME']}/profiles/)$1]]");
于 2016-05-31T15:02:54.970 回答