更改 PmWiki 用户配置文件链接?

Changing PmWiki user profiles links?

我有一个现有的网站,它有自己的用户管理,我正在将 PmWiki 合并到其中。

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

但是,有一个缺点:PmWiki 将在多个页面上制作 links 到用户个人资料页面。例如。在显示谁编辑了页面时。 我希望这些 link 不是指向形式为 Profiles/UserName 的不存在的 Wiki 页面,而是指向我现有的用户个人资料页面。

有没有办法将 PmWiki [[~UserName]] link 在页面上的呈现方式更改为 "external" link 之类的 http://example.com/profiles/UserName正常的 PmWiki 行为?

我想我自己想出来了...诀窍是使用标记命令来定义一个标记,该标记将与其他[=15=同时更改用户配置文件links ] 标记到外部 link。这个 link 随后将在标记链中转换为真正的 HTML link ,它将指向外部。

// 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/ | ]]");

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

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

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

其中 $AuthorGroup 默认设置为 "Profiles" 组名。

您可以根据需要更改它:

DisableMarkup('[[~');
Markup('[[~','<links', '/\[\[~(.*?)\]\]/',"[[($UrlScheme://{$_SERVER['SERVER_NAME']}/profiles/)]]");