MediaWiki/archive/embedding/1.16/index.php

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< MediaWiki‎ | archive‎ | embedding
Revision as of 17:46, 18 March 2011 by Woozle (talk | contribs) (moved MediaWiki/embedding/1.16/portable/index.php to MediaWiki/embedding/1.16/index.php: now universalized -- no need for 2 versions)
Jump to navigation Jump to search

About

This works with MediaWiki v1.16.x.

Instructions

  • Modify the settings inside the CONFIGURATION block to match your site's configuration
  • Put this file (index.php) in the folder where you want the pages to appear. (I've only tested this in "/", however.)
  • Modify Apache/.htaccess -- see /.htaccess (not needed if you are only serving one title)
  • Whatever is in [[project:Transclude/]] will appear (without the wiki skin) at http://yourdomain.com, [[project:Transclude/a page]] will appear at http://yourdomain.com/a_page, and so on.

Future

  • I haven't tested to see if a trailing "/" brings up a different page or not; if it does, then trimming off trailing "/"s from the request should fix that, if it's a problem.

History

  • 2011-03-17 changed $wgArticle creation method -- other method returns fully-skinned error page when user does not have read access to the requested page
    • also added some debug code in case of other unanticipated problems
  • 2011-03-18
    • several small improvements; configuration is now in one block, browser-title now includes the page's title
    • now universalized -- can serve fixed or dynamic title set by changes to configuration

Code

main

<php><?php // comment these lines out for production use $fErrLevel = E_ALL | E_STRICT; error_reporting($fErrLevel); ini_set('display_errors', 1);

// ++++ CONFIGURATION PART 1 $wpWiki = '/wiki'; $wpSkins = "$wpWiki/skins"; $strTitleBase = 'YOUR SITE NAME HERE';

$arCSS = array(

 $wpSkins.'/vector/main-ltr.css' => 'screen',
 $wpSkins.'/common/shared.css' => 'screen',
 $wpSkins.'/common/commonPrint.css' => 'print');

// ---- CONFIGURATION PART 1

$preIP = dirname( __FILE__ ).$wpWiki; //$preIP = dirname( '../index.html' ).'/wiki'; chdir($preIP); require_once( "$preIP/includes/WebStart.php" );

  1. Initialize MediaWiki base class

require_once( "$preIP/includes/Wiki.php" ); $mediaWiki = new MediaWiki(); OutputPage::setEncodings(); # Not really used yet

// ++++ CONFIGURATION PART 2

// (example 1) DYNAMIC titles: $strTitleReq = $wgRequest->GetText('title'); $wpPage = 'project:Transclude/'.$strTitleReq;

// (example 2) FIXED title: $wpPage = 'project:Transclude/home';

// ---- CONFIGURATION PART 2

$wgTitle = $mediaWiki->checkInitialQueries( $wpPage, 'view' );

// load $wgArticle $wgArticle = MediaWiki::articleFromTitle( $wgTitle ); //$wgArticle = $mediaWiki->initialize ( $wgTitle, $wgOut, $wgUser, $wgRequest ); //$mediaWiki->performRequestForTitle( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );

// create appropriate title string $strPageName = $wgTitle->getText(); $strTitlePage = substr($strPageName,strrpos($strPageName,'/')+1); if (empty($strTitlePage)) {

   $strTitle = $strTitleBase;

} else {

   $strTitle = $strTitlePage.' - '.$strTitleBase;

} //$out = $wgParser->recursiveTagParse($txtPage);

if (is_object($wgArticle)) {

   // fetch the page contents and parse it
   require_once( "$preIP/includes/Article.php" );
   global $wgParser;
   $txtPage = $wgArticle->getContent();
   $objOptions = new ParserOptions();
   $objPOut = $wgParser->parse( $txtPage, $wgTitle, $objOptions );
   $out = $objPOut->getText();

} else {

   $out = "could not load page from database";

}

$htHdr = ; foreach ($arCSS as $fs => $medium) {

   $htHdr .= "\n".'<link rel="stylesheet" href="'.$fs.'" media="'.$medium.'" />';

}

echo <<<__END__ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> $strTitle$htHdr

__END__; echo $out; echo '

';</php>