Category Archives: IT

【WordPress/plugin】wp-tmkm-amazon(アマゾンリンク表示プラグイン)

WordPressでamazonのリンク表示ができるプラグインは、数多ありますが、私は、wp-tmkm-amazonを使っています。定番は、wp-amazonってプラグインのようですが、こちらの方が設定も簡単で、使いやすいかなと。

入手手順

最新版を、ここからダウンロードしてください。

導入手順

  1. 入手したzipファイルを、/wp-content/plugins配下に展開する。
  2. プラグイン管理画面で、プラグインを有効に。

利用手順

[tmkm-amazon]ASIN[/tmkm-amazon]

と埋め込むだけ。

アマゾンアソシエイトIDを設定すれば、アフィリエイトのリンクも生成可能です。
なにも、ブラウザ上で、Drag & Dropなんかしなくても十分使えます。

【wordpress/plugin】Keitai Style(携帯対応プラグイン)

ネットに接続する時は、もっぱら携帯電話から、という方も多いので、Keitai Style(携帯対応プラグイン)を導入してみました。

入手/導入手順

詳しくは、Keitai Style(携帯対応プラグイン)公式ページで。

php.iniの設定ですが、

 mbstring.http_output = pass
 mbstring.encoding_translation = Off

としておく必要があります。.htaccessやhttp.conf等に記述する場合は、

<IfModule mod_php5.c>
   php_flag mbstring.encoding_translation Off
   php_value mbstring.http_output "pass"
</IfModule>

こんな感じで。

利用手順というかトラブル対応

プラグインを有効にするだけで、携帯対応できるはずなのですが、「文字化けする/画像が出ない」でもだえました。
文字化けの原因は、Wordpressで利用している文字コードが、基本的にUTF-8で、携帯電話は、SJISなので文字コード変換が必要なのですが、使用しているphpがマルチバイト文字対応していなかったことです。画像がでないのも同じような原因で、使用しているphpにGDが組み込まれていないことでした。結局、libphp5.soを作り直すために、phpのコンパイルからやり直しです。

以下がコンパイル~インストールの手順です。普通は、yumなんかで入手できると思いますが。

   % ./configure\
   --with-mysql\
   --with-apxs2=/usr/sbin/apxs\
   --with-zlib\
   --enable-zend-multibyte\
   --enable-mbstring\
   --enable-mbregex\
   --with-gd=/usr\
   --with-jpeg-dir=/usr/\
   --with-png-dir=/usr\
   --with-xpm-dir=/usr\
   --with-freetype-dir=/usr/sfw\
   --with-tiff-dir=/usr\
   --with-xml=/usr\
   --with-zlib=/usr\
   --with-xpm-dir=/usr
   % make
   % make test
   % make install

因みにphpのコンパイルオプションは、phpinfo()で確認できます。

php_configure.jpg

キャリア毎に、テンプレートの変更もできたり、芸も細かく、導入も(本来)簡単。Wordpress使っている人は、必携でしょう。

【IT】tdiaryからwordpressに移行しました

ブログアプリケーションとしてtdiary(Ver2.2.1 Wiki形式で記載)を使っていたのですが、wordpress(Ver.2.6.5)に移行してみました。理由は、日単位で記事を管理するより、記事単位で管理したかったということにつきます(tDiaryでも、手を加えれば可能なのですが)。 以下か、立ち上げた時の作業メモです。

WordPressの立ち上げ

DBを作る

以下のような感じで、wordpressが使うDBを作成します。

DB名 wordpress_db
ユーザ名 wordpress_user
パスワード 123456
% mysql -u root -p
mysql> create database wordpress_db;
mysql> grant select,insert,delete,update,create,drop,file,
alter,index on *.* to wordpress_user identified by '123456';

apacheの設定

mod_rewriteとmod_php5をapacheに組み込む為、/etc/httpd/conf/httpd.confに以下を追記。

LoadModule rewrite_module /usr/lib/httpd/modules/mod_rewrite.so
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so

バーチャルホストで動かしたいので、以下も記述。

<VirtualHost 999.999.999.999:80>
  ServerName  blog.kopakas.com
  DocumentRoot /var/www/html/wordpress
  DirectoryIndex index.php
  AddType application/x-httpd-php .php
  ErrorLog /var/log/httpd/kopablog_error.log
  TransferLog /var/log/httpd/kopablog_access.log

  <Directory "/var/www/html/wordpress">
    Options ExecCGI FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
    </IfModule>
  </Directory>
</VirtualHost>

WordPressでは、URLのパスの形式を任意に設定できますが、上記のような、mod_rewriteの設定が必要のようです。

WordPressのインストール

WordPressの日本語サイトからダウンロード。

所定のディレクトリに展開して、アクセスすれば、設定画面が表示されます(はずです)。

記事の移行

記事の移行は、以下の手順で実施しました。

tDiaryからMovableType形式に

