現在位置: Top/XreaのPukiwikiでkakasi

xreaのpukiwikiでkakasi

kakasiはうまく動作していれば、ふりがなをきちんとつけてくれる。
漢字に対して1文字しかつかない場合は、kakasiはうまく作動していない。
文字コードから置き換えしたに過ぎない。
ふりがながつかない場合は、kakasiが置き換えるはずのファイルにアクセスしていないことになる。

ファイルを準備

  • kakasi.cgiを作成
    #!/bin/sh
    echo "Content-type: text/html
    
    <HTML>
    <BODY>
    "
    /usr/local/bin/kakasi -kK -HK -JK < /virtual/hkd/public_html/cgi/PageReading > /virtual/hkd/public_html/cgi/PageReading2
    
    echo "</BODY></HTML>"
    exit
  • lib/file.phpを改造
    case 'kakasi':	/*FALLTHROUGH*/
    case 'kakashi':
    
      $tmpfname = '/virtual/xxx/public_html/cgi/PageReading';
      $fp = fopen($tmpfname, "w") or
        die_message("Cannot write temporary file '$tmpfname'.\n");
      foreach ($readings as $page => $reading) {
        if($reading == '') {
          fputs($fp, mb_convert_encoding("$page\n", $pagereading_kanji2kana_encoding, SOURCE_ENCODING));
        }
      }
      fclose($fp);
      chmod($tmpfname, 0666);
    
      virtual($pagereading_kakasi_path);
    
      $tmpfname = '/virtual/xxx/public_html/cgi/PageReading2';
      $fp = fopen($tmpfname, "r");
      foreach ($readings as $page => $reading) {
        if($reading == '') {
          $line = fgets($fp);
          $line = mb_convert_encoding($line, SOURCE_ENCODING, $pagereading_kanji2kana_encoding);
          $line = chop($line);
          $readings[$page] = $line;
        }
      }
      fclose($fp);
    
      break;
    
    case 'none':
  • pukiwiki.ini.phpを編集
    $pagereading_enable = 1;
    $pagereading_kanji2kana_converter = 'kakasi';
    $pagereading_kakasi_path = '/cgi/kakasi.cgi';

サーバーにディレクトリを作成

/virtual/xxx/public_html/

に

/virtual/xxx/public_html/cgi/

というディレクトリを用意した

ファイルをサーバーに転送

kakasi.cgiは/virtual/xxx/public_html/cgi/へ
lib/file.phpとpukiwiki.ini.phpは所定の場所へ。

完成!!

ページ一覧を見る際に五十音順に並んでいるはず。
http://xxx.s151.xrea.com/?:config/PageReadingでふりがなが適切につけられているかをチェックしてみよう。

問題点

自動広告にしている場合、virtual関数で呼び出すときに、すでにページヘッダを送信しているようで、「すでにヘッダを送信しています」というエラーが出る。
リロードをすれば大丈夫で、動作には影響しない。