Удалить несуществующие ссылки нижнего колонтитула по умолчанию

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

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

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

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

3 ответов


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

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

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


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

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

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

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

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

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

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

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


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

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

на самом деле нет настройки, чтобы отключить их.


ссылка, упомянутая Karonen Илмари выше:

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

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

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

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

это работает в 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, или ваши ссылки могут не отображаться или они могут быть сломаны.