jquery

 
ページ内リンクをスムーズスクロールするjQueryプラグイン(Inside Scroll)を使わせていただいています。
ページ内リンクをクリックすると、シュルシュルとスムーズにスクロースする、アレです。
この機能はもちろん大変ありがたいですが、このページは、jQuery Easing Plugin のエフェクトの確認として秀逸です。
アレどうやって動くんだっけと疑問になったときは、ここで確認です。

jquery

可変グリッドレイアウトjQueryプラグイン(jquery.vgrid.js)を某プロジェクトで使わせていただいています。
用途としては、固定幅のコンテンツなんで可変である必要はないんですが、リロードするたびにランダムに並び順が変わるという効果として使っています。
 
こういう固定幅のコンテンツの場合、再描画で各画像のポジション計算が狂って上の方に重なって表示される場合があります。(easingのパラメータの調整で出にくくすることもできますが、完全に出ないわけではありません)
たぶん、ウィンドウサイズが変わった場合の再描画では問題がないのでしょうから、ウィンドウサイズが変わらないような状況で使っている方が悪いのですが、たまにでも、画像が上の方に重なるといろいろ不都合が。(「表示上の問題なんです、F5キーを押してください」と言いたいところですが、見た目、いかにもなにか重大なバグが発生したように見えて、結構厳しいです)
 
初期化のあと、すぐ vgrefresh() してみたり、vgsort() してみたり、あと、一緒に動く JSがあるとそうなる頻度が上がるので、後ろの方にずらしてみたりしたんですが、なかなかこれといった対策もなく。
外そうかなと思った瞬間、パッと思いつきました。

#grid-content {
  display:none;
  display:block\9;	/* IE7, IE8 */
  overflow:hidden;
  height:0;
  margin-left:-1px;
}

「最初は消しときゃええやん」と。これでばっちりです。IEだけは消しとくとほんとに出てこなくなりましたので、出しときました。
作者さま、ありがとうございました。

追記:これだとページ内ジャンプのとき、やっぱり表示できないケースがありました。なので、上のIE対応は止めて、基本表示しないで別のタイミング(他のJSが動くとき)、これ(↓)を入れることにしました。

$("#grid-content").css('display', 'block');

なんか泥縄式になっているような気がするのは気のせい?
再追記:これでもうまくいかないことがあったので、更に vgrefresh() を足しました。いよいよ泥縄(泥船)です。

$("#grid-content").css('display', 'block');
$("#grid-content").vgrefresh();

ちなみにランダムの方は上流(コンテンツを準備する側)でやることにしました。

query_posts('category_name=top&posts_per_page=-1&orderby=rand');

posts_per_page=-1 は無制限、orderby=rand が並び順ランダムです。

twitter

 
Twitter ウィジェットについてのちょっとした Tips。
そんなん当たり前やん、という方はヌルーで。

  • フォントサイズが指定できない
    くそー、CSSで指定してんのに何で font-size変わらないんだよ!
    とお嘆きの貴兄。bodyタグの font-sizeや font-familyを強制的に使うみたいですよ。お試しあれ。(bodyじゃないかもしれませんが、とにかくベースの方の要素です)
  • プロフィール画像とIDやタイトルが上下に分かれる
    これは純粋に CSSの問題です。H3タグや H4タグにはよく clear:both; が入っていると思いますので、これを無効にしてください。

    .twtr-hd h3, .twtr-hd h4 {
      clear:none;
    }
    
  • WordPressのウィジェットとして貼りたい
    ハイハイ、PHP Code Widgetプラグインを入れてください。
    Twitter ウィジェットからコピペした JSコードは functions.php で関数にでもして。それを PHP Code Widgetから呼び出します。

    function twitter_widget() {
    ?>
    
    
    new TWTR.Widget({
      version: 2,  type: 'profile',  rpp: 4,  interval: 6000,  width: 'auto',  height: 300,
      theme: {
        shell: {    background: '#17375e', color: '#ffffff' },
        tweets: { background: '#305378', color: '#ffffff', links: '#418a21' }
      },
      features: {
        scrollbar: false, loop: false, live: false, hashtags: true, timestamp: true,
        avatars: false, behavior: 'all'
      }
    }).render().setUser('hogehoge').start();
    
    <?php
    }
    

    本題から外れますが、この functionの書き方、目から鱗と違います?
    こういうのを書くとき、いままでは echoで書いたり、ヒアドキュメントにしたりしてたんですが、?>で PHPを閉じちゃって、HTMLをそのまま書いて最後に<?phpで戻すなんて、なんという荒業なんでしょう! と最初みたとき、びっくりしました。

wordpress

WordPressに限ったことじゃないんだけど、他人さまの翻訳ファイル(.mo)を使わせていただいていて、「ちょっとここの訳はなぁ」と思うこともたまにはあると思います。
明らかな間違いだったら、作者に教えてあげるのが親切だと思いますが、自分が使いたい用途が少し特殊で、そのときだけ「こういう言い回しになっててほしいな」ということもあるんじゃないでしょうか?
 
そういうときに、.poファイルがついていれば、Poeditでオレオレ翻訳ファイル(.mo)を作ってチョチョイのチョイでいいんですが、往々にして作者の方はそこまで親切じゃないので、バイナリの .moファイルだけしか付いてこないという場合も結構あります。
そういう場合は、コレ(↓)。

cd C:\Program Files\Poedit\bin\
msgunfmt.exe C:\tmp\hoge.mo -o C:\tmp\hoge.po

これで .poファイルが手に入ります。あとは Poeditで好きにするだけ。
保存のときにこんなエラーが出ますが、.moファイル自体はちゃんと作られてます。

5:07:20: C:\tmp\hoge.po:269: message catalog has plural form translations...
5:07:20: C:\tmp\hoge.po:2: ...but header entry lacks a "plural=EXPRESSION" attribute
5:07:20: C:\tmp\hoge.po:269: message catalog has plural form translations...
5:07:20: C:\tmp\hoge.po:2: ...but header entry lacks a "nplurals=INTEGER" attribute
5:07:20: msgfmt: found 2 fatal errors