Summary: Some scripts that add features useful for a CMS-type installation.
Version: 2016-09-04
Prerequisites: >=PmWiki 2.1.x
Status: Beta
Maintainer: Hagan Fox
Discussion: CMSBundle-Talk
Categories: CMS Bundles


A set of instructions for adding features that are useful for a site that is using PmWiki as a Content Management System.


When I create a new PmWiki site I nearly always install a certain few of my customized recipe scripts. I started a project to bundle those scripts together and publish them along with the instructions here. The scripts can be useful individually, so I've uploaded some of them to (usually with an accompanying post to the pmwiki-users list).

CMS Mode script

Documentation is on the CMS Mode recipe's page.

Addlink Bookmarklet script

Documented at CMSBundleAddLink.

Local configuration file

Adding the following to the end your configuration file (config.php) will turn PmWiki 2.1.10 or newer into a nice little CMS. (Global edit password required.)

* Recipes

## Put the wiki in "CMS Mode".
$pagename = ResolvePageName($pagename);

## Enable the IP- and content-banning recipe.
if ($action == 'edit' || $action == 'comment' || $action == 'diff') {
  include_once("$FarmD/cookbook/cmsb-blocklist.php"); }

## Enable the AddLink Bookmarklet recipe.
if ($action == 'edit' || $action == 'browse' || $action == 'addlink') {
  include_once("$FarmD/cookbook/cmsb-addlink.php"); }

## Apply a CMS Look for non-authors (ver. 2.1.10 or newer PmWiki default skin).
if (! @$page['=auth']['edit']) {
  $HTMLStylesFmt[CMSLook] = '
 .headnav, #wikicmds, .pagegroup, .footnav { display:none }
 .pagetitle { margin-top:8px; } div.lastmod { color:#cccccc; } ';

This will cause the PmWiki-related content on the sidebar to disappear unless you are an author.

Customize the sidebar

First, let's hide Wiki-related content from non-authors. Underneath the top link, add an (:if auth edit:) directive, as in

[<...more sidebar content...>]
(:if auth edit:)
* [[Main/WikiSandbox]]
[< sidebar content...>]

Next, let's add a Logout link. At the bottom of the sidebar page, add a "Log out" link. When you are done, it will look like this:

[< sidebar content...>]
%right% [-[[Site.SideBar?action=edit | edit SideBar]]-][[<<]]
%right% [-[[Main.HomePage?action=logout | Log out]]-]

Customize the Page Actions

  1. Add a Login link.
  2. Remove the Print link.
  3. Add an AllRecentChanges link.

When you are an editor and want to become an administrator or an "uploader", it helps to have a link to take you to the login page. Also, I don't like the anachronistic Print link and often find a sitewide AllRecentChanges link handy. To that end, the $SiteGroup.PageActions page gets this content:

Custom PageActions markup - a bulleted list of long lines
* %item class=browse accesskey='$[ak_view]'%[[{$FullName} | $[View] ]]
* %item rel=nofollow class=edit accesskey='$[ak_edit]'%[[{$FullName}?action=edit | $[Edit] ]]
* %item rel=nofollow class=diff accesskey='$[ak_history]'%[[{$FullName}?action=diff | $[History] ]]
(:if auth upload:)
* %item rel=nofollow class=upload accesskey='$[ak_attach]'%[[{$FullName}?action=upload | $[Attach] ]]
* %item rel=nofollow class=login accesskey='$[ak_login]'%[[{$FullName}?action=login | $[Log in] ]]
* %item rel=nofollow class=allrecent accesskey='$[ak_arc]'%[[{$SiteGroup}.AllRecentChanges | $[A.R.C.] ]]

When you are done, set new edit password of " @_site_edit " on your $SiteGroup.PageActions page.

Customize the logo

Go to this site and create a logo. The background color is 247/247/247. A font with a slim upper margin looks best. Rename the file to something that makes sense, like site_logo.png, and configure PmWiki to use it by adding this line to your config.php file:

$PageLogoUrl = "$PubDirUrl/skins/pmwiki/site_logo.png";

You can adjust the position of the searchbox and make the "Search" link text text match the links in the sidebar with this:

$HTMLStylesFmt['site_searchbox'] = '
 #wikihead { margin-top:10px; }
 #wikihead a { text-decoration:none; color:black; }
 #wikihead a:hover { text-decoration:underline; color:blue; }

Release Notes


  • NeilHerber has donned his programmer's hat and provided helpful feedback and advice about the blocklist and addlink scripts.


See discussion at CMSBundle-Talk

User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.