更改PmWiki用户配置文件链接


Changing PmWiki user profiles links?

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

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

然而,有一个缺点:PmWiki会在几个页面上链接到用户配置文件页面。例如,当显示谁编辑了页面时。我希望这些链接指向的不是Profiles/UserName形式的不存在的Wiki页面,而是指向我现有的用户配置文件页面。

有没有办法将PmWiki [[~UserName]]链接在页面上的呈现方式更改为类似http://example.com/profiles/UserName的"外部"链接,而不是正常的PmWiki行为?

我想我自己想好了。。。诀窍是使用Markup命令来定义一个标记,该标记将在将其他"内联"标记更改为外部链接的同时更改用户配置文件链接。该链接稍后将在标记链中转换为指向外部的真实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]]");

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

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

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

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

您可以使用根据自己的需要进行更改

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