Удалить несуществующие ссылки нижнего колонтитула по умолчанию - PullRequest
6 голосов
/ 02 марта 2012

У меня проблема с установкой MediaWiki в локальной сети.Я использую MediaWiki на немецком языке.В моей вики есть несколько ссылок в нижнем колонтитуле, которые выдают ошибку 404.Например, в нижнем колонтитуле есть ссылка Impressum (на английском языке: Disclaimer).Он указывает на *NameOfMyWiki*:Impressum, который не существует.

Когда я перехожу к MediaWiki:Disclaimers, появляется сообщение об отказе от ответственности, это страница, которая должна быть за *wgSitename*:Impressum.Я не думаю, что предполагается, что я должен указать на ссылку отказа от ответственности на MediaWiki:Disclaimers.

Еще одно поведение, которое, вероятно, основано на той же проблеме, заключается в том, что пользователь получает 404 на своей странице пользователякогда страница пользователя еще пуста / еще не создана (нажмите на ссылку в правом верхнем углу рядом с настройками).Когда другой пользователь редактирует страницу пользователя первого пользователя, первый пользователь также может получить доступ и редактировать ее.Но не тогда, когда он все еще пуст / не определен.

Как я могу это исправить?

Ответы [ 3 ]

9 голосов
/ 05 марта 2012

Текст ссылок нижнего колонтитула происходит из сообщений интерфейса MediaWiki:Privacy, MediaWiki:Aboutsite и MediaWiki:Disclaimers. Чтобы отключить одну или несколько из этих ссылок, установите соответствующий текст ссылки на один дефис (-).

В качестве альтернативы, начиная с MediaWiki 1.17, вы также можете изменить нижний колонтитул с помощью , определив хук в вашем LocalSettings.php .

Ps. Для тех, кто заинтересован в переходе к исходному коду, код, который обрабатывает эти ссылки, находится в методе Skin :: footerLink () . Практика отключения различных функций интерфейса путем установки соответствующего сообщения на - на самом деле довольно распространена (хотя и не универсальна) в MediaWiki; Совершенно пустые сообщения обрабатываются немного странно по историческим причинам, поэтому - обычно используется в качестве замены для «без значения».


Редактировать: Я только что заметил, что вы также задавали второй вопрос о пользовательских страницах. Чтобы лучше ответить на этот вопрос, позвольте мне начать с описания того, как MediaWiki должна обрабатывать несуществующие страницы:

  • Когда MediaWiki видит вики-ссылку (большинство, хотя и не обязательно все ссылки в навигационных меню также обрабатываются одинаково), указывающую на несуществующую страницу, она создает так называемую ссылку . Эти ссылки оформлены иначе, чем обычные ссылки (обычно они окрашены в красный цвет, отсюда и название) и указывают на URL-адрес, который выглядит примерно так , как этот , с параметрами action=edit (что делает его особым видом ссылки редактирования) и redlink=1.

  • Когда пользователь нажимает на такую ​​ссылку, MediaWiki сначала проверяет, что страница не была создана за это время, и , если это не так, что пользователю разрешено создать и отредактировать его:

    1. Если страница существует, пользователь просто перенаправляется на обычный URL-адрес просмотра страницы.

    2. Если страница не существует, и пользователю не разрешено ее создавать, они также перенаправляются на URL-адрес обычного просмотра, который затем возвращает код состояния HTTP 404 и сообщение о том, что страница не существует. (Это то, что произойдет, если вы нажмете ссылку «как этот» выше, если вы не являетесь администратором в Википедии.)

    3. Наконец, если страница не существует, но пользователю разрешено ее создавать, MediaWiki просто обрабатывает URL как обычную ссылку для редактирования и показывает форму редактирования.

Похоже, что по какой-то причине новые пользователи, щелкающие по ссылке на свою страницу пользователя в вашей вики, переходят на случай 2 выше, а не на ожидаемый случай 3. Это может быть проблема с правами пользователя : в частности, вы должны убедиться, что обычные вошедшие в систему пользователи (группа user) в вашей вики имеют разрешение createpage.

