通販サイトの作成ログ

通販サイトでいじったメモログみたいなものだとお考えください。
質問もどうぞ。わかる範囲内でしたらお答えします。

仕事

lazyloadの設定

lazyload(遅延読込)の設定
画面表示されたら画像を読み込むようにしてサイトの読み込み時間を減らすというもの

http://blog.chiyopen.com/lazyload/
を参考に。

PC用

https://github.com/tuupola/jquery_lazyload
からjquery.lazyload.jsをとってきて任意のサーバーの場所に置く。

ヘッダーに

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

がある状態で
フッター以下に

<script type="text/javascript" src="jquery.lazyload.js"></script>
<script type="text/javascript">
<!--
$( "img.lazy" ).lazyload(
{
    threshold: 200,            // 200pxの距離まで近づいたら表示する
    effect: "fadeIn",        // じわじわっと表示させる
    effect_speed: 1000 ,
});
-->
</script>

を追加しHTMLの画像を

<img src="dummy.png" data-original="img.jpg" class="lazy" alt="" width="px" height="px" />

に変更で遅延読み込みできるようになった。dummy.pngは灰色の画像でも透明の画像でも置き換えてください。
じんわりimg.jpgが表示されます。
場所のパスはちゃんと合わせてくださいね。(js/jquery.lazyload.jsなど)

スマホ用
色々試して現在なっている状態だと
http://jquery.eisbehr.de/lazy/
よりjquery.lazy.min.jsをとってきて任意のサーバーの場所に置く。
ヘッダーに
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.lazy.min.js"></script>
<script type="text/javascript">
<!--
$(function() {
    $('.lazy').lazy({
        effect: 'fadeIn',
        threshold: 100,
        effectTime: 1000,
    });
});
-->
</script>
<style>
img.lazy {
   width: 100%;
   height: auto;
   display: block;
}
</style>

を追加してHTMLの画像を

<img class="lazy" width="100%" height="auto" data-src="img.jpg" alt=""/>

でスマホも動いた。
ただ初期表示に一瞬altが出てきたのでloadingも追加した
参考:http://sterfield.co.jp/designer/jquery%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AAloading%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8B-3/

<script type="text/javascript">に

$(window).load(function(){
    $(".loadingWrap").fadeOut();
});

を追加してCSS(<style></style>)に

html, body{
    width: 100%;
    height: 100%;
}
.loadingWrap{
    width: 100%;
    height: 100%;
}
.loadingWrap img{
}

を追加。
bodyの最初に

<div class='loadingWrap'></div>

を追加してOK。
<div class='loadingWrap'><img src="img.gif"/></div>
とするとloading画像も設定できる。

こんなとこです。

サイトの高速化

サイトページの高速化について
長所
・読込待ちが減り、客足離れが減る
・サーバーへの負担が減る
・高速化ページがSEOの評価にも効果があるとのこと
なのである程度実装。

まず
https://developers.google.com/speed/pagespeed/insights/
で変更点確認

・スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する
→javaは<script defer type="text/javascript" src="/js/default.js">のようにする
※jquery.jsはつけないほうがいい
CSSはファーストビュー用のCSSとその他CSSを作ってその他CSSをフッター以下に設置

・ブラウザのキャッシュを活用する
→.htaccessファイルに次を追加
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7 days"
ExpiresByType text/html "access plus 10 seconds"
ExpiresByType image/jpg "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
</ifModule>

・画像を最適化する
→画像圧縮で置き換え
https://tinypng.com/

http://www.jpegmini.com/main/shrink_photo
で圧縮

・JavaScriptを縮小する
・HTML を縮小する
・CSS を縮小する
http://refresh-sf.com/で圧縮

・圧縮を有効にする
→.htaccessファイルに次を追加
<IfModule mod_deflate.c>
  SetOutputFilter DEFLATE
 
  # Mozilla4系、IE7、8の古いブラウザでは無効にする
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html
 
  # GIF、JPEG、PNG、ICOなど圧縮済みの画像は再圧縮しない
  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
  # プロクシサーバが間違ったコンテンツを配布しないようにする
  Header append Vary Accept-Encoding env=!dont-vary
 
  # 各コンテンツを圧縮する設定を記述
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/js
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/atom_xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/x-httpd-php
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-woff
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
</IfModule>