こちらのブログで公開されているtDiary→MovableType変換スクリプトに一部修正を加えました。tDiaryのタグは、Wordpress側でカテゴリとタグの両方に振り分けています。

*** 44,63 ****
  __DIARY_FST__

  if($category ne ""){
-     @cate = split /,/,$category;
      print << "__DIARY_CATEGORY__";
! PRIMARY CATEGORY:
  __DIARY_CATEGORY__
- foreach $i ( @cate ){
- print "CATEGORY: $i\n";
- }
-
  }else{
      print "PRIMARY CATEGORY: \n";
  }
  print << "__DIARY_SND__";
  DATE: $date
- TAGS: $category
  -----
  BODY:
  $body
--- 44,59 ----
  __DIARY_FST__

  if($category ne ""){
      print << "__DIARY_CATEGORY__";
! PRIMARY CATEGORY: $category
! CATEGORY: $category
  __DIARY_CATEGORY__
  }else{
      print "PRIMARY CATEGORY: \n";
  }
  print << "__DIARY_SND__";
+
  DATE: $date
  -----
  BODY:
  $body
***************
*** 137,166 ****
        if(/^.$/){
            # λ
            $title_switch=0;
!       }elsif(/^!\s/){
!           # !\s
!           $key++;
!           $diary_key = "${date}-${key}";
!
!           my($tmp);
!           $tmp = $_;
!           if ($tmp =~ /\[\S*\](.*)$/){
!               $title{$diary_key} = $1;
!                 while ($tmp =~ /\[(.*?)\]/g){
!                   $category{$diary_key} .= $1.",";
!                 }
!               $visible{$diary_key} = $visible;
!           }else{
!               $category{$diary_key} = "";
!               $title{$diary_key} = $tmp;
!               $visible{$diary_key} = $visible;
!           }
!           $title_switch=0;
!           $p_date_time = sprintf "%s 00:00:%02d", ${p_date}, ${key};
!           $date{$diary_key}=$p_date_time;
            # Title
            $title_switch=1;
!       }elsif(/^Format: Wiki$/){
            # #5Header
            $title_switch=2;
        }elsif($title_switch==2){
--- 133,142 ----
        if(/^.$/){
            # λ
            $title_switch=0;
!       }elsif(/^$/){
            # Title
            $title_switch=1;
!       }elsif(/^Format: tDiary$/){
            # #5Header
            $title_switch=2;
        }elsif($title_switch==2){
***************
*** 184,190 ****
            # MT
            $p_date = sprintf "%02d/%02d/%02d", ${mon}, ${day}, ${year};
        }elsif(/Title: (.*)/){
!             # 5
        }elsif(/Last-Modified/){
            # 5
        }elsif(/^Visible: (.*)/){
--- 160,166 ----
            # MT
            $p_date = sprintf "%02d/%02d/%02d", ${mon}, ${day}, ${year};
        }elsif(/Title: (.*)/){
! #         $title{$diary_key}=$1;
        }elsif(/Last-Modified/){
            # 5
        }elsif(/^Visible: (.*)/){
***************
*** 194,200 ****
                $visible=0;
            }
            # 5
! #     }elsif($title_switch==1){
        }else{
            #
            #  <%=image 0, '', nil, [256,192]%>
--- 170,194 ----
                $visible=0;
            }
            # 5
!       }elsif($title_switch==1){
!           #
!           $key++;
!           $diary_key = "${date}-${key}";
!
!           my($tmp);
!           $tmp = $_;
!           if ($tmp =~ /\[([^\]]*)\](.*)/){
!               $category{$diary_key} = $1;
!               $title{$diary_key} = $2;
!               $visible{$diary_key} = $visible;
!           }else{
!               $category{$diary_key} = "";
!               $title{$diary_key} = $tmp;
!               $visible{$diary_key} = $visible;
!           }
!           $title_switch=0;
!           $p_date_time = sprintf "%s 00:00:%02d PM", ${p_date}, ${key};
!           $date{$diary_key}=$p_date_time;
        }else{
            #
            #  <%=image 0, '', nil, [256,192]%>
***************
*** 417,420 ****
        &print_end();
      }
  }
-
--- 411,413 ----

Imageデータの移行

tDiaryでは、/images配下にYYYYMMDD_[No].jpgと言う形式で、画像ファイルを蓄積しています。 wordpressでは、/wp-content/uploads/YYYY/DD配下に任意のファイル名で画像ファイルを格納するようです。ディレクトリを掘りながらコピーするツールを作っても良かったのですが、面倒だったので、wordpressのフォルダの直下に、imagesというフォルダを作成して、そこに過去の画像データは放り込んでおくことにしました。

データの整形

tDiaryでは、Wiki形式で編集していたので、記事本文部をそのままWordpressに食わしても、意図どおりに表示されません。簡単なフィルタを用意して、データを整形しました。 記事本文の画像へのリンクも、このフィルタで反映です。やっつけで作ったフィルタですので、晒しません。

はい、やっと移行完了です。