wiki

目次

Wikiについて

自作プラグイン

Pukiwiki 1.4.7用 2ch風掲示板プラグイン

ここに設置しているPukiWikiの改造点備忘メモ

あちこちいじりすぎてわからなくなってきたので思い出せる限りメモる。
項目は思い出せても、どうソースをいじったのかが思いだせん。
Perlは得意だがPHPは全然知らん。ソース見ながら勘を働かせてボチボチかじってる。

init.phpをちょっと改造

環境変数$_SERVER['SERVER_NAME']が読み取れないのでinit.phpの22行目あたり(サーバー変数をいじる部分の前)に自分で定義した定数に保存。pukiwiki.ini.phpで$scriptに代入したりして使っている。

// Hostname
define('HOSTNAME', $_SERVER['SERVER_NAME']);

  • ページ名に半角スペースが入っているページがyahoo等の検索結果に載ると、該当ページへのリンクURL中、半角スペースが「+」に置き換えられて検索者が正しく該当ページに飛んで来れない。なのでwiki側でページを読み取る時にページ名に入っている「+」を半角スペースに読み替えるように細工(おかげでページ名に+が使えなくなる)
  • googleは大丈夫。さすが

html.phpのアップデート

この場所でいいのかどうかわからないが、pukiwiki.ini.phpとpukiwiki.skin.pnpで共用できるグローバル変数はhtml.phpの25行目あたり(global宣言が続いているところの最後)で定義している。

global $serveraddr, $hostname;

  • Version1.65にアップデート
  • blogページを編集する際timestampを変更しないオプションにデフォルトでチェックが入るようにした
  • 注釈に<hr>が1つ余計に入るのを削除

アンカーへのスムーズスクロール実現

※色々あってjQuery版に変えた

blog/2015-08-26/スムーズスクロールをjQuery版に変えて他ページへのアンカーにも対応してみた


  • これはこの3日ほどちょー苦労したが、ついに実装。簡単なようで意外な苦労があった。それを乗り越えた努力と工夫の解説ページはここをクリック。dictionary?のページなんか威力発揮しまくり。ちょっとこの右の小さい数字クリックしてみそ*1

※ChromeとAmazonアフィリエイトとの組み合わせで動作しない!悩み中。
※Firefox8.0とpukiwikiの組み合わせで下方向に動かなくなった!しばらく放置。

※結局スムーズスクロールのライブラリを変えて解決した。

blog/2012-01-22/スムーズスクロールを変えてみた

spamコメント対策

  • 初めてspamコメントを受けたので対策
    DNSBLに登録されたホストからの投稿をブロックするよう、pukiwiki.ini.phpにcheck if blacklistedの項目を設置
// check if blacklisted
$check_if_blacklisted = 1;

$is_blacklisted = 0;
if ($check_if_blacklisted) {
  $dnsbl_check = array(
        "dnsbl.spam-champuru.livedoor.com" 
        , "http.dnsbl.sorbs.net"
        , "all.rbl.jp"
        , "b.barracudacentral.org"
//        , "niku.2ch.net"
        );
  $dnsbl_target = $_SERVER['REMOTE_ADDR'];
  if ($dnsbl_target) {
    $quads = explode(".", $dnsbl_target);
    $rip = $quads[3].".".$quads[2].".".$quads[1].".".$quads[0];
    for ($i = 0; $i < count($dnsbl_check); $i++) {
      if (checkdnsrr($rip.".".$dnsbl_check[$i] . '.',"A")) {
        $is_blacklisted = 1;
        break;
      }
    }
  } else {
    // XXX: not reached
    $is_blacklisted = 1;
  }
}

同時にAkismetというspamフィルターも導入

  • 投稿に時間がかかってタイムアウトするのでakismetはsonots氏の方式に変更
  • BBQ(niku.2ch.net)につられてwikiが重くなっていたので、DNSBLのリストから外した