ぐらいだったと思う。
あとは下記サイトを参考

表示速度改善!SEOに効果的な必ずやるべきサイト高速化手法40選
http://artroot.jp/article/201403221

今すぐやりたい!サイトの表示速度を改善して利益を増やす10の方法
http://jb-labo.com/speed-up-your-website/

それと
https://gtmetrix.com/
でも評価を行って色々出てたのでとりあえず
.htaccessファイルに次を追加した
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
参考:http://thk.kanzae.net/net/itc/t1544/

ECCUBE→高度な設定のSQL追加

以下の構文で携帯メールかPCメールかの判定ができる
ドメインはどっかで拾ってきた
下の範囲指定の[数字1]に下限、[数字2]に上限を設定で注文番号の範囲指定ができます。

--------------------------------------------------------------------------------------
CASE WHEN o.order_email like '%docomo.ne.jp%'
       OR o.order_email like '%mopera.net%'
       OR o.order_email like '%softbank.ne.jp%'
       OR o.order_email like '%vodafone.ne.jp%'
       OR o.order_email like '%disney.ne.jp%'
       OR o.order_email like '%i.softbank.jp%'
       OR o.order_email like '%ezweb.ne.jp%'
       OR o.order_email like '%uqmobile.jp%'
       OR o.order_email like '%ido.ne.jp%'
       OR o.order_email like '%emnet.ne.jp%'
       OR o.order_email like '%emobile.ne.jp%'
       OR o.order_email like '%emobile-s.ne.jp%'
       OR o.order_email like '%ymobile1.ne.jp%'
       OR o.order_email like '%ymobile.ne.jp%'
       OR o.order_email like '%yahoo.ne.jp%'
       OR o.order_email like '%pdx.ne.jp%'
       OR o.order_email like '%willcom.com%'
       OR o.order_email like '%wcm.ne.jp%'
       OR o.order_email like '%y-mobile.ne.jp%' THEN '携帯'
     ELSE 'PC'
     END as "PCor携帯"

FROM
dtb_order AS o

-----範囲指定箇所はここになります-----
WHERE
o.order_id >= [数字1]
AND
o.order_id <= [数字2]
--------------------------------------

ECCUBE→高度な設定のSQL(バージョンアップ)説明付

色々いじって最終的にこうなった。
ECCUBEのSQLは現在PostgreSQL 9.3.11となっているためこれに対応
住所1と住所2はマクロでの比較用
こちらとしては郵便番号対応の住所1と対応範囲外の住所2に分けたほうがいいので
下に説明なしがありますので使用する際はそちらをご利用ください
またECCUBE→高度な設定において最初のSELECTが省略されています。
他の場所で使う場合はSELECTを記入になります。
SELECT部分のas "***",の***は列の項目名になります。

--------------------------------------------------------------------------------------


