Monthly Archives: 2月 2016

EC-CUBE 2系の「もっと見る」を簡潔に

今更ながら、EC-CUBE 2系のスマホ版のデザイン変更で苦労しました。

EC-CUBEに組み込まれている「もっと見る」ボタンですが、Ajaxで次ページのjsonデータを取得してきて画像、商品名、価格等のspanやimgタグの中身を1個ずつコピーしている。。。(3系でも同じなのかな??)

これでは、つぶしが気かないったらありゃしないので、デザイン変更しても動作するJavaScriptに書き換えてみました。jsonではなく2ページ目のHTMLをそのままGETしてきて商品一覧部分のタグをそのまま現在の一覧の下に差し込むだけ。

・総HIT数が<span id=”productscount”>XXX</span>に書かれていること。
・もっと見るボタンにid=”btn_more_product”が付いていること。
・商品リストの個別商品が class=”list_area” に入っていて、各商品ブロックが<form>で囲まれていること。
(<form>で囲まれていないなら、2ヶ所の .closest(‘form’) は不要)

の3点だけ守られていれば、デザイン変更しても大丈夫です。

<script>
    var pageNo = 2;
    var url = "<!--{$smarty.const.P_DETAIL_URLPATH}-->";
    var imagePath = "<!--{$smarty.const.IMAGE_SAVE_URLPATH|sfTrimURL}-->/";
    var statusImagePath = "<!--{$TPL_URLPATH}-->";
	
    function getProducts(limit) {
        $.mobile.showPageLoadingMsg();
        var i = limit;
        //送信データを準備
        var postData = {};
        $('#form1').find(':input').each(function(){
            postData[$(this).attr('name')] = $(this).val();
        });
        postData["mode"] = "html";
        postData["pageno"] = pageNo;

        // デザイン変更に左右されない「もっと見る」処理に書き換えました。
        $.ajax({
            type: "POST",
            data: postData,
            url: "<!--{$smarty.const.ROOT_URLPATH}-->products/list.php",
            cache: false,
            dataType: "html",
            error: function(XMLHttpRequest, textStatus, errorThrown){
                alert(textStatus);
                $.mobile.hidePageLoadingMsg();
            },
            success: function(result){
                $('.list_area:last').closest('form').after($(result).find('.list_area').closest('form').clone(true));
                pageNo++;

                //すべての商品を表示したか判定
                if (parseInt($("#productscount").text()) <= $(".list_area").length) {
                    $("#btn_more_product").hide();
                }
                $.mobile.hidePageLoadingMsg();
            }
        });
    }
</script>

Windows7でフォントが消えた

WindowsUpdateを繰り返した結果か、それともいろいろなアプリをインストール&削除を繰り返した結果か、ある朝気がつくと、いつも使っているメーラー画面の表示フォントが文字化けしてしまっていました。

???

化けているフォントは何だ?と思い、メーラーのフォント設定画面を開いてみると、選択されているフォントは「メイリオ」
Windows7の標準搭載のフォントです。それならば、再度指定しなおしてみたら治るかもしれないと思い、フォント選択ボックスを開いてみましたが、MSゴシック、MS明朝 ・・などはあるけどフォント一覧に「メイリオ」が無い!!え?!
念のため、コントロールパネルからフォント一覧を見てもやっぱり無い。

困った!!

何かの拍子に間違ってフォント自体が削除されてしまったのか?!と思い、ネット検索した情報をもとに、マイクロソフトの技術情報からメイリオフォントをダウンロードしてみるが、インストールしてみようとすると「すでにメイリオはインストールされています」と出るだけで復活できない。

うーん、物理的なファイルは存在してるけど、見えてないだけかも知れない。

じゃあフォントキャッシュを削除すれば良いのか?と、セーフモードで立ち上げて、コマンドプロンプトから
「DEL %windir%\system32\FNTCACHE.DAT」と入力して再起動・・・それでも出てこない。

こまった。見えない物を相手に出来ない。。

そうだ!こういうときはコマンドプロンプトで実ファイルの存在を確認しよう!
「DIR C:\Windows\fonts\ME*」とやると meiryo.ttc meiryob.ttc は有るじゃない!(メイリオって明瞭の意味だったのか?)

じゃあ、壊れてないか表示してみよう。エクスプローラー画面からは見えないのだから、直接シェルコマンドでファイルを開いてみる。
「START C:\Windows\fonts\meiryo.ttc」

。。。おおお!サンプル文字一覧はちゃんときれいに出るじゃないですか。
よしよし。。。ん?「インストール」ボタンがここにもある。。。

ポチッ。。。。「インストールされました」やった!復活!長かったー(笑)