Менять ссылки на профили пользователей PmWiki?
У меня есть существующий веб-сайт с собственным управлением пользователями, в который я включаю PmWiki.
Поэтому я использую рецепт ExternAuth в PmWiki для обработки моей аутентификации. Это работает нормально, позволяя мне аутентифицировать пользователей на основе переменных сеанса, установленных моей существующей системой аутентификации пользователей.
Однако есть один недостаток: PmWiki на нескольких страницах будет делать ссылки на страницы профиля пользователя. Например, показывая, кто редактировал страницы. Я хотел бы, чтобы эти ссылки вместо того, чтобы указывать на несуществующие Wiki-страницы вида Profiles/UserName
указать на мои существующие страницы профиля пользователя.
Есть ли способ изменить способ PmWiki [[~UserName]]
ссылки отображаются на странице в виде "внешней" ссылки, например http://example.com/profiles/UserName
вместо нормального поведения PmWiki?
2 ответа
Я думаю, что я понял это для себя... Уловка состояла в том, чтобы использовать команду Разметки, чтобы определить разметку, которая изменила бы ссылки профиля пользователя в то же самое время как другая "встроенная" разметка на внешнюю ссылку. Затем эта ссылка будет позже преобразована в цепочку разметки в реальную ссылку 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
по умолчанию установлено имя группы "Профили".
Вы можете изменить его в соответствии со своими потребностями с помощью:
DisableMarkup('[[~');
Markup('[[~','<links', '/\\[\\[~(.*?)\\]\\]/',"[[($UrlScheme://{$_SERVER['SERVER_NAME']}/profiles/)$1]]");