店舗オーナーに管理できる項目を減らす
/data/Smarty/templates/admin/main_frame.tpl
この中にあるナビゲーションリストを表示しなければいいので
<!--{if $smarty.session.authority == 0}-->
から
<!--{/if}-->
の中に、表示させたくないナビ項目を入れるだけでおk。
本当は
<body class="<!--{if strlen($tpl_authority) >= 1}-->authority_<!--{$tpl_authority}--><!--{/if}-->">
とか、
<!--{if $smarty.const.ADMIN_MODE == '1'}-->
<div id="admin-mode-on">ADMIN_MODE ON</div>
<!--{/if}-->
の部分で切り替えてるんだろうけど、処理を追っていくのがメンドクサ…と思ったので。
この中にあるナビゲーションリストを表示しなければいいので
<!--{if $smarty.session.authority == 0}-->
から
<!--{/if}-->
の中に、表示させたくないナビ項目を入れるだけでおk。
本当は
<body class="<!--{if strlen($tpl_authority) >= 1}-->authority_<!--{$tpl_authority}--><!--{/if}-->">
とか、
<!--{if $smarty.const.ADMIN_MODE == '1'}-->
<div id="admin-mode-on">ADMIN_MODE ON</div>
<!--{/if}-->
の部分で切り替えてるんだろうけど、処理を追っていくのがメンドクサ…と思ったので。
The seventh thoughts on flash.
ちょっと前(というか、だいぶ前)に、「Macromedia Director」というソフトがあって、Web用のインタラクティブムービーやCDコンテンツ制作をしてました。
このソフトが使いたくて、Macを使うようになったのは言うまでもありません。
Macromedia DirectorのVer.4を使うために、最初に購入したMacがパフォーマーの6310。
それはおいといて…。
結局、MacromediaはFLASHに力を注ぎ、同じような用途のDirectorはその役目を終えました。
という訳で、MacromediaのFLASHを使うようになり、MacromediaがAdobeに買収されてからは、AdobeのFLASHを使うように。
現在よく使うDreamweaverもFlashも、もともとはMacromediaの製品で、個人的には「Dreamweaver」と「Adobe GoLive」なら前者を「Flash」と「Adobe LiveMotion」においても前者を使用していました。
要するに、DTPならAdobe製品、WebならMacromediaという感じで使い分けていたのです。
ただ、HTML5の登場でFLASHを使う理由がなくなってしまいました。
Web標準の技術は、全てオープンであるべきだというAppleの姿勢にも、同感です。
さらに付け加えるとするなら…。
Web標準の技術は、誰でも公平に学べ、使用でき、そして無料でなければならないと思います。
少なくとも、僕の中ではFLASHはそうではない。
スティーブ・ジョブズはiPhoneやiPad、iPodでFlash(が動くことを)を許可しない理由のひとつにAdobeのFlash製品が100%「プロプライエタリ」であることをあげています。
------------
Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.
------------
実は、このことがその他の項目にも影響を与えています。
スティーブ・ジョブズはまず、1番目に先程の「オープンでない」という理由を述べました。
そのあとの項目は以下のとおりです。
Second, there’s the "full web".
それは、完全なWeb技術ではない。
Third, there’s reliability, security and performance.
信頼性、セキュリティ、そしてパフォーマンスに問題がある。
Fourth, there’s battery life.
バッテリーの寿命に影響する。
Fifth, there’s Touch.
タッチデバイスへの対応が難しい(技術的に、ではなく既存のサイトをタッチデバイス用に作り直す労力)。
Sixth, the most important reason.
(We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.)
開発者が新たな技術の利用を、サードパーティの都合によって左右されてしまう。
つまり、AdobeのFlash製品が100%「プロプライエタリ」であるからこそ、Second~Sixthにあげたような問題が起こるわけです。
僕はここに、7番目の理由を付け加えます。
それは、AdobeのFlash技術が無料で手に入らないものだという理由です。
ActionScriptを書くくらいなら、フリーのソフトでもそれは行えます。
ただし、AdobeのFlash製品を使わなければ、そもそもAdobeの技術であるFlash技術の恩恵の100%を受けられないのは明白です。
Adobe Flash Professional CS5.5 \88,200
Adobe Flash Catalyst CS5.5 \39,900
Adobe Flash Builder 4.5 Premium Edition \89,250
Adobe Flash Builder 4.5 Standard Edition \31,500
You must buy this expensive software.
こんな高価なソフトを購入しなければ100%その恩恵にあずかれないような技術が、Web標準技術のわけがありません。
HTML5もCSS3も、JavaScriptも…ブラウザ(実行環境)さえあれば100%その恩恵にあずかれるというのに…。
ことWebということに関して言えば、ブラウザとメモ帳さえあればアプリケーションが作れます。
実際に、僕がWebの簡単なアプリを作る時には、動作チェック用のブラウザとメモ帳だけで作成します。
オープンな技術であるHTML5,CSS3,JavaScriptにPHPを組み合わせれば、ほとんどのことが可能です。
1日1ドル未満で生活する、いわゆる最貧困層と呼ばれる人々が、100%Flashの恩恵にあずかれますか?
Flashを学べますか?
いろいろあって、僕もネットカフェ難民やホームレス生活をしていたことがあります。
ちょうどリーマンショック後のいろいろあった時期です。
でも、そこから離脱出来たのは「無料」で手に入るオープンな技術を学べたからだと思っています。
ネットカフェに転がり込むことが出来たなら、なんとかメモ帳とブラウザ、それからネット回線は確保できます。
あとは、Google先生に聞いて、勉強すればいい。
寝る間も惜しんで必死に勉強しました。
明日を生きていくために。
今の僕は、その頃に描いていた明日を生きているわけです。
もし「Flashの購入」がWeb技術者としての最低条件であったなら…。
僕の明日はもっと変わったものになっていたかもしれませんね。
少なくとも、挫折していたでしょう。
まあ、今もEC-CUBEやMySQLなんていうオープンソースや、スティーブの言うオープンなWeb技術(HTML5,CSS3,JavaScript等)で食べてるというオチがありますが…(´∀`)
基金訓練の講師をしていてこんなことを言うのも何なんですが、求められるのであれば、1日1ドル未満で生活する最貧困層の人々に技術を教えたいと思ってます。
このソフトが使いたくて、Macを使うようになったのは言うまでもありません。
Macromedia DirectorのVer.4を使うために、最初に購入したMacがパフォーマーの6310。
それはおいといて…。
結局、MacromediaはFLASHに力を注ぎ、同じような用途のDirectorはその役目を終えました。
という訳で、MacromediaのFLASHを使うようになり、MacromediaがAdobeに買収されてからは、AdobeのFLASHを使うように。
現在よく使うDreamweaverもFlashも、もともとはMacromediaの製品で、個人的には「Dreamweaver」と「Adobe GoLive」なら前者を「Flash」と「Adobe LiveMotion」においても前者を使用していました。
要するに、DTPならAdobe製品、WebならMacromediaという感じで使い分けていたのです。
ただ、HTML5の登場でFLASHを使う理由がなくなってしまいました。
Web標準の技術は、全てオープンであるべきだというAppleの姿勢にも、同感です。
さらに付け加えるとするなら…。
Web標準の技術は、誰でも公平に学べ、使用でき、そして無料でなければならないと思います。
少なくとも、僕の中ではFLASHはそうではない。
スティーブ・ジョブズはiPhoneやiPad、iPodでFlash(が動くことを)を許可しない理由のひとつにAdobeのFlash製品が100%「プロプライエタリ」であることをあげています。
------------
Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.
------------
実は、このことがその他の項目にも影響を与えています。
スティーブ・ジョブズはまず、1番目に先程の「オープンでない」という理由を述べました。
そのあとの項目は以下のとおりです。
Second, there’s the "full web".
それは、完全なWeb技術ではない。
Third, there’s reliability, security and performance.
信頼性、セキュリティ、そしてパフォーマンスに問題がある。
Fourth, there’s battery life.
バッテリーの寿命に影響する。
Fifth, there’s Touch.
タッチデバイスへの対応が難しい(技術的に、ではなく既存のサイトをタッチデバイス用に作り直す労力)。
Sixth, the most important reason.
(We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.)
開発者が新たな技術の利用を、サードパーティの都合によって左右されてしまう。
つまり、AdobeのFlash製品が100%「プロプライエタリ」であるからこそ、Second~Sixthにあげたような問題が起こるわけです。
僕はここに、7番目の理由を付け加えます。
それは、AdobeのFlash技術が無料で手に入らないものだという理由です。
ActionScriptを書くくらいなら、フリーのソフトでもそれは行えます。
ただし、AdobeのFlash製品を使わなければ、そもそもAdobeの技術であるFlash技術の恩恵の100%を受けられないのは明白です。
Adobe Flash Professional CS5.5 \88,200
Adobe Flash Catalyst CS5.5 \39,900
Adobe Flash Builder 4.5 Premium Edition \89,250
Adobe Flash Builder 4.5 Standard Edition \31,500
You must buy this expensive software.
こんな高価なソフトを購入しなければ100%その恩恵にあずかれないような技術が、Web標準技術のわけがありません。
HTML5もCSS3も、JavaScriptも…ブラウザ(実行環境)さえあれば100%その恩恵にあずかれるというのに…。
ことWebということに関して言えば、ブラウザとメモ帳さえあればアプリケーションが作れます。
実際に、僕がWebの簡単なアプリを作る時には、動作チェック用のブラウザとメモ帳だけで作成します。
オープンな技術であるHTML5,CSS3,JavaScriptにPHPを組み合わせれば、ほとんどのことが可能です。
1日1ドル未満で生活する、いわゆる最貧困層と呼ばれる人々が、100%Flashの恩恵にあずかれますか?
Flashを学べますか?
いろいろあって、僕もネットカフェ難民やホームレス生活をしていたことがあります。
ちょうどリーマンショック後のいろいろあった時期です。
でも、そこから離脱出来たのは「無料」で手に入るオープンな技術を学べたからだと思っています。
ネットカフェに転がり込むことが出来たなら、なんとかメモ帳とブラウザ、それからネット回線は確保できます。
あとは、Google先生に聞いて、勉強すればいい。
寝る間も惜しんで必死に勉強しました。
明日を生きていくために。
今の僕は、その頃に描いていた明日を生きているわけです。
もし「Flashの購入」がWeb技術者としての最低条件であったなら…。
僕の明日はもっと変わったものになっていたかもしれませんね。
少なくとも、挫折していたでしょう。
まあ、今もEC-CUBEやMySQLなんていうオープンソースや、スティーブの言うオープンなWeb技術(HTML5,CSS3,JavaScript等)で食べてるというオチがありますが…(´∀`)
基金訓練の講師をしていてこんなことを言うのも何なんですが、求められるのであれば、1日1ドル未満で生活する最貧困層の人々に技術を教えたいと思ってます。
draggable tile wall
MMP""MM""YMM `7MMF' `7MMF'`7MM"""YMM `7MMF' A `7MF' db `7MMF' `7MMF'
P' MM `7 MM MM MM `7 `MA ,MA ,V ;MM: MM MM
MM MM MM MM d VM: ,VVM: ,V ,V^MM. MM MM
MM MMmmmmmmMM MMmmMM MM. M' MM. M' ,M `MM MM MM
MM MM MM MM Y , `MM A' `MM A' AbmmmqMA MM , MM ,
MM MM MM MM ,M :MM; :MM; A' VML MM ,M MM ,M
.JMML. .JMML. .JMML..JMMmmmmMMM VF VF .AMA. .AMMA..JMMmmmmMMM .JMMmmmmMMM
なんじゃこりゃ…。
「THE WALL」( http://wall.plasm.it/ )
▲
このサイトの、ドラッグ可能なタイル状の壁紙が、なかなか使えそう。
要素を検証してみたら
<div class="tile" col="7" row="-2" rel="7x-2" style="position: absolute; left: 1050px; top: -300px; width: 150px; height: 150px; background-image: url(http://wall.plasm.it/application/assets/images/thewall-null-150x150.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 50% 50%; background-repeat: no-repeat no-repeat; "><img src="/public/images/middle/55.jpg" style="visibility: visible; zoom: 1; opacity: 1; "></div>
こんな感じのがたくさん並んでたので、jsを弄ってDBからデータを読み出すプログラムを書いたら、各画像にリンクを貼ったタイル状の壁紙もできそう。
暇みてチャレンジしてみようっと。
DNS以降時に旧サーバーに届くメールを新サーバーで受信。
通常、DNSの書き換えを行うと、旧サーバー宛に届くメールと新サーバーに届くメールで分かれてしまう。
なので、旧サーバーに届くメールを新サーバーに転送したいけど、そもそも旧サーバーのDNSが新サーバーを参照していなければ、自分にメールを送るだけ…。
という訳で、別ドメインに転送して、それを新サーバーに転送。
転送したい別ドメインが新サーバー上にあるのなら、それを内部で転送する、あるいはその別ドメインに届いたメールを正規のドメインに届いたメールとして扱えばいい。
使用中のドメイン:aaa.com
転送用のドメイン:example.com
とする。
というわけで、Postfixにバーチャルドメイン設定を…。
/etc/postfix/main.cfを編集。
要は、別ドメイン(example.com)に届くメールも、現在運用中のaaa.com宛に届いたことにしてしまおう…ということ。
あとは、example.comが新サーバーを向くようにDNS設定をして、しばらく待つ。
全世界中のDNS情報が書き変わるまで…。
その後、旧サーバーのメールボックスに、example.comへの転送設定。
あとは、aaa.comの参照先が設定されているDNSを旧サーバーから新サーバーに切り替える。
これで、旧サーバーに届くメールはexample.comに転送…つまり新サーバーで受け取れる。
…ハズなんだけど。
僕自身、あまりWebに詳しくはないのだけれど、どんなDNSサービスだって「切り替わるのに数日かかります」と言ってるわけで…。
それが、Webのルール…というより決まり事。
ちゃんと案内しましょうね…(-_-;)
なので、旧サーバーに届くメールを新サーバーに転送したいけど、そもそも旧サーバーのDNSが新サーバーを参照していなければ、自分にメールを送るだけ…。
という訳で、別ドメインに転送して、それを新サーバーに転送。
転送したい別ドメインが新サーバー上にあるのなら、それを内部で転送する、あるいはその別ドメインに届いたメールを正規のドメインに届いたメールとして扱えばいい。
使用中のドメイン:aaa.com
転送用のドメイン:example.com
とする。
というわけで、Postfixにバーチャルドメイン設定を…。
/etc/postfix/main.cfを編集。
mydestination = $mydomain, $myhostname, localhost.$mydomain
▼
mydestination = $mydomain, $myhostname, localhost.$mydomain,example.com
要は、別ドメイン(example.com)に届くメールも、現在運用中のaaa.com宛に届いたことにしてしまおう…ということ。
あとは、example.comが新サーバーを向くようにDNS設定をして、しばらく待つ。
全世界中のDNS情報が書き変わるまで…。
その後、旧サーバーのメールボックスに、example.comへの転送設定。
あとは、aaa.comの参照先が設定されているDNSを旧サーバーから新サーバーに切り替える。
これで、旧サーバーに届くメールはexample.comに転送…つまり新サーバーで受け取れる。
…ハズなんだけど。
僕自身、あまりWebに詳しくはないのだけれど、どんなDNSサービスだって「切り替わるのに数日かかります」と言ってるわけで…。
それが、Webのルール…というより決まり事。
ちゃんと案内しましょうね…(-_-;)
eccube 2.11 マイページのメニューにログアウト追加
よくよく考えたら、マイページに「ログアウトボタン」つけてなかった…。
ってことで、マイページのナビ部分(上部のメニュー部分)にログアウトリンクを追加。。
/data/class/pages/mypage/LC_Page_Mypage.php
の
function action()の最後に以下を追加。
-------------------------------------------------------
//$_GETパラメーターで'?mode=logout'が設定されていたら、ログアウトする。
if ($_GET['mode'] == 'logout'){
//ログイン情報の開放
$objCustomer->EndSession();
//ログインページ表示
header("Location: index.php");
}
-------------------------------------------------------
もうお分かりですね。
あとは、
/data/Smarty/templates/default/mypage/navi.tpl
のメニュー部分(<ul class="mynavi_list clearfix">部分)に
<li>
<a href="index.php?mode=logout" class="<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->">ログアウト</a>
</li>
を追加するだけで、ログアウトしたらまたログイン画面に戻ってきます。
ってことで、マイページのナビ部分(上部のメニュー部分)にログアウトリンクを追加。。
/data/class/pages/mypage/LC_Page_Mypage.php
の
function action()の最後に以下を追加。
-------------------------------------------------------
//$_GETパラメーターで'?mode=logout'が設定されていたら、ログアウトする。
if ($_GET['mode'] == 'logout'){
//ログイン情報の開放
$objCustomer->EndSession();
//ログインページ表示
header("Location: index.php");
}
-------------------------------------------------------
もうお分かりですね。
あとは、
/data/Smarty/templates/default/mypage/navi.tpl
のメニュー部分(<ul class="mynavi_list clearfix">部分)に
<li>
<a href="index.php?mode=logout" class="<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->">ログアウト</a>
</li>
を追加するだけで、ログアウトしたらまたログイン画面に戻ってきます。
eccube 2.11.2 「今回加算ポイント」がゼロ!?
EC-CUBE 2.11.2で、ポイント機能をtrueにしているのにカートページにて「今回加算ポイント」が取得できない問題が発生。。。。
/data/class/helper/SC_CartSession.php
を見てみると…。
function getAllProductsPoint($productTypeId) {}
で、ポイントを計算しているようだけど、取得出来ていない。
SC_Utils.phpのsfPrePoint()が悪いのか
SC_Helper_DB.phpのsfGetAddPoint()が悪いのか…。
($CONF = SC_Helper_DB_Ex::sfGetBasisData();あたりが関係ありそうな…)
とにかく、原因を究明するにはちょっと時間が掛かりそうだったので、応急処置。
要するに、
/data/class/helper/SC_CartSession.phpのcalculate()内で最終的に
「$results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point,$use_point);」
で計算されている部分を、単なる条件式に変えてしまえばいい…と。
今回の条件は、購入金額の1%がポイントとして還元されるというものなので
$results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point,$use_point);
▼
$results['add_point'] = (int)( ( $results['subtotal'] -= $discount ) / 100 );
に変更。
これで、加算ポイントが反映された訳だけど、早急に原因を解明しなきゃ…。
追記。
理由があっさりと判明。
dtb_products_classのpoint_rateが全部ゼロになってた。
ただ、商品ひとつひとつに対してポイントの計算をするので、複数の商品を購入した場合にはポイントの「切り捨て」処理によって「合計購入金額/100」ではなくなってしまう。
かと言って切り上げにしておくと、余計なポイントを付与してしまう可能性もあるので、結局書いた処理はそのままに。
(A/100・切り捨て)+(B/100・切り捨て)+(C/100・切り捨て)
▼
(A+B+C)/100・切り捨て
の方がいいと思うのだけれど…。
/data/class/helper/SC_CartSession.php
を見てみると…。
function getAllProductsPoint($productTypeId) {}
で、ポイントを計算しているようだけど、取得出来ていない。
SC_Utils.phpのsfPrePoint()が悪いのか
SC_Helper_DB.phpのsfGetAddPoint()が悪いのか…。
($CONF = SC_Helper_DB_Ex::sfGetBasisData();あたりが関係ありそうな…)
とにかく、原因を究明するにはちょっと時間が掛かりそうだったので、応急処置。
要するに、
/data/class/helper/SC_CartSession.phpのcalculate()内で最終的に
「$results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point,$use_point);」
で計算されている部分を、単なる条件式に変えてしまえばいい…と。
今回の条件は、購入金額の1%がポイントとして還元されるというものなので
$results['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($total_point,$use_point);
▼
$results['add_point'] = (int)( ( $results['subtotal'] -= $discount ) / 100 );
に変更。
これで、加算ポイントが反映された訳だけど、早急に原因を解明しなきゃ…。
追記。
理由があっさりと判明。
dtb_products_classのpoint_rateが全部ゼロになってた。
ただ、商品ひとつひとつに対してポイントの計算をするので、複数の商品を購入した場合にはポイントの「切り捨て」処理によって「合計購入金額/100」ではなくなってしまう。
かと言って切り上げにしておくと、余計なポイントを付与してしまう可能性もあるので、結局書いた処理はそのままに。
(A/100・切り捨て)+(B/100・切り捨て)+(C/100・切り捨て)
▼
(A+B+C)/100・切り捨て
の方がいいと思うのだけれど…。
ec-cube決済モジュールにて「決済処理中」の動作
クレジット決済を途中でやめた、あるいは決済がうまくいかなかったときに、受注ステータスが「決済処理中」になってしまう。
とりあえず、会員ページ(MyPage)にて決済がうまくいかなかったものまで表示されてしまうのを防ぐために
/data/class/pages/mypage/LC_Page_Mypage.php
の125行目を
$col = "order_id, create_date, payment_id, payment_total";
▼
$col = "order_id, create_date, payment_id, payment_total,note";
に変更。
例えば「ZEUS」決済モジュールは、決済がうまくいくと「dtb_order」の「note」に「ZEUS_ORDER_ID…」というデータが書き込まれるので、これがあるかないかを判断するためにSELECT文に追加しておく。
その上で
/data/Smarty/templates/default/mypage/index.tpl
の「詳細」表示部分を以下のように変更。
<td class="alignC">
<!--{if $arrOrder[cnt].payment_id == 5 and $arrOrder[cnt].note == Null}-->
未完了
<!--{else}-->
<a href="mypage/history.php?order_id=<!--{$arrOrder[cnt].order_id}-->">詳細</a>
<!--{/if}-->
</td>
赤字の部分は、dtb_paymentのpayment_methodがクレジットのレコードのpayment_idを。
とりあえず、これで会員には「この注文は完了できませんでしたよ」と伝えることができる。
とりあえず、会員ページ(MyPage)にて決済がうまくいかなかったものまで表示されてしまうのを防ぐために
/data/class/pages/mypage/LC_Page_Mypage.php
の125行目を
$col = "order_id, create_date, payment_id, payment_total";
▼
$col = "order_id, create_date, payment_id, payment_total,note";
に変更。
例えば「ZEUS」決済モジュールは、決済がうまくいくと「dtb_order」の「note」に「ZEUS_ORDER_ID…」というデータが書き込まれるので、これがあるかないかを判断するためにSELECT文に追加しておく。
その上で
/data/Smarty/templates/default/mypage/index.tpl
の「詳細」表示部分を以下のように変更。
<td class="alignC">
<!--{if $arrOrder[cnt].payment_id == 5 and $arrOrder[cnt].note == Null}-->
未完了
<!--{else}-->
<a href="mypage/history.php?order_id=<!--{$arrOrder[cnt].order_id}-->">詳細</a>
<!--{/if}-->
</td>
赤字の部分は、dtb_paymentのpayment_methodがクレジットのレコードのpayment_idを。
とりあえず、これで会員には「この注文は完了できませんでしたよ」と伝えることができる。
iFrameのheightを取得して、自動サイズ調整…firefox6に適用されない
以前に書いた
ってコードが、firefox6で使えない…。
firefoxの場合、一番最後のelseの部分を実行するので、そこをちょっと変更。
上記の//Misc
部分を以下のように変更。
これできちんと動く…。
参考は、このフォーラム。
▼
http://forums.mozillazine.org/viewtopic.php?f=25&t=2295479
-----------------------------------------------
function iFrameHeight() {
var h = 0;
// Opera
if (window.opera)
{
h = document.getElementById('example').contentDocument.getElementById('inHeight').offsetHeight + 20;
document.getElementById('example').setAttribute("height",h);
}
// Safari ~ Chrome
else if (/WebKit/i.test(navigator.userAgent))
{
var posVersion = navigator.userAgent.indexOf("WebKit/");
var version = navigator.userAgent.substring(posVersion + 7, posVersion + 10);
if (parseInt(version) >= 523) // Safari 3+
{
document.getElementById('example').style.height = '20px';
}
else // Safari 1+ or 2+
{
return document.getElementById('example').style.height = '152px';
}
h = document.getElementById('example').contentDocument.height;
document.getElementById('example').style.height = h + 'px';
}
// IE
else if( document.all )
{
h = document.frames.example.document.body.scrollHeight;
document.all.example.style.height = h + 30 + 'px';
}
// Misc
else
{
h = document.getElementById('example').contentDocument.height;
document.getElementById('example').style.height = h + 65 + 'px';
}
}
-----------------------------------------------
ってコードが、firefox6で使えない…。
firefoxの場合、一番最後のelseの部分を実行するので、そこをちょっと変更。
上記の//Misc
部分を以下のように変更。
-----------------------------------------------
// Misc
else
{
var fr2 = parent.document.getElementById('blockrandom');
var doc1 = fr2.contentDocument;
//old firefox
if (doc1.height) {
h = doc1.height + 60;
}
else {
var body = doc1.getElementsByTagName('body')[0];
h = parent.window.getComputedStyle(body, null).height;
var length = h.length;
h = h.substring(0, length-2); //remove px from the string
h = parseFloat(h);// + 60;
}
fr2.style.height = h + "px";
}
------------------------------------------------
これできちんと動く…。
参考は、このフォーラム。
▼
http://forums.mozillazine.org/viewtopic.php?f=25&t=2295479
Smarty foreach…今何回め?
EC-CUBEのSmartyテンプレートをいじっていて、配送先個別の送料を表示する時に悩んだので、メモ。
<!--{foreach item=shippingItem from=$arrShipping name=shippingItem}-->
confirm.tplの上記の部分で、別途処理して$_SESSIONに入れておいたデータを呼び出すのに苦労しました。
------------------------------------------------
<!--/ SESSIONに保存した個別送料取得するためにforeachの回数を取得($nameで表示) /-->
<!--{assign var="name" value=$smarty.foreach.shippingItem.iteration-1}-->
<!--{if $is_multiple}-->
<tr>
<th scope="row">個別送料
<td>!--{$smarty.session.multi_deliv.$name.deliv_fee}-->円</td>
</tr>
<!--{/if}-->
------------------------------------------------
要するに、$_SESSION['multi_deliv']['ループ数']['deliv_fee']に保存したデータを取り出したかった…と。
やっぱSmarty嫌い…。
[iteration-1]
iteration は現在のループが反復された回数を表示します。 index とは異なり、常に 1 から始まります。
<!--{foreach item=shippingItem from=$arrShipping name=shippingItem}-->
confirm.tplの上記の部分で、別途処理して$_SESSIONに入れておいたデータを呼び出すのに苦労しました。
------------------------------------------------
<!--/ SESSIONに保存した個別送料取得するためにforeachの回数を取得($nameで表示) /-->
<!--{assign var="name" value=$smarty.foreach.shippingItem.iteration-1}-->
<!--{if $is_multiple}-->
<tr>
<th scope="row">個別送料
<td>!--{$smarty.session.multi_deliv.$name.deliv_fee}-->円</td>
</tr>
<!--{/if}-->
------------------------------------------------
要するに、$_SESSION['multi_deliv']['ループ数']['deliv_fee']に保存したデータを取り出したかった…と。
やっぱSmarty嫌い…。
[iteration-1]
iteration は現在のループが反復された回数を表示します。 index とは異なり、常に 1 から始まります。
