Archive for 9月, 2010

EC-CUBE:本番用決済モジュール

eccubelogo

ここで、EC-CUBEに決済モジュールを組み込むときの手順を書いたんだけど、当然のことながら、テスト環境でのお話。
さて、テストはうまくいったから、さぁ本番というとき、決済会社からは以下のような書類が送られてきます。

  1. README.txt
  2. 本番環境登録情報
  3. モジュール用クライアント証明書(*.pem)
  4. 本番環境接続用モジュールのプロパティファイル(サンプル)

README.txtにはどういうことが書いてあるかというと、「本番用は試験環境と同じだからそれを使ってね」、「プロパティファイルだけは差替えてね」、「本番環境登録情報は各電文の共通ヘッダに設定すべき情報ですよ」、「説明書を見てね」、「わからなかったら問い合わせてね」ということです。
 

  1. まず、プロパティファイルを差替えます。
    試験環境と決済URL等が違うだけなので、試験環境用の決済URLを本番用に書き換えて、クライアント証明書ファイルパス(*.pem)も書き換えておきます。(ファイルももちろんコピーしておきます)
  2. このまま、クレジット決済をやってみるとエラーになります。
    「P002:認証情報が不正です。」というエラーです。なぜでしょうか。本番環境登録情報というやつをどこにも登録していないからですね。
  3. オーナーズストアで決済モジュールの設定を行います。
    kessai

    みんな、この辺のこと、スパッと気づくんでしょうかね。頭いいんですね。

ちゃんと共通ヘッダに情報がセットされたら、P002はでなくなると思います。

Memo:タブの吐き出し・・・9/10

cleanuptheworld

 
最近は記録するのが面倒臭くなって、「また、いるときググればいいでしょ。ぼんやりと記憶に残ってるし」と、さっさとタブを閉じてしまっていたので、反省!
ちゃんと記録しておかねば、イパネバの娘。
(結構書いたので、今日のところはこのくらいで勘弁しといたろ!)

  1. PHPで末尾の削除
    $s = "aaa,bb,cccc,";
    $s = rtrim($s, ",");
    
  2. jQuery Slider plugin (Safari style)
    
    $(function() {
      $("#id名").slider({ ... });
    });
    
    

    読み込み時に動かしておくことが重要!($(function() なしで書いても何もおこらないよ)

  3. EC-CUBEのフッターが fotter になっていたところを footer に修正してくれた。(2.5から適用)
  4. ブラウザの右端にペロッと表示されて、スクロールしても動かない画像
    position:fixed;
    right:0px;
    bottom:20px;
    

    bottomを指定すると下の方に張り付いて Good!

  5. uupaa.js
    latest logのひとが開発している jQueryに代わるライブラリ。機能はよさげなんだけど「導入実績なし」というところがちょっと。
  6. 使えるHTMLエンティティ文字 – raquo,laquo
    FireBugでエラーになる。もちろん使えるけど。
  7. isset()とempty()のまとめ
    ここを見るといいよ。
  8. mb_ereg_replace
    正規表現による置換のマルチバイト文字列版。それより、いまだに str_replaceのマルチバイト版が標準に入っていない方が不思議。
  9. メールループ(循環メール)はどうやって防がれているか?
    postfixが「Delivered-To:にあるメッセージを”mail forwarding loop”としてbounce」するということ。自分が送ったメールには、Delivered-To:を付けておいて、「Deliverd-To」フィールドの内容と送付先が同じ場合は NGにするということのようです。ここ参照。
  10. Smartyの中で isset()を使うとき
    <!--{ if isset($tpl_previous_page|smarty:nodefaults) }-->
    

    nodefaultsをかけておかないと、エラーになります。その理由は、こちらで。

PHP:文字列の途中にある数字をゼロパディング

php

 
体調不良のボケーっとした状態で考えたので、これでいいのかわるいのか判断がつかないんだけど、後で使うためのものなので、一応メモしておく。
仕様としては、sb0716_4a.jpg というような文字列があったとき、これを、sb0716_04a.jpg にしたいということです。
_1.jpg、_4.jpg、_10.jpg とあってソートしたら、_1.jpg、_10.jpg、_4.jpg になるのは嫌ということです。わがままですね。


”#”で場所を特定しておいて、ゼロパディングしてから戻すというアイディアなんですけど、正規表現だけでもっとスパッといかないんですかね?

WordPress3:カスタムメニュー

wordpress

 
WordPress3にデフォルトでついてくる「Twenty One」テンプレートでカスタムメニューというやつが使えます。
あの例のグローバル・ナビゲーションというやつです。
メニュー階層があるとドロップダウンメニューにしてくれて憂い奴なんですが、どうやって階層にすればいいの、と迷ったので、画面を貼っときます。

カスタムリンクをドラッグ&ドロップするときに、少し右の方へずらせばいいんです。

Memo:タブの吐き出し・・・9/3

cleanuptheworld

 
タブを開いてばかりでブラウザが片付かないのでここで吐き出しておく。
ところで、Googleの画像検索って、以前はもう少しお上品だと思ったんだけど、Baiduや Naverの悪い影響か、「吐き出し」みたいな検索でも結構アダルティなグロい画像を出してくるので、要注意!

  1. clearは「floatの解除」ではない
    そうだ、そうだ。『floatの解除は float:none』
  2. max-width
    max-widthを指定したら、<img width=”nn” />が効かなくなったので、注意。style=”width:nnpx;”は大丈夫。

    追記:max-widthのせいじゃなくて、with:auto が効いていたせいだと思う。

  3. WordPress PHP Exec Plugin
    WordPressの投稿やページの中で PHPのコードを書けるようにするプラグイン。勝手に入るやつがポピュラーだけど、入れたいところに特別なタグを書くやり方の方が好きです。

    
    
    
    
  4. テンプレートタグ/next post link
    3番目と4番目のパラメータはめったに使わないのでメモ。

    in_same_cat
      (論理値) 表示している記事と同じカテゴリーの次の記事を表示するかどうかを設定。
      TRUE の場合、同じカテゴリーの記事だけが表示されます。FALSE (デフォルト)
    
    excluded_categories
      (文字列) 表示させたくない記事のカテゴリー ID の番号。
      複数のカテゴリーを除外する場合は コンマを使って区切るようです (例: '1, 5, 15')。
    

WordPress3:あとで書くかもしれないTips

 
ブラウザのタブが溜まりまくりなので、さっさと整理するためにここで一度吐き出しておきます。
といいつつ、書く前に閉じちゃったものがたくさんあって、残っているのは Twitter Tools という大物だけなんですけどね。

jQuery:Inside Scroll

jquery

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

jQuery:可変グリッドレイアウト(jquery.vgrid.js)

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&amp;posts_per_page=-1&amp;orderby=rand');

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

Twitter ウィジェット

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() {
    ?&gt;
    
    
    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();
    
    &lt;?php
    }
    

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

moファイルを修正

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