Summary: How to include the current revision of a pmwiki page in another php page
Prerequisites: Last tested on PmWiki version: 2.0.6
Maintainer: Wesley Tanaka
Categories: Includes
Discussion: IncludeAble-Talk


How do you include the current revision of a pmwiki page in another php page?


Let's say I want to include the current content of a pmwiki page in a php page called viewplace.php

1) Patch pmwiki.php in one place, namely:

changing the exit; on line 279 (version 2.0.6) to return;

See PITS.00548 fixed in pmwiki v 2.0.12!

2) Add this php code to viewplace.php:


$_REQUEST['pagename'] = 'pmwiki page';

$cwd = getcwd();


include 'pmwiki.php';



3) To your config.php, add something like:

if (strpos($_SERVER['REQUEST_URI'], 'viewplace') !== FALSE

      || strpos($_SERVER['REQUEST_URI'], 'handleplacecomment') !== FALSE)


   // Switch skin.  This has to go first because stdconfig loads
   // scripts/skins which loads the skin.
   if (strpos($_SERVER['REQUEST_URI'], 'viewplace') !== FALSE)
      $Skin = 'embed';
   else if (strpos($_SERVER['REQUEST_URI'], 'handleplacecomment') !== FALSE)
      $Skin = 'blank';
   // process stdconfig.  This has to go before clearing the
   // HTTPHeaders because some headers are set from stdconfig itself.
   // Disable stdconfig so that it doesn't get processed again.
   $EnableStdConfig = FALSE;
   // stdconfig adds some stuff to that specified in the template file
   // (<div id='wikitext'> </div> and some blank lines), even though
   // our template is completely blank, so we try even harder to clear
   // out the template format.
   if (strpos($_SERVER['REQUEST_URI'], 'handleplacecomment') !== FALSE)
   // Disable headers, since some output may have already been created
   // before pmwiki was included.
   $HTTPHeaders = array();
   // Disable automated redirect for the same reason.
   $EnableFixedUrlRedirect = FALSE;
   // Disable links, because they link back to the wiki URIs, which
   // may be confusing.  This function could be rewritten to rewrite
   // the links to other pages instead, if that made sense.
   function Nothing($pagename,$imap,$path,$title,$txt,$fmt=NULL)
      return $txt;
   $LinkFunctions = array('<:page>' => 'Nothing');
   $InterMapFiles = array();
   // Don't display any text if the pmwiki page is blank or doesn't exist.
   // Again, the default text might be confusing.
   $DefaultPageTextFmt = '';


This code needs to be added after any other HTTPHeaders or Skin assignments in config.php.

4) Create an 'embed' skin with:


in it.



See Also


Wesley Tanaka


See discussion at IncludeAble-Talk