Если вы хотите разрешить обычным пользователям создавать только их собственные пользовательские страницы, есть способы сделать это, но все, что я знаю, это либо установка расширения , либо написание Ваш собственный getUserPermissionsErrors крючок. Я могу привести несколько примеров того, как это сделать, если хотите, но для этого нужно немного кодирования.

0 голосов
/ 17 ноября 2017

Ссылка, упомянутая Ilmari Karonen выше:

В качестве альтернативы, начиная с MediaWiki 1.17, вы также можете изменить нижний колонтитул с помощью , определив хук в вашем LocalSettings.php.

... показывает, как добавить ссылки во встроенный список ссылок нижнего колонтитула.Чего он НЕ показывает, так это как удалить существующие встроенные ссылки в нижнем колонтитуле, как и было в оригинальном вопросе.

Оказывается, это простое дополнение к указанному решению ловушек.Вам просто нужно отказаться от существующих ссылок нижнего колонтитула в массиве шаблонов.

Большинство людей не только захотят удалить встроенные ссылки нижнего колонтитула, но и добавить свои собственные.В духе StackOverflow, вот полное примерное решение, которое делает и то, и другое (это из существующей Wiki ...)

Это работает в mediawiki-1.29.2, но, вероятно, будет работать и во многих старых версиях,Поместите этот код в файл LocalSettings.php (я поставил его внизу), чтобы удалить существующие ссылки нижнего колонтитула и добавьте свои собственные:

# Remove all existing footer links and add my own
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # IMPORTANT:  this is the secret sauce - remove all existing footer links
        $tpl->data['footerlinks']['places'] = array();

        # To add new footer links to local wiki pages:
        #
        # 1) You MUST create your new pages in your (Main) namespace first, for example:
        #
        #       http://<your-site>/wiki/index.php/About_Us
        #       http://<your-site>/wiki/index.php/Contact_Us
        #       http://<your-site>/wiki/index.php/Disclaimer
        #       http://<your-site>/wiki/index.php/Download
        #       http://<your-site>/wiki/index.php/Privacy_Policy
        #
        # 2) You MUST then create each of these pages in your MediaWiki namespace:
        #
        #       http://<your-site>/wiki/index.php/MediaWiki:Aboutpage 
        #               - Insert 1 line, with "About Us" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Contactpage 
        #               - Insert 1 line, with "Contact Us" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Disclaimerpage 
        #               - Insert 1 line, with "Disclaimer" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Downloadpage 
        #               - Insert 1 line, with "Download" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Privacypage 
        #               - Insert 1 line, with "Privacy Policy" (no quotes)
        #
        # 3) Add new footer links like this:

        $tpl->set( 'aboutpage', $sk->footerLink( 'aboutpage', 'aboutpage' ) );
        $tpl->data['footerlinks']['places'][] = 'aboutpage';
        $tpl->set( 'contactpage', $sk->footerLink( 'contactpage', 'contactpage' ) );
        $tpl->data['footerlinks']['places'][] = 'contactpage';
        $tpl->set( 'disclaimerpage', $sk->footerLink( 'disclaimerpage', 'disclaimerpage' ) );
        $tpl->data['footerlinks']['places'][] = 'disclaimerpage';
        $tpl->set( 'downloadpage', $sk->footerLink( 'downloadpage', 'downloadpage' ) );
        $tpl->data['footerlinks']['places'][] = 'downloadpage';
        $tpl->set( 'privacypage', $sk->footerLink( 'privacypage', 'privacypage' ) );
        $tpl->data['footerlinks']['places'][] = 'privacypage';

        return true;
};

ВАЖНО : не забудьтеследуйте инструкциям и создайте свои собственные страницы и соответствующие перенаправления MediaWiki, иначе ваши ссылки могут не отображаться или они не работают.

0 голосов
/ 05 марта 2012

Эти ссылки являются заполнителями, которые вы, возможно, захотите заполнить. Они предоставляются, чтобы вы могли легко заполнить некоторые важные части вашей новой вики.

См. http://www.mediawiki.org/wiki/Manual:Footer для получения полного списка..

На самом деле нет настроек для их отключения.

...