秀逸認定。
今月から、EC-CUBEのインテグレートパートナーに登録を。
で、さっそく
EC-CUBEインテグレートパートナー 保有ポイント一覧
なるものを見てみたら…。
なぜか、構築事例を1件しか登録していないのに、構築事例のポイントが50ポイントになってる。
ん?
確か構築事例を申請してもらえるポイントは25ポイントじゃ…。
(詳しくはココを)
よくよく見てみたら、
[ 秀逸構築事例 ]
該当の構築事例に対し、EC-CUBE運営チームが秀逸認定をしたものには、さらに25ポイント加算されます。
▲▲▲
こんな一文を発見。
もしや!
登録したサイトが秀逸認定されたってこと?
あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!
で、さっそく
EC-CUBEインテグレートパートナー 保有ポイント一覧
なるものを見てみたら…。
なぜか、構築事例を1件しか登録していないのに、構築事例のポイントが50ポイントになってる。
ん?
確か構築事例を申請してもらえるポイントは25ポイントじゃ…。
(詳しくはココを)
よくよく見てみたら、
[ 秀逸構築事例 ]
該当の構築事例に対し、EC-CUBE運営チームが秀逸認定をしたものには、さらに25ポイント加算されます。
▲▲▲
こんな一文を発見。
もしや!
登録したサイトが秀逸認定されたってこと?
あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!
FORMのTEXT入力時に、Enterキーをブロック。…して、次の入力フォームへ。
<script type="text/javascript">
function handleEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
}
else
return true;
}
</script>
でもって、<input type="text"…>の中に
onkeypress="return handleEnter(this, event)"
でおk
フォームのチェックボックスを配列でPOSTするときの全選択・全解除
<SCRIPT TYPE="text/javascript">
function check(targetForm,flag){
for(n=0;n<=targetForm.length-1;n++){
if(targetForm.elements[n].type == "checkbox"){
targetForm.elements[n].checked = flag;
}
}
}
</SCRIPT>
<form name="Form" method="post" action="#" id="Form1">
<label><input type="checkbox" name="name[]" value="データ1" ></input>データ1</label>
<label><input type="checkbox" name="name[]" value="データ2" ></input>データ2</label>
<label><input type="checkbox" name="name[]" value="データ3" ></input>データ3</label>
<input type="button" value="全選択" onClick="check(this.form,true)"/>
<input type="button" value="全解除" onClick="check(this.form,false)"/>
</form>
追記。。。
jQueryを使うやり方、c⌒っ゚д゚)っφ メモメモ...
----------------------JavaScript---------------------------------
<script type="text/javascript" src="jquery.js"></script>
<SCRIPT>
//すべてを選択
function checkAll(flg){
$field_set = $("input[id^='"+flg+"']")
$field_set.attr('checked', true);
$field_set.next().removeClass('checkbox_unchecked');
$field_set.next().addClass('checkbox_checked');
};
//すべてを解除
function removeAll(flg){
$target_set = $("input[id^='"+flg+"']")
$target_set.removeAttr('checked');
$("label[for*='"+flg+"']").removeClass('checkbox_checked');
$("label[for*='"+flg+"']").addClass('checkbox_unchecked');
};
</script>
----------------------JavaScript---------------------------------
----------------------HTML---------------------------------------
<form>
<input name="area[]" type="checkbox" value="*" id="chk1_1"/><label for="chk1_18">東京</label>
<input name="area[]" type="checkbox" value="*" id="chk1_2"/><label for="chk1_18">大阪</label>
<input name="area[]" type="checkbox" value="*" id="chk1_3"/><label for="chk1_18">沖縄</label>
<a href="javascript:void(0);" onclick="checkAll('chk1');">すべて選択</a>
<a href="javascript:void(0);" onclick="removeAll('chk1');">すべて解除</a>
<input name="area2[]" type="checkbox" value="*" id="chk2_1"/><label for="chk2_18">東京</label>
<input name="area2[]" type="checkbox" value="*" id="chk2_2"/><label for="chk2_18">大阪</label>
<input name="area2[]" type="checkbox" value="*" id="chk2_3"/><label for="chk2_18">沖縄</label>
<a href="javascript:void(0);" onclick="checkAll('chk2');">すべて選択</a>
<a href="javascript:void(0);" onclick="removeAll('chk2');">すべて解除</a>
</form>
----------------------HTML---------------------------------------
function check(targetForm,flag){
for(n=0;n<=targetForm.length-1;n++){
if(targetForm.elements[n].type == "checkbox"){
targetForm.elements[n].checked = flag;
}
}
}
</SCRIPT>
<form name="Form" method="post" action="#" id="Form1">
<label><input type="checkbox" name="name[]" value="データ1" ></input>データ1</label>
<label><input type="checkbox" name="name[]" value="データ2" ></input>データ2</label>
<label><input type="checkbox" name="name[]" value="データ3" ></input>データ3</label>
<input type="button" value="全選択" onClick="check(this.form,true)"/>
<input type="button" value="全解除" onClick="check(this.form,false)"/>
</form>
追記。。。
jQueryを使うやり方、c⌒っ゚д゚)っφ メモメモ...
----------------------JavaScript---------------------------------
<script type="text/javascript" src="jquery.js"></script>
<SCRIPT>
//すべてを選択
function checkAll(flg){
$field_set = $("input[id^='"+flg+"']")
$field_set.attr('checked', true);
$field_set.next().removeClass('checkbox_unchecked');
$field_set.next().addClass('checkbox_checked');
};
//すべてを解除
function removeAll(flg){
$target_set = $("input[id^='"+flg+"']")
$target_set.removeAttr('checked');
$("label[for*='"+flg+"']").removeClass('checkbox_checked');
$("label[for*='"+flg+"']").addClass('checkbox_unchecked');
};
</script>
----------------------JavaScript---------------------------------
----------------------HTML---------------------------------------
<form>
<input name="area[]" type="checkbox" value="*" id="chk1_1"/><label for="chk1_18">東京</label>
<input name="area[]" type="checkbox" value="*" id="chk1_2"/><label for="chk1_18">大阪</label>
<input name="area[]" type="checkbox" value="*" id="chk1_3"/><label for="chk1_18">沖縄</label>
<a href="javascript:void(0);" onclick="checkAll('chk1');">すべて選択</a>
<a href="javascript:void(0);" onclick="removeAll('chk1');">すべて解除</a>
<input name="area2[]" type="checkbox" value="*" id="chk2_1"/><label for="chk2_18">東京</label>
<input name="area2[]" type="checkbox" value="*" id="chk2_2"/><label for="chk2_18">大阪</label>
<input name="area2[]" type="checkbox" value="*" id="chk2_3"/><label for="chk2_18">沖縄</label>
<a href="javascript:void(0);" onclick="checkAll('chk2');">すべて選択</a>
<a href="javascript:void(0);" onclick="removeAll('chk2');">すべて解除</a>
</form>
----------------------HTML---------------------------------------
EC-CUBE2.11 配送先ごとに送料を設定する…。
なにやら、EC-CUBEのコミュでこのブログの記事にリンクが貼られていましたょ(・∀・)
というわけで、配送先ごとに送料を設定する方法を…。
まずは、前提条件として。
・商品毎に送料が設定されている。
・同じ配送先の送料は、商品別送料の中から一番高い金額を設定する。
・幾ら以上は送料無料…の設定がある。
いじるのは、おなじみの「/data/class/SC_CartSession.php」です。
まずは608行目付近の
// 送料無料チェック
if ($this->isDelivFree($productTypeId)) {
$results['deliv_fee'] = 0;
}
の後に、以下のコードを追加っと。
//--------------------------------------------------------
/* ▼▼▼お届け先が複数ならそれごとに送料を再計算▼▼▼ */
//--------------------------------------------------------
if ( count($_SESSION['shipping']) > 1 ){
//---------[初期処理]-------------
//とりあえず、$results['deliv_fee']を0にしておく
$results['deliv_fee'] = 0;
//何人目かを記録しておくためのフラグ
$multi = 0;
//---------[初期処理終了]---------
//人数分の繰り返し
foreach ( $_SESSION['shipping'] as $deli) {
//配送先ごとの商品代金合計を初期化
$total_indiv = 0;
$temp_list = $deli['shipment_item'];
$item = array_keys( $temp_list );//商品のコードを配列から取得
//商品分の繰り返し
for ($loop = 0; $loop < count($item); $loop++){
$item_code = $item[$loop];
$quant = $item_code;
$quantity = $deli['shipment_item'][$quant]['quantity'];
//EC-CUBEのデータベースから商品価格と送料を引っ張ってくる
$objQuery = new SC_Query();
$haisou = $objQuery->getOne("SELECT price02,deliv_fee FROM dtb_products_class where product_code = " . $item_code . ";");
$temp_indiv = $haisou['sell_price'] * $quantity;
$total_indiv += $temp_indiv;
$subTotal_fee[] = $haisou['deliv_fee'];
}//人数分の繰り返し
//個別の購入金額が送料無料条件なら送料無料、そうでなければ一番高い送料を設定
$deliv_fee = ( $total_indiv > $objQuery->getOne("SELECT free_rule FROM dtb_base_info;") ) ? 0:max($subTotal_fee);
//送料の総合計に個別送料を足していく
$results['deliv_fee'] += $deliv_fee;
//送料と合計金額をセッションに保存(後で表示に使うため)
$_SESSION['multi_deliv'][$multi]['deliv_fee'] = $deliv_fee;
$_SESSION['multi_deliv'][$multi]['total_indiv'] = $total_indiv;
$multi++;
}//人数分の繰り返し
}
//----------------------------------------------------
/* ▲▲▲お届け先ごとに送料を再計算(ここまで)▲▲▲ */
//----------------------------------------------------
試しにやってみたら、動いたんで問題はないかと思うのですが…。
デフォルトの状態の処理なら、最新の記事を見てください。
というわけで、配送先ごとに送料を設定する方法を…。
まずは、前提条件として。
・商品毎に送料が設定されている。
・同じ配送先の送料は、商品別送料の中から一番高い金額を設定する。
・幾ら以上は送料無料…の設定がある。
いじるのは、おなじみの「/data/class/SC_CartSession.php」です。
まずは608行目付近の
// 送料無料チェック
if ($this->isDelivFree($productTypeId)) {
$results['deliv_fee'] = 0;
}
の後に、以下のコードを追加っと。
//--------------------------------------------------------
/* ▼▼▼お届け先が複数ならそれごとに送料を再計算▼▼▼ */
//--------------------------------------------------------
if ( count($_SESSION['shipping']) > 1 ){
//---------[初期処理]-------------
//とりあえず、$results['deliv_fee']を0にしておく
$results['deliv_fee'] = 0;
//何人目かを記録しておくためのフラグ
$multi = 0;
//---------[初期処理終了]---------
//人数分の繰り返し
foreach ( $_SESSION['shipping'] as $deli) {
//配送先ごとの商品代金合計を初期化
$total_indiv = 0;
$temp_list = $deli['shipment_item'];
$item = array_keys( $temp_list );//商品のコードを配列から取得
//商品分の繰り返し
for ($loop = 0; $loop < count($item); $loop++){
$item_code = $item[$loop];
$quant = $item_code;
$quantity = $deli['shipment_item'][$quant]['quantity'];
//EC-CUBEのデータベースから商品価格と送料を引っ張ってくる
$objQuery = new SC_Query();
$haisou = $objQuery->getOne("SELECT price02,deliv_fee FROM dtb_products_class where product_code = " . $item_code . ";");
$temp_indiv = $haisou['sell_price'] * $quantity;
$total_indiv += $temp_indiv;
$subTotal_fee[] = $haisou['deliv_fee'];
}//人数分の繰り返し
//個別の購入金額が送料無料条件なら送料無料、そうでなければ一番高い送料を設定
$deliv_fee = ( $total_indiv > $objQuery->getOne("SELECT free_rule FROM dtb_base_info;") ) ? 0:max($subTotal_fee);
//送料の総合計に個別送料を足していく
$results['deliv_fee'] += $deliv_fee;
//送料と合計金額をセッションに保存(後で表示に使うため)
$_SESSION['multi_deliv'][$multi]['deliv_fee'] = $deliv_fee;
$_SESSION['multi_deliv'][$multi]['total_indiv'] = $total_indiv;
$multi++;
}//人数分の繰り返し
}
//----------------------------------------------------
/* ▲▲▲お届け先ごとに送料を再計算(ここまで)▲▲▲ */
//----------------------------------------------------
試しにやってみたら、動いたんで問題はないかと思うのですが…。
デフォルトの状態の処理なら、最新の記事を見てください。
scroll-to-top(スムーズスクロールでページ上部まで戻る)
jQueryを読み込んだあとに
</script>
$(document).ready(
function() {
$(function () {
$('.back-top a').click(function () {
$('body,html').animate({
scrollTop: 0
}, 800);
return false;
});
});
}
);
</script>
をhead内に
<p class="back-top" >
<a href="#top">▲ ページトップへ▲</a>
</p>
をbody部分に記述。
背景画像を自動リサイズして画面にフィット
背景画像を自動リサイズして画面にうまくフィットさせるjQueryプラグイン「Backstretch」
Backstretch
<script src="jquery-1.6.2.min.js"></script>
<script src="jquery.backstretch.min.js"></script>
でプラグインを読み込んだあと、<head>部分に以下のように記述するだけ。
<script type="text/javascript">
$.backstretch("http://*****/example.jpg");//読み込みたい画像
</script>
簡単すぎる…。
Backstretch
<script src="jquery-1.6.2.min.js"></script>
<script src="jquery.backstretch.min.js"></script>
でプラグインを読み込んだあと、<head>部分に以下のように記述するだけ。
<script type="text/javascript">
$.backstretch("http://*****/example.jpg");//読み込みたい画像
</script>
簡単すぎる…。
12のPHP最適化(高速化)テクニック。
1、staticメソッドが使えるなら使おう。速度は4倍になる
2、__get, __set, __autoload は使わない
3、require_once は重い
4、include, requireで読み込むファイルはフルパスにしよう
5、スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
6、strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
7、preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
8、引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
9、@ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10、$row["id"] は $row[id] より7倍速い
11、PHPのエラーメッセージは重い( noticeとかwarningとか)
12、for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
特に気を付けたいと思ったのが、10番と12番。
よく使っている…。
2、__get, __set, __autoload は使わない
3、require_once は重い
4、include, requireで読み込むファイルはフルパスにしよう
5、スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
6、strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
7、preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
8、引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
9、@ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10、$row["id"] は $row[id] より7倍速い
11、PHPのエラーメッセージは重い( noticeとかwarningとか)
12、for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
特に気を付けたいと思ったのが、10番と12番。
よく使っている…。
switchのcaseで条件式が使える…
switch (TRUE) {
case ($age < 18):
echo '良い子の君にはまだ早い!';
break;
case ($age < 20):
echo 'お酒は二十歳をすぎてから。';
break;
case ($age < 30):
echo 'まだまだ未熟者ですよ。';
break;
case ($age > 35):
echo 'そろそろ結婚を考えてみてはいかがでしょう?';
break;
default:
echo '可もなく不可も無く…';
break;
}
ってな感じで、case文に条件式が使えるということを最近知りました。
case ($age < 18):
echo '良い子の君にはまだ早い!';
break;
case ($age < 20):
echo 'お酒は二十歳をすぎてから。';
break;
case ($age < 30):
echo 'まだまだ未熟者ですよ。';
break;
case ($age > 35):
echo 'そろそろ結婚を考えてみてはいかがでしょう?';
break;
default:
echo '可もなく不可も無く…';
break;
}
ってな感じで、case文に条件式が使えるということを最近知りました。
知っとくと便利かも…なPHPテク
○文字列の圧縮
データをローカルにサイズを小さくして保存したい場合は圧縮するといい。
gzcompress("圧縮したい文字列");
gzuncompress("解答したいデータ(ENCRYPTED)");
で圧縮、解凍ができる。
○処理終了時に実行するハンドラ関数の設定
register_shutdown_function(関数名) を使えば、コード中の処理が全部終わったタイミングで関数を呼べる。
register_shutdown_function("down_example");
function down_example(){
処理;
}
最後に何かを共通で出したい場合…たとえば、取得したデータを表示するとか最後に必ず行うような処理を書いておけば、毎回処理を書かなくてもいいかと。
データをローカルにサイズを小さくして保存したい場合は圧縮するといい。
gzcompress("圧縮したい文字列");
gzuncompress("解答したいデータ(ENCRYPTED)");
で圧縮、解凍ができる。
○処理終了時に実行するハンドラ関数の設定
register_shutdown_function(関数名) を使えば、コード中の処理が全部終わったタイミングで関数を呼べる。
register_shutdown_function("down_example");
function down_example(){
処理;
}
最後に何かを共通で出したい場合…たとえば、取得したデータを表示するとか最後に必ず行うような処理を書いておけば、毎回処理を書かなくてもいいかと。