携帯用に色々改造

  • サイズの大きいページを分割する機能を改造。liタグの閉じタグが泣き別れにならないよう自動判別して調整するように
  • サイズの大きいページを分割する機能を改造。これまで乱暴に本文テキストがsubstr関数にて分割されてしまっていたが、mb_substr関数に変更すると共に次のページに行ってしまったタグ閉じカッコを現在のページの末尾に持ってくるように改造 → 一部バグがあったのを修正
  • olタグの前後にbrタグを挿入して見やすくした
  • preタグの前後にbrタグとhrタグを挿入して見やすくした
  • アマゾンのアフィリエイト用にimgのソースに"amazon"の文字を含むものはimgタグの削除処理を行わないようにした
  • 携帯用スキンでもcounter.inc.phpを呼び出して各ページのカウンター→popularに反映するよう変更
  • 携帯でも画像が見られるように改造
  • 携帯用スキン(keitai.skin.php)で、<!-- nokeitai --><!-- keitai end -->で挟まれた部分を表示しない用に改造。これにより#htmlプラグインと併せて携帯で上手く機能しない内容を非表示にできる
  • 上記の逆にスキン(pukiwiki.skin.php)で、<!-- keitai --><!-- keitai end -->で挟まれた部分をPCで表示しない用に改造。携帯専用の内容を表示することができる
  • 上記機能を簡単に実装するkeitai.inc.phpを自作
  • blogページに表示されるカレンダーをi-mode対応に改造
  • 同様にtableタグもi-mode対応に改造
  • calendar2.inc.phpの携帯での曜日表示のレイアウトが崩れていたので、keitai.ini.phpにて短い曜日名に変換するよう改造
  • 某忍者アクセスログを見えないように設置

file.phpの改造

  • get_existpages()の高速化パッチが巻き戻ったので再度パッチ当て
  • Version1.94にアップデート
  • file_head()関数を改造して、RecentDeletedblogの個々のページをファイル名リストに含めないように改造。これによってrecent.inc.php、recentmini.inc.php、rss.inc.php側の処理が不要になった

func.phpのアップデート

  • Version1.102にアップデート

new.inc.phpの改良

blog2の設置と改造

  • calendar2の過去の月のページで該当月の最初のブログが表示されるように改造
    →改造に不具合があったので修正
  • calender2の曜日の幅が均等になるように改造
    →FirefoxのCSSのバグに対応
  • comment.inc.phpのオプションをbelowに変えてコメント入力欄が一番上に来るように変更
  • html.phpを少し改変し、blogページを編集する際timestampを変更しないオプションにデフォルトでチェックが入るようにした
  • blog navigation menuにブログページ内検索機能を追加。search.inc.phpを少し改造してページ絞り込みのラジオボタンを非表示に
  • blog2trackback.ini.phpを改造してblogページ内にトラックバックを表示、またトラックバックURLをクリックするとURLが選択状態になってコピーしやすくした
  • blog navigationメニューを設置。カテゴリだけでなく年月から選択可能に
  • comment.inc.phpを改造して投稿者名をcookieから読み込むように
  • ブログ投稿ページで携帯とPCでカテゴリ選択方式を切り替えるように改造
  • デフォで投稿用パスワードがソースで丸見えだったのを非表示に
  • ブログ投稿フォームもカテゴリメニューを改造した
  • カテゴリメニューを追加するためにblog2.inc.phpを改造したblog2menu.inc.phpを設置
  • calender2の当日表示機能を使わずにcalendar2.inc.phpを改造したblog2today.inc.phpを設置。最後にUPされた日付別まとめページを表示するように改造

get_existpages() の高速化

  • バージョンが1.2に更新されていたのでアップデート
  • この関数使用頻度高いようなので重要。blog2today.inc.phpで最後にUPされたブログを検索する方法を探してる時にこの関数の存在と改良法を発見。キャッシュを導入して高速化

recent.inc.phpの改造

recentmini.inc.phpプラグインの自作

  • menuの下に表示させるrecentリストのページ名を短縮表示。最後のスラッシュ以降だけを表示するように改造
  • RecentDeletedを表示しないように改造

rss.inc.phpの改造

