バージョン選択

フォーラム

メニュー

オンライン状況

20 人のユーザが現在オンラインです。 (10 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 19
keobongboo もっと...

サイト内検索

質問 > フロント機能 > <a href="javascript:void(document.form1.submit())"</a>の設定元

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kenz
投稿日時: 2013/2/27 1:23
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 46
<a href="javascript:void(document.form1.submit())"</a>の設定元
お世話になっております。

ご存知の方がおりましたらお教え願います。

商品詳細ページの”かごに入れる”ボタンは下記の設定になっておりますが、これはどのファイルでリンク先を指定しているのでしょうか。

<a href="java script:void(document.form1.submit())"xxxx</a>

基本的な質問でお恥ずかしいのですが
宜しくお願い致します。




[EC-CUBE]  2.12
[PHP] PHP 5.2.9
[データベース] MySQL 5.0.77
[ブラウザ]各種、IE、Chorome、Safari等
dkazuto
投稿日時: 2013/2/27 2:48
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
kenz様


href="java script:void(document.form1.submit())"


この記述はjavascriptでそのHTMLファイル内のform1をsubmit(遷移)することを表しています。


商品詳細ページ
/data/Smarty/templates/products/detail.tpl
の44行目あたりに


<form name="form1" id="form1" method="post" action="?">


という部分があるかと思います。

HTMLのformでの遷移先はaction属性で設定しますが、ここを見ると
action="?" となっています。

ここで、 ? は自分自身に遷移することを示しています。


つまり、商品詳細ページでカートへ入れるリンクを押すと自分自身へsubmit(遷移)する
ということになります。

ただし、実際にその後の処理を決めているのは、商品詳細ページのphpファイル内部になります。

/data/class/pages/products/LC_Page_Products_Detail.php

の内部で、カートに入れるボタンが押されたことを判別し、
カートページへ遷移させるというような処理が記述されています。

HTMLのフォームに関しては以下のページなどがわかりやすく説明しているかと思います。
http://www7b.biglobe.ne.jp/~homepage-note/html-base-3.html

以上、ご参考ください。
kenz
投稿日時: 2013/2/27 3:58
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 46
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
dkazuto様

参考にさせて頂きます。そして親切に対応してくださっていくら感謝しても感謝しつくせないです。

こうゆう作りになっていたのですね。

商品詳細ページに下記の部分があり、そのボタンをクリックしてカートページへ行く際にtransactionidをひもづけております。

<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->"/>

ご質問はこのtransactionidの後に何らかのcodeを付け加えることは出来ますでしょうか、下記のように。もしYesであれば上記でどんな書き方をすれば宜しいですか。

cart/?transactionid=97a44455rr3fff7777f3c089&code=1

非常に勉強になります。感謝いたします。
dkazuto
投稿日時: 2013/2/27 10:22
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
kenz様

参考になり幸いです。

codeを付け加えることは可能です。

カートページにURLを指定して遷移をさせる部分は
商品詳細ページ内のPHPロジック中に記述があります。

たとえばcode=1をパラメータとしてカートページに送るには、
/data/class/pages/LC_Page_Products_Detail.php
の502行目当たりの


SC_Response_Ex::sendRedirect(CART_URLPATH);

というコードを

SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '1'));


のように書き換えてやる必要があります。

上記によって
cart/?transactionid=97a44455rr3fff7777f3c089&code=1
というようなクエリをカートページに送ることができるようになります。

以上、ご参考ください。
kenz
投稿日時: 2013/2/27 18:08
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 46
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
dkazuto様

すごいです。大変勉強になります。codeとともに次ページに行きました。

今次のようなことを試みておりますが、設定に問題があるためか、if文を読まずcodeが2の時でも一行目の文であるcode=1に行ってしまいます。最初のif文も機能しておらず、ただ最初のSC_Response_Ex::sendR・・から始まる文を読んでいると思われます。

if ('code' == '1')
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '1'));
if ('code' == '2')
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '2'));

このif文のcodeは商品詳細ページのurlが下記のように設定されたものをただ単に使おうとしたものであり、code番号自体はトップページから引いてきたものです。

products/detail.php?product_id=5&code=2

どうゆう設定が必要になるかおわかりになりますでしょうか。
dkazuto
投稿日時: 2013/2/27 18:57
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
kenz様

記載頂いたコードですと、if文の構成が少々間違っています。

下記の様に書き換えてみてください。


