Welcart の商品詳細ページを自分で作る
welcart の商品詳細ページってすごく汚いですよね?
かといって、テンプレートをカスタマイズしようにも、そのテンプレ―トが汚くて見ずらい。
そこで考えた。WelCart のカゴボタン等々を張り付けられないか。
WelCartの商品詳細ページを自分で作る方法その1
自分で作ったページの「かごに入れる」ボタンを付けたいところへ1、WelCartの商品詳細ページを表示させる。
2、ソースを見るで、ソースファイルを開く。
3、かごへ入れてるところをコピーして、自分のページへ張り付ける。
そすっとある程度 form 系タグがわからないとできないので。
WelCartの商品詳細ページを自分で作る方法その2
テンプレートを見て直すには、若干敷居が高いかもしれない。つーのは、オリジナルの商品詳細ページでは、そのページそのものの postデータなので、
いきなり usces_the_item(); を呼び出してやれば、マスターデータが決まるわけだ。
自分で作った個別ページでやるためには、post データを確定させないといけないので、
query_posts() でデータを確定させてやる必要がある。
確定させてしまえば、あとはこっちのもの。
テンプレートを見ながらプログラムを書けばいい。
<form action="<?php echo USCES_CART_URL; ?>" method="post"> <?php query_posts(・・・); while(have_posts()) { the_post(); global $post; usces_the_item(); if( usces_sku_num()>0 ){ // form の内容の表示 while (usces_have_skus()){ //オプションの表示 if( usces_is_options()>0 ){ $col = 0; while(usces_have_options()){ // オプション内容の表示 usces_the_itemOption( usces_getItemOptName()); } } } // 数量 usces_the_itemQuant(); // サブミット usces_the_itemSkuButton('カートへ入れる'); } // エラーの受け取り表示 $block = usces_singleitem_error_message($post->ID, usces_the_itemSku('return'), 'return') ; if($block!=''){ echo $block; } } ?> </form>※usces_the_itemQuant は、個数入力ボックスなんだけど、これってクソ長くなるので、ここの長さは、WelCartのQ&Aにありました。
usc-e-shop/css/usces_cart.css 内の#itempage .skuform .skuquantity を修正します。Welcart 専用テーマで無い場合は適宜セレクターを変更してください。
変更が確認できましたら、修正したusces_cart.css をテーマフォルダの中にコピーして設置します。(重要です)
サブミットしてデータチェックで引っかかるとかごに飛ぶのではなくて、そのページに戻ってくる。
なので、エラー受け取り処理の記述が必要となるわけだ。
JavaScript にも似たようなものがあるけど、これはどうやらダミーらしい。
つか、前のバージョンの物なのかも。
classes/usceshop.class.php の中に本物が入ってるので、そこのエラーチェックモジュールを
手直しすると、任意のエラーチェックをいれることができる。 function incart_check() 当たりでやればいい感じ。
ただ、ここを触るとバージョンアップのたびに書き直さないといけなくなるので要注意。
WelCartのフィールドのカスタマイズ
welcart の入力フィールドをカスタマイズするといってもとて泥臭い方法wwelcart の関数のほとんどは ‘return’ を引数にいれてやると、その場で表示ではなくて変数に取り出すことができる。
これを利用する。
ようするに、それを受け取って文字列を置換してやればいい。
例えば、<input name=”??????” class=”iopt_select” ・・・> なら、
class=”iopt_select” を違うクラスにかえてしまってもいい。
※ replace 関数を使って置き換えてしまえw
form のフィールドを分解して、組み立てなおしてもいいわけだ。
欲しいのは、name= と id=” の中身だけだ。
welcart パーツ出血大サービス
これは、welcart に限らないけど、HTMLのタグの要素を取り出す関数のソースです。function get_formfield($buffX,$fieldname){ $buff = $buffX; $p=strpos(" ".$buff,$fieldname); if($p>0){ $p--; $buff = mb_substr($buff,$p+mb_strlen($fieldname)); $p=strpos(" ".$buff,"="); if($p>0){ $p--; $buff = mb_substr($buff,$p+1); $p=strpos(" ".$buff,'"'); if($p>0){ $p--; $buff = mb_substr($buff,$p+1); $p=strpos(" ".$buff,'"'); if($p>0){ $p--; $buff = mb_substr($buff,0,$p); return($buff); } } } } return(""); }使い方は、プログラムを読むとわかると思うけど、
get_formfield(HTMLタグ,取り出したい要素);
戻り値:要素の内容
例、
$a = ‘<a href=”http://hoge.com”>あああ</a>”;
$b = get_formfield($a,’href’);
$b には、http://hoge.com が戻ってくる。
ただし、サービス品なので 要素のくくりがシングルクォートの場合には対応していません。
直して使ってねw
スポンサーリンク