スキンの改造(詳細省略*2

  • 右上にjavascript時計を設置。その他レイアウトを若干調整
  • 気分を変えてスキンのデザインをちょっと変更
  • 注釈の表示がIEでおかしかったのでfloatしないように改造
  • 某忍者アクセスログを見えないように設置

login.inc.phpの導入

  • サーバーの変更によりPHPがCGI版になりSUEXECも導入されていたりしてBASIC認証が使えなくなった。で代りにlogin.inc.phpを導入。一部バナーもどきみたいなリンクが出る部分*3を削除して設置。一時はどうなるかと思ったが無事に解決。

alias.inc.phpの設置

  • WikiNameをオフ、AutoLinkをオンにした上でalias.inc.phpを設置。特に人の名前についてエイリアスページを設置した

外部リンクを新しいタブ(ウィンドウ)で開く

strtolower(($script), strlen($script))
 ⇒ strtolower($script), strlen($script)) /* ←最後の閉じ括弧は必要 */
"target"="_blank" ⇒ target="_blank"

gsitemap.inc.phpの自作

ref.inc.phpのIEバグ対策

  • floatさせるとmarginが倍になるのでdisplay: inline;を入れてやらねばならない。ちなみにIE、Firefox共に2.5emでblockquoteとツライチになる。
/* ref.inc.php */
div.img_margin {
	margin: 1em 2.5em;
 	display: inline;
}

homeにランダムに風景写真を表示

  • 最初はiGoogleのガジェットを貼り付けていたが、ソースを解読すると意外と簡単だったので直接表示する様に改良して貼り付けた

fortune.inc.phpに格言追加

  • homeに格言を表示しているfortune.inc.phpの格言データ、maxim.datにWEBで拾ったデータを追加
  • データ追加。趣を変えて論語にしてみた

ecache.inc.phpの導入

  • ページのHTML出力をキャッシュするお手軽プラグイン
  • it works!/re CS22Sのように書式の塊みたいなページは表示時間が半分に!

t.inc.phpの自作

  • トーマスの栄光を示したいときにトーマスマークを表示するプラグイン T
  • 中身はref.inc.phpのラッパー
  • 使用法は簡単。次のように書くだけ(Latin1文字みたい!)
    &t();

list.inc.phpの改造 → list_short.inc.phpの作成

  • ページリストが長くなりすぎるのでブログの各詳細ページのリストを表示しないように改造。当初$non_list変数で弾いていたが、ブログの更新がRecentChangesに反映されなくなったのでプラグイン自体を改造した

mail.inc.phpの設置と改造

  • 不正文字をフィルターする処理の追加

JW FLV MEDIA PLAYERの導入

  • flvの配信がやりたくてflvの作り方、配信の仕組みから探しまくり、このプレーヤーに出会った。pianoのページではMP3ファイルを直接再生している優れもの。

追加したプラグインやライブラリのリスト



[ << 戻る | Δ ページトップ | ホームホーム ]

*1 戻るのは左の小さい数字をクリック
*2 いじりすぎて思い出せなくなったので
*3 各ファイルの末尾の<div>タグ

Last-modified: 2008-05-05 (Mon) 21:04:54 (4034d)
ホーム 編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード 新規 一覧 単語検索 最終更新 ヘルプ
Counter: 10341
Today: 5
Yesterday: 8
最近売れているモノ
@Amazonランキング
S.H.フィギュアーツ アベンジャーズ アイアンマン マーク45 ...

ご注文はうさぎですか?? シャロ Cafe Style 1/7ス ...

SSSS.GRIDMAN 新条アカネ 1/7スケール ABS&P ...

魔法少女リリカルなのは Detonation 【超特装版】(完全 ...

機動戦士ガンダムNT (特装限定版) [Blu-ray] ...

マリオカート8 デラックス - Switch ...

スーパーマリオメーカー 2 -Switch (【早期購入者特典】 ...

弱虫ペダル 1 (少年チャンピオン・コミックス) ...

キングダム 54 (ヤングジャンプコミックスDIGITAL) ...