if ($_GET['code'] == '1')
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '1'));
if ($_GET['code'] == '2')
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '2'));


URLで指定したパラメータを取得するには、
PHPで$_GETという構文を利用する必要があります。

上記、お試しください。
kenz
投稿日時: 2013/2/27 22:30
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 46
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
dkazuto様

$_GET があるのですね。すごいです。いろいろとお教え頂きまして感謝致します。

現在、ご指摘された様に試しております。

しかしながら、次ページで画面が真っ白い状態になります。
ネット上で調べておりましたら、以下のリンクを見つけまして、

http://q.hatena.ne.jp/1165915799

現在下記のようにしておりますが、変わりありません。画面が白です。

if (isset($_GET['code'] == '1')){
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '1'));
}else{
if (isset($_GET['code'] == '2'))
SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '2'));
}

なにかお分かりになりますでしょうか。
dkazuto
投稿日時: 2013/2/28 0:24
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
kenz様

すみません。
私の勘違いでした。
カートボタンを押したときはGETパラメータが引き継がれません。

以下のように変えてみてください。

まず、
/data/Smarty/templates/default/products/detail.tpl

の44行目あたりを


<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />


から


<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="code" value="<!--{$smarty.get.code}-->" />
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />


に書き換えます。
<input type="hidden" name="code" value="<!--{$smarty.get.code}-->" />
という隠しパラメータを送るHTMLをひとつ増やしました。

また、前のレスで話題になっておりました
/data/class/pages/products/LC_Page_Products_Detail.php
のif文のところを以下のように書き換えます。


if ($_POST['code'] == '1') {
    SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '1'));
} else if ($_POST['code'] == '2') {
    SC_Response_Ex::sendRedirect(CART_URLPATH, array('code' => '2'));
} else {
    SC_Response_Ex::sendRedirect(CART_URLPATH);
}


上記のように書き換えてみてください。
if文の中をGETからPOSTに変更しております。
カートボタンはGETではなく、POSTでデータを取得するということをすっかり忘れておりました。

商品詳細ページにcode=xxでアクセスし、カートに入れるボタンを押すと
code=xxがカートページに引き継がれるという仕様になっています。
また、codeが指定されなかった場合にもちゃんと遷移するようにしてあります。

先ほど私も実際に上記のコードで動作を確認してみましたので、おそらく動くかと思います。

ちなみに、isset関数は値がセットされているかを確認するための関数ですので、
今回は利用しておりません。

以上、お試しください。
kenz
投稿日時: 2013/2/28 6:39
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 46
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
dkazuto様

うごきました。
思い通りに動作しております。本当にありがとうございます。
大変良い勉強をさせて頂いております。


また、ちょっと関連した問題に直面しております。

カートのページに商品の数量を増減するプラス・マイナスのボタンがありますが、リンクの元は以下になっております。

<a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','up','cart_no','<!--{$item.cart_no}-->'); return false">

本件で質問させて頂いておりました事項で、urlがcode=2となっているページであるにもかかわらず、プラス・マイナスボタンをクリックするとデフォルトのページ、ここではurlにcodeがないページに戻ります。

今までと同様のコーディングを組み入れたいと思い、(つまりcode=2の時はプラス・マイナスボタンをおしてもurlにcode=2が付いている状態になる)、いろいろと関連箇所を探しているのですが、どうしても見当たりません。

どこにコーディングを組み入れたら宜しいでしょうか。
申し訳ございませんがお分かりになりますでしょうか。
dkazuto
投稿日時: 2013/2/28 15:50
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: <a href="javascript:void(document.form1.submit())"</a>の設定元
kenz様

そのカスタマイズには、
カートページにも商品詳細ページで加えたような
カスタマイズをする必要があります。

まず、
/data/Smarty/templates/cart/index.tpl
の73行目あたりの
<form .... タグの直下に


<input type="hidden" name="code" value="<!--{$smarty.get.code}-->" />


を追加します。

また、
/data/class/pages/cart/LC_Page_Cart.php
の114行目当たり、case 'up'の


SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id')), true);





if (!empty($_POST['code'])) {
    SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id'), 'code' => $_POST['code']), true);
} else {
    SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id')), true);
}

に置き換えます。

また、同ファイル124行目あたり、case 'down'
も'up'同様に置き換えます。

上記の対応により、カート内で数量を変更してもcodeが引き継がれるようになるかと思います。

以上、ご参考ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,369名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.