Embedding MediaWiki Disqus widget inside page footer template
Contents
Problem
I'd like to show the MediaWiki Disqus widget at the bottom of each page. And I don't want to edit each page manually.
Solution
Embed the Disqus widget inside templates and use the ReplaceText extension to add a template to the bottom of each page.
Following the steps underneath, each MediaWiki article will now render this:
+----------------+ +---------------------+ +--------------------+ +---------------+ | Article | ,-->| Template:PageFooter | ,-->| Template:Disqus | ,-->| Widget:DISQUS | +----------------+ / +---------------------+ / +--------------------+ / +---------------+ | ... | / | ... | / | ... | / | ... | | {{PageFooter}} +--' | ==Comments== | / | {{#widget:DISQUS}} +--' +---------------+ +----------------+ | {{Disqus}} +--' +--------------------+ +---------------------+
Steps
#1. Embed DISQUS widget within Disqus template
#2. Embed Disqus template within PageFooter template
#3. Add PageFooter template to each page
#4. (optional) Conditional embedding of Disqus template
1. Embed DISQUS widget within Disqus template
Create a MediaWiki Template:Disqus
in which to embed the {{#widget:DISQUS}}
widget (replace "yourid"):
<noinclude>This template adds the [http://www.mediawikiwidgets.org/DISQUS DISQUS widget] to an article page. </noinclude><includeonly>==Comments== {{#widget:DISQUS |id=yourid |uniqid={{PAGENAME}} |url={{fullurl:{{PAGENAME}}}} }}</includeonly>
Create a MediaWiki Template:PageFooter
in which to embed the Disqus
template:
<noinclude>Header at the bottom of each page </noinclude><includeonly>{{Disqus}}</includeonly>
Install the ReplaceText extension, go to page
Special:ReplaceText
and insert the PageFooter
template at the end of each page, using these settings:
field | value | comment |
---|---|---|
Original text: | $ | Denotes the end of the text (regular expression syntax) |
Replacement text: | ↵ ↵ {{PageFooter}} | Make sure the replacement text starts with two empty lines. This will insert the {{PageFooter}} template on a separate line, making the template insensitive for MediaWiki nested formatting bugs (e.g. :text==header== ) |
Use regular expressions | yes |
4. (optional) Conditional embedding of Disqus template
Install the ParserFunctions extension, and modify Template:PageFooter
like this:
<noinclude>Header at the bottom of each page </noinclude><includeonly>{{#switch: {{FULLPAGENAME}} | Main Page = | #default = ==Comments== {{Disqus}} }} </includeonly>
This will make the Disqus
template show on every page, except the Main Page.