REPLACE(substring(CAST(o.create_date AS varchar) from 1 for 10),'-','/') as "受付日",
→購入日時を文字列にキャストして1文字目から10文字取り出し'-'を'/'に置換
concat(o.order_name01 , ' ' , o.order_name02) as "氏名",
→購入者の苗字と名前を結合
concat(o.order_kana01 , ' ' , o.order_kana02) as "氏名カナ",
→購入者のカナの苗字と名前を結合
CASE o.order_sex WHEN '1' THEN '男' WHEN '2' THEN '女' END as "性別",
→パターン分岐、1の時'男'2の時'女'
concat(o.order_tel01 , '-' , o.order_tel02 , '-' , o.order_tel03) as "電話番号",
→購入者の電話番号を'-'つなぎで結合
REPLACE(substring(CAST(o.order_birth AS varchar) from 1 for 10),'-','/') as "生年月日",
→購入者の誕生日より1文字目から10文字取り出し'-'を'/'に置換
concat(o.order_zip01 , '-' , o.order_zip02) as "郵便番号",
→購入者の郵便番号を'-'つなぎで結合
concat(z1.state,z1.city,z1.town) as "住所1",
→購入者の住所を結合表記(郵便番号検索からわかる分)
concat(p1.name,o.order_addr01,o.order_addr02) as "住所2",
→購入者の住所を結合表記(そのまんま)
substring(CAST(o.create_date AS varchar) from 12 for 5) as "時間帯",
→購入日時を文字列にキャストして12文字目から5文字取り出し
o.deliv_fee as "送料",
→送料
o.payment_method as "支払方法",
→支払方法
s.shipping_time as "配送時間帯",
→配送時間帯
'' as "配送",
→空白列
REPLACE(substring(CAST(s.shipping_date AS varchar) from 1 for 10),'-','/') as "配送指定日",
→配送指定日を文字列にキャストして1文字目から10文字取り出し'-'を'/'に置換
concat(o.customer_id , ' ' , o.payment_method) as "備考",
→備考欄として会員ID' '支払い方法を結合して記入
d.quantity as "商品数",
→商品数
concat(s.shipping_name01 , ' ' , s.shipping_name02) as "配送先名",
→配送先の苗字と名前を結合
concat(s.shipping_kana01 , ' ' , s.shipping_kana02) as "配送先名フリガナ",
→配送先のカナの苗字と名前を結合
concat(s.shipping_tel01 , '-' , s.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
→配送先の電話番号を'-'つなぎで結合
concat(s.shipping_zip01 , '-' , s.shipping_zip02) as "配送先郵便番号",
→配送先の郵便番号を'-'つなぎで結合
concat(z2.state,z2.city,z2.town) as "配送先住所1",
→配送先の住所を結合表記(郵便番号検索からわかる分)
concat(p2.name,s.shipping_addr01,s.shipping_addr02) as "配送先住所2",
→配送先の住所を結合表記(そのまんま)
o.order_id as "注文番号",
→注文番号
d.product_name as "商品名"
→商品名

FROM
→どこのデータベースを使うかの宣言
dtb_order AS o
→dtb_order(注文者テーブル)を'o'としてベースにする
LEFT JOIN dtb_order_detail AS d ON o.order_id = d.order_id
→dtb_order_detail(購入情報テーブル)を'd'としてくっつける。その際の条件はdtb_orderのorder_idとdtb_order_detailのorder_idを同じにする
LEFT JOIN dtb_shipping AS s ON o.order_id = s.order_id
→dtb_shipping(買い物テーブル)を's'としてくっつける。その際の条件はdtb_orderのorder_idとdtb_shippingのorder_idを同じにする
LEFT JOIN mtb_pref AS p1 ON p1.id = o.order_pref
→p1のテーブルをmtb_pref(県名テーブル)とし、p1のIDを購入者のpref(県名番号)と同じにする
LEFT JOIN mtb_pref AS p2 ON p2.id = s.shipping_pref
→p2のテーブルをmtb_pref(県名テーブル)とし、p3のIDを配送先のpref(県名番号)と同じにする
LEFT JOIN mtb_zip AS z1 ON z1.zipcode = concat(o.order_zip01 , o.order_zip02)
→mtb_zip(郵便情報テーブル)をz1とし、z1のzipcodeを注文者の(7桁に結合した)郵便番号と同じにする
LEFT JOIN mtb_zip AS z2 ON z2.zipcode = concat(s.shipping_zip01 , s.shipping_zip02)
→mtb_zip(郵便情報テーブル)をz2とし、z2のzipcodeを配送先の(7桁に結合した)郵便番号と同じにする

WHERE
→条件の宣言?
o.order_id >= 7780
→注文番号が7780以上

ORDER BY
→ソートを掛ける際の宣言
o.order_id
→注文情報の列を選択。昇順させる

--------------------------------------------------------------------------------------

まあここからマクロで調整になるんですけどね

以下説明なし版



--------------------------------------------------------------------------------------
REPLACE(substring(CAST(o.create_date AS varchar) from 1 for 10),'-','/') as "受付日",
concat(o.order_name01 , ' ' , o.order_name02) as "氏名",
concat(o.order_kana01 , ' ' , o.order_kana02) as "氏名カナ",
CASE o.order_sex WHEN '1' THEN '男' WHEN '2' THEN '女' END as "性別",
concat(o.order_tel01 , '-' , o.order_tel02 , '-' , o.order_tel03) as "電話番号",
REPLACE(substring(CAST(o.order_birth AS varchar) from 1 for 10),'-','/') as "生年月日",
concat(o.order_zip01 , '-' , o.order_zip02) as "郵便番号",
concat(z1.state,z1.city,z1.town) as "住所1",
concat(p1.name,o.order_addr01,o.order_addr02) as "住所2",
substring(CAST(o.create_date AS varchar) from 12 for 5) as "時間帯",
o.deliv_fee as "送料",
o.payment_method as "支払方法",
s.shipping_time as "配送時間帯",
'' as "配送",
REPLACE(substring(CAST(s.shipping_date AS varchar) from 1 for 10),'-','/') as "配送指定日",
concat(o.customer_id , ' ' , o.payment_method) as "備考",
d.quantity as "商品数",
concat(s.shipping_name01 , ' ' , s.shipping_name02) as "配送先名",
concat(s.shipping_kana01 , ' ' , s.shipping_kana02) as "配送先名フリガナ",
concat(s.shipping_tel01 , '-' , s.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
concat(s.shipping_zip01 , '-' , s.shipping_zip02) as "配送先郵便番号",
concat(z2.state,z2.city,z2.town) as "配送先住所1",
concat(p2.name,s.shipping_addr01,s.shipping_addr02) as "配送先住所2",
o.order_id as "注文番号",
d.product_name as "商品名"

FROM
dtb_order AS o
LEFT JOIN dtb_order_detail AS d ON o.order_id = d.order_id
LEFT JOIN dtb_shipping AS s ON o.order_id = s.order_id
LEFT JOIN mtb_pref AS p1 ON p1.id = o.order_pref
LEFT JOIN mtb_pref AS p2 ON p2.id = s.shipping_pref
LEFT JOIN mtb_zip AS z1 ON z1.zipcode = concat(o.order_zip01 , o.order_zip02)
LEFT JOIN mtb_zip AS z2 ON z2.zipcode = concat(s.shipping_zip01 , s.shipping_zip02)
WHERE
o.order_id >= 7780
ORDER BY
o.order_id

ECCUBE→高度な設定

SQLはじめて試行錯誤でこうなった。

--------------------------------------------------------------------------------------

dtb_shipping.create_date as "受付日",
concat(dtb_order.order_name01 , ' ' , dtb_order.order_name02) as "注文者氏名",
concat(dtb_order.order_kana01 , ' ' , dtb_order.order_kana02) as "注文者注文者カナ",
dtb_order.order_sex as "注文者性別",
concat(dtb_order.order_tel01 , '-' , dtb_order.order_tel02 , '-' , dtb_order.order_tel03) as "注文者電話番号",
dtb_order.order_birth as "注文者生年月日",
concat(dtb_order.order_zip01 , '-' , dtb_order.order_zip02) as "注文者郵便番号",
concat(dtb_order.order_pref,dtb_order.order_addr01) as "注文者住所1",
dtb_order.order_addr02 as "注文者住所2",
dtb_order.deliv_fee as "送料",
dtb_order.payment_method as "支払方法",
dtb_order_detail.quantity as "商品数",
concat(dtb_shipping.shipping_name01 , ' ' , dtb_shipping.shipping_name02) as "配送先名",
concat(dtb_shipping.shipping_kana01 , ' ' , dtb_shipping.shipping_kana02) as "配送先名フリガナ",
concat(dtb_shipping.shipping_tel01 , '-' , dtb_shipping.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
concat(dtb_shipping.shipping_zip01 , '-' , dtb_shipping.shipping_zip02) as "配送先郵便番号",
concat(dtb_shipping.shipping_pref,dtb_shipping.shipping_addr01) as "配送先住所1",
dtb_shipping.shipping_addr02 as "配送先住所2",
dtb_order_detail.product_name as "商品名"

FROM
dtb_shipping,dtb_order,dtb_order_detail

WHERE
dtb_order.order_id=dtb_shipping.order_id
AND
dtb_order.order_id=dtb_order_detail.order_id

--------------------------------------------------------------------------------------

一応これで注文者情報と配送先の情報と注文内容が把握できるかな
最新コメント
記事検索