PukiWikiの改造方法

私がやったPukiWikiの改造方法について説明します。まず、MenuBar を使用できるようにしました。パンくずリストの表示を変更し、トップページのURLから「?FrontPage」を取り除きました。その他、様々な変更を施しています。

PukiWikiの改造方法

行数の数値は 改造楽天 後に少し変わっている場合がありますのでだいたいの目安です。

MenuBar を使用できるようにします。(plugin/menu.inc.php)

// サブメニューを使用するように変更
define('MENU_ENABLE_SUBMENU', FALSE);

define('MENU_ENABLE_SUBMENU', TRUE);

に変に変更してサブメニューを使えるようにしました。

パンくずリストの表示と変更(plugin/topicpath.inc.php)

つぎのように、パンくずリストを表示させて、トップを「Top」と表示、セパレータを「>」に変更、自身のページも表示、リンクもさせる設定にしました。

// Show a link to $defaultpage or not
define('PLUGIN_TOPICPATH_TOP_DISPLAY', 1);

// Label for $defaultpage
define('PLUGIN_TOPICPATH_TOP_LABEL', 'Top');

// Separetor / of / topic / path
define('PLUGIN_TOPICPATH_TOP_SEPARATOR', ' > ');

// Show the page itself or not
define('PLUGIN_TOPICPATH_THIS_PAGE_DISPLAY', 1);

// If PLUGIN_TOPICPATH_THIS_PAGE_DISPLAY, add a link to itself
dedefine('PLUGIN_TOPICPATH_THIS_PAGE_LINK', 1);

ls2が出力する「cmd=read&page=」を削除(plugin/ls2.inc.php)

ls2プラグインのままでは、ls2のリンクからジャンプした場合と、普通のリンクからジャンプした場合で、URLが違うので、SEOの面で不利です。そこでls2が出力する「cmd=read&page=」を削除しました。

次のようにplugin/ls2.inc.phpの126行目付近の「cmd=read&page=」を削除します。

//	$href   = $script . '?cmd=read&page=' . $r_page;
	$href   = $script . '?' . $r_page;

トップページのURLから「?FrontPage」を取り除きます。

ページを指定しない場合、「index.php」を取り除いてあっても、URLはhttp://hogehoge.jp/?FrontPageというアドレスになりますので、トップページから「?FrontPage」を取り除きます。URLは短い程良いとの考えと、SEOの観点から複数のアドレスで同じページにアクセスしないようにする為です。

.htaccessファイルでやる方法

.htaccessファイルに次の記述を追加します。PukiWikiをサブディレクトリに設定した場合です。

RewriteEngine on
# Remove '?FrontPage'
RewriteCond %{QUERY_STRING} ^FrontPage$
RewRewriteRule ^(.*)$ /$1? [R=301,L]

(lib/html.php)でやる方法も適用します

lib/html.phpの59行目付近を次のように変更します。しかし、この方法だけでは「?FrontPage」を取り除いたアドレスが生成されますが、「?FrontPage」を付加してアクセスすると「?FrontPage」が表示されてしまいます。

//	$_LINK['top']      = "$script?" . rawurlencode($defaultpage);
	$_LINK['top']      = "$script";

外部リンクの「rel=nofollow」をやめる(lib/make_link.php)

この「rel=nofollow」は、リンクをページランクに反映させないものですが、PukiWikiの場合は外部リンク全てに入るようになっています。有用なリンクに対してはnofollow属性を表示しないようにしたいものです。

381行目付近で、次のようにサイトを指定してnofollow属性を取り除く方法をやってみました。hoge.jpの場合かhogehoge.netの場合はnofollow属性が取り除かれます。

	function toString()
	{
//		if (FALSE) {
		if( preg_match( '/hoge.jp|hogehoge.net/', $this->name ) )
		{
			$rel = '';
		} else {
			$rel = ' rel="nofollow"';
		}
		return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
	}

ページタイトル部分のリンクを削除します。(lib/pukiwiki.php)

PukiWiki の元のままの状態では、ページタイトルをクリックすると、何か得体の知れない「Backlinks for ページタイトル」というページへリンクするようになっています。このリンクはほとんど意味が無いので、このリンクを無効にします。

105行目付近が

$title = htmlspecialchars(strip_bracket($base));
$page  = make_search($base);
if (isset($retvars['msg']) && $retvars['msg'] != '') {

となっているのを、次のように変更します。

$title = htmlspecialchars(strip_bracket($base));
//$page  = make_search($base);
$page  = $title;
if if (isset($retvars['msg']) && $retvars['msg'] != '') {

ページタイトル下のURLを非表示にします。(skin/pukiwiki.skin.php)

ページタイトル下には、そのページのアドレスが表示されています。PukiWikiの場合、長くなるのでこれを非表示にします。

22行目付近の設定が「1」になっているので、これを「0」にします。

// SKIN_DEFAULT_DISABLE_TOPICPATH
//   1 = Show reload URL
//   0 = Show topicpath
if (! defined('SKIN_DEFAULT_DISABLE_TOPICPATH'))
	define('SKIN_DEFAULT_DISABLE_TOPICPATH', 0); // 1, 0