Ktai Style 1.44 を使用してみた

というわけで、WordPressの携帯対応プラグインである『Ktai Style バージョン1.44』をダウンロードしてアップグレードしておきました。まぁ、実は数日前にアップグレードしておいたんですけどね。

で、動作確認がてら、実機で色々とサイト内を見ていたのだが、アップロードしたpng画像が表示されていないところがあった。Ktai Style には、DoCoMo端末から閲覧した場合に、表示できないpng画像をgif画像に変換してくれるという嬉しい機能があるのだが、全く表示されない状態になっていた。

調べてみると、画像ファイルが生成されていないのではなく、htmlコードがpngからgifに変換されていないのが原因のようだった。そこで、プラグインのソースを色々と眺めていると、『operators/i-mode.php』ファイルの1751行目付近の

$buffer = preg_replace('!<img src="([^>]*?)\.png"!', '<img src="\\1.gif"', $buffer);

がうまく働いていないようだった。img の直後にsrc が来るとは限らないですね。今回の場合は、has_orig、title、class などの要素がsrc よりも先に来てしまっていたために、うまく置換できていなかったようでした。

9 Comments

  1. 実は Ktai Style は、img 要素、a 要素を再構築していて、img src... というコードに矯正しています。しかし、has_orig がある場合など、それが徹底されていなかったのかもしれません。データの流れを確認して修正してみます。

  2. なるほど……
    記事側のimgタグを変更してもうまくいかないな、とは思っていましたが、コードを整形していたんですね。
    了解いたしました。

  3. さらに調査してみたところ、src 属性のクォート文字列にシングルクォート (') を使っている場合に問題が出る可能性がありそうです。手元ではそういう場合でも、期待通りに動作してしまっていて、再現できていません。
    なお、has_orig 属性は、png, gif 変換機能に行く前に削除されるはずなので、不具合の原因ではなさそうです。

  4. >なお、has_orig 属性は、png, gif 変換機能に行く前に削除されるはずなので、不具合の原因ではなさそうです。
    あれ?そうなんですか。
    僕の環境下では、

    <img has_orig="true" src="test.gif" />

    のタグが記事中に含まれているとき、pngに変換されずいたので、前述の変換関数の部分(i-mode.php の shrink_pre_split()の1750行目付近)を

    $buffer = preg_replace('!<img has_orig="true" src="([^>]*?)\.png"!', '<img src="\\1.gif"', $buffer);

    へと試しにソース修正してみると、正しくpng変換されるようになったんですが……

  5. <img has_orig="true" src="test.gif" />

    最初から has_orig="true" を書いてあるんですか?? この属性は Ktai Style の内部でのみ使うことを想定していて、記事に書いてしまうのは想定外でした。
    いちおう修正コードは、こういう場合にも動くようにしてありますが……。

  6. [...] 最近 Ktai Style の更新が滞っていますが、今回のバグ修正版となります。「ドコモ端末で縮小版の画像が出ない」という報告と「PHP 5.0.x で動かない」ことへの対応です。大幅な改変の予定 [...]

  7. >最初から has_orig=”true” を書いてあるんですか??
    はい。Wordpress 2.6 ビジュアルエディタの『画像を追加』より画像をアップロードして、フルサイズで記事に貼り付けると、コードに自動的に has_orig=”true”が追加されていました。
    ただ、同じ動作をもう一度してみても、 has_orig=”true”がされていないんですよね……
    もしかしたら、画像を記事に追加するときの操作方法や挙動がおかしかったのかもしれません。

    あと、ちょっとしたことではありますが、私が記述したコードは、

    <img has_orig="true" src="test.gif" />

    ではなく、

    <img has_orig="true" src="test.png" />

    の誤りでした。gif画像だったら、docomoの場合変換する必要ありませんね(汗)

  8. Ktai Style 1.4.5-beta1 はお試し頂けたでしょうか。ぜひとも動作をご確認願います。

  9. 申し訳ありません。
    修正いただき、新しいバージョンが出ていたのは知っていましたが、
    アップデートする余裕がなかったのでまだ試していませんでした。

    今から、動作確認させていただきます。

Sorry, the comment form is closed at this time.