From mediawiki.org
Jump to navigation Jump to search
This extension is not to be confused with the Popups extension used by Wikimedia on their wiki family.
MediaWiki extensions manual
OOjs UI icon advanced-invert.svg
Release status: unmaintained
Implementation Notify
Description Shows a popup on every nth page request.
Author(s) Johannes Perl (Jperltalk)
Latest version 0.1 (2012-06-18)
MediaWiki 1.7.0+
Database changes No
License GNU General Public License 2.0 or later
Download See the code section
  • $wgEnablePopup
  • $wgPopupPath
  • $wgPopupHeight
  • $wgPopupWidth
  • $wgPopupTitle
  • $wgPause
  • $wgCookieName
  • $wgPopupPosX
  • $wgPopupPosY
  • $wgCookieExpire
  • $wgPopupScript

Check usage and version matrix.

The Popup extension shows a popup on every nth page request of a user by setting a cookie and counting page requests.


  • Copy the code into a file and place the file(s) in a directory called Popup in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php:
    require_once "$IP/extensions/Popup/Popup.php";
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.


 * Popup extension showing a popup on every nth page request.
 * @author [http://www.perlproductions.at Johannes Perl]
 * @licence GNU General Public Licence 2.0 or later

if(!defined('MEDIAWIKI')) die('Not an entry point.');

$wgEnablePopup = true;

$wgExtensionCredits['other'][] = array(
        'name'        => "Popup",
        'author'      => "[http://www.perlproductions.at Johannes Perl]",
        'description' => "Shows a simple popup on every nth page request",
        'url'         => "https://www.mediawiki.org/wiki/Extension:Popup",
        'version'     => "0.1"

if(!isset($wgEnablePopup) || !$wgEnablePopup) return;

$wgHooks['BeforePageDisplay'][] = 'showPopup'; # hook to add js and show popup

$wgPopupPath = $wgScriptPath."/extensions/Popup/Popup.html"; # path to popup html file
$wgPopupHeight = 300; # height of popup
$wgPopupWidth = 200;  # width of popup
$wgPopupTitle = "Popup Title"; # title of popup
$wgPause = 10; # show the popup every 10th time
$wgCookieName = "MWPopupCounter"; # name of cookie
$wgPopupPosX = 20; $wgPopupPosY = 20;
$wgCookieExpire = 0; # the time the cookie expires
$wgPopupScript = "win = window.open('{$wgPopupPath}','{$wgPopupTitle}','height={$wgPopupHeight},width={$wgPopupWidth}'); win.moveTo({$wgPopupPosX}, {$wgPopupPosY});";

function showPopup( OutputPage &$out, Skin &$skin )
	global $wgPopupPath, $wgPopupHeight, $wgPopupWidth, $wgPause, $wgCookieName, $wgPopupScript, $wgCookieExpire;

	if(!isset($_COOKIE[$wgCookieName])) //cookie does not exist yet
		setcookie($wgCookieName, 1, $wgCookieExpire);
		$reqno = 1;
	else //cookie already exists
		$reqno = $_COOKIE[$wgCookieName] + 1;
		setcookie($wgCookieName, $_COOKIE[$wgCookieName] + 1, $wgCookieExpire);

	if($reqno == 1 || $reqno % $wgPause == 0)

	return true;

#if you want to delete the cookie for testing purpose use the code below
#setcookie($wgCookieName, "", $wgCookieExpire);
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <p>This is just a test popup page. Edit me.</p>