Создайте ссылку для обсуждения / обсуждения в плагине MediaWiki - PullRequest
0 голосов
/ 28 октября 2019

Я создаю плагин MediaWiki, который перечисляет много файлов. Для каждого файла я хочу напечатать ссылку [Обсуждение] или [Обсуждение]. (Похоже, что исходное имя было «говорите», но оно было переименовано для обсуждения.) Эти ссылки должны быть красного цвета, если страница не существует, и синего цвета, если она существует.

Должен быть способ добавить такие ссылки в OutputPage.php, но я не могу понять это.

Я знаю об этих функциях "foo":

$page = WikiPage::factory ( $title )
$talk = $title->getTalkPage()

Но я не уверен, как получить $title из foo.

Я также не уверен, как изменить $talk в соответствующий HTML. Я бы предпочел не добавлять его в выходной поток, потому что я строю много HTML отдельно, но я полагаю, что могу реорганизовать его так, чтобы вместо передачи строк я передавал дескриптор для вывода.

1 Ответ

0 голосов
/ 29 октября 2019

Почему бы вам не использовать OutputPage::addWikiText(), чтобы добавить соответствующую ссылку, не беспокоясь о технических деталях: например, [[{{ns:11}}:Foo|Text]].

В качестве альтернативы вы можете получить $title из OutputPage::getTitle() для текущегостраницы или из Title::newFromText() для любого заголовка, который вы хотите использовать. Вы можете получить $talk напрямую, указав правильную константу пространства имен, что может быть даже проще, чем отключение через объект WikiPage.

Правильное оформление ссылки можно выполнить с помощью вспомогательных методов Title::exists() и одногосоответствующих помощников для генерации URL для страниц.

См. также https://doc.wikimedia.org/mediawiki-core/master/php/classTitle.html

...