Пользовательский нижний колонтитул MediaWiki Wiki в зависимости от категории

Мне было интересно, есть ли способ показать определенные части моего нижнего колонтитула только в определенных категориях.

Например. ссылку на электронную почту (mailto), только если в Category:FAQ

Я использую собственный скин.


person Spacemoose    schedule 01.02.2016    source источник


Ответы (2)


С помощью этого фрагмента CSS-класс добавляется к вашему тегу body для каждой категории текущего страница принадлежит. Затем вы можете отображать или скрывать определенные элементы с помощью соответствующего класса.

person Stefan Seidner    schedule 02.02.2016
comment
Как использовать фрагмент? В моем customSkin нет файлов .js. Мой основной файл - customSkin.php. - person Spacemoose; 13.04.2016
comment
Согласно mediawiki.org/wiki/Manual:Interface/JavaScript файл Common .js загружается во все скины. Так что я бы попробовал вставить туда фрагмент. - person Stefan Seidner; 14.04.2016

Если вы используете свой собственный скин, вы можете просто проверить, к каким категориям принадлежит ваш текущий википейдж, вызвав OutputPage :: getCategories (). Однако это, вероятно, повлияет на кеширование.

if (in_array( 'FAQ', $out->getCategories() ) {
  // do something
}

edit: @Florian указывает ниже, что вы должны использовать методы OutputPage для вывода материала, а не повторять их, поэтому я удалил этот неудачный пример. И, как указывает @Florian, если вы хотите, чтобы этот эффект сохранялся и для пользователей, которые могли выбрать скин, отличный от вашего, вам придется использовать крючок, egSkinTemplateOutputPageBeforeExec.

person leo    schedule 01.02.2016
comment
Вы также можете сделать это с помощью хуков, которые также вызываются рядом с нижним колонтитулом и также предоставляют доступ к объекту OutputPage. Также я бы рекомендовал использовать OutputPage для добавления содержимого к выходу, а не использовать echo или print. - person Florian; 02.02.2016
comment
Спасибо за этот ответ @leo & florian. Как именно использовать крючок? И куда это девается? В мой customSkin.php? С наилучшими пожеланиями. - person Spacemoose; 13.04.2016
comment
Вы должны создать расширение (или, если код действительно небольшой, вы даже можете вызвать ловушку в LocalSettings.php). Взгляните на mediawiki.org/wiki/Manual:Developing_extensions - person leo; 13.04.2016