とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

カテゴリ:使ってみたソフト の記事一覧

EC-CUBE お支払方法・お届け時間等の指定にコメントを表示する

お支払い方法にコメントを表示させる


EC-CUBEのお支払方法・お届け時間等の指定」画面の
「お支払い方法」に任意なコメントを表示させる方法をメモ書きしておきます。

対象ページ
http://sample.com/shopping/payment.php

利用テンプレート
data\Smarty\templates\default\shopping\payment.tpl

データベースのテーブル
`dtb_payment` 

テンプレートには以下のコードがある。
<label for="pay_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrPayment[cnt].payment_method|h}--><!--{if $arrPayment[cnt].note != ""}--><!--{/if}--></label>

$arrPayment[cnt].note を表示させてるのでデータベース`dtb_payment` のnote列に値をつっこんでやればいい。
選択お支払方法
*事前の振込です。
できあがり!

EC-CUBE ペイパル決済モジュールで決済処理中データが消える


PayPal支払いプラグインは、決済完了後、自動的に「入金済み」に変更される。

これを「決済処理中」に変更し、手動で注文確定メールを送る運用するために
決済完了後のステータスを「決済処理中」に変更する対応をすると、
数分に一回、オーダーデータが削除されるというトラブルが発生する。

原因


管理画面>パラメータ設定に
決済処理中ステータスのロールバックをするか(true:する false:しない)
PENDING_ORDER_CANCEL_FLAG

※これはDBの値になりますが
データキャッシュとしては
data>cache>mtb_constants.php
に作成されます。

というフラグがあり、これがデフォルトtrueになっている。
このフラグは、決済処理中ステータスが900秒たったら、勝手にキャンセルするという振る舞いをするので、
falseに変更する必要がある。

以上

EC-CUBE テンプレート内でコメント化する方法

Smartyのコメント化


EC-CUBEはテンプレートエンジンにSmartyを使っています。
Smartyのコメントは、

{* これはコメントです *}

こんな感じ。

EC-CUBEでは、

<!--{* ここはコメントです *}-->

こう書きます。

htmlコメントとは違って、出力されるhtmlにもコメント部分が出力されません。

何度も何度も調べなおしてたので、自身のブログにメモメモ・・・

EC-CUBEのWPPost:WordPress連携を導入(ロリポップサーバー)

EC-CUBEサイト内にWordPress記事を表示


EC-CUBE(2.13系)に、WpPostを導入し、設定を行ったので
その時の作業メモを残しておきます。

導入するのは、株式会社ギズモさんが出している、
WordPressとの連携プラグインです。

このプラグインは、EC-CUBEサイト内部にWordPressの記事を表示するというもの。
サイトはEC-CUBEで実装していて、ブログはWordPressで執筆しているところにはなんとも便利なプラグインです。
まずは株式会社ギズモさんに感謝です。

プラグイン導入は簡単にはいかない


EC-CUBE X WordPress連携プラグインWpPost こちらのプラグイン紹介ページにも書いていますが、
サーバーによって設定が異なったり、WAF(アプリケーションファイアーウォール)の設定が必要だったりします。

今回、はロリポップサーバーで導入しましたので、そのときに行った手順と、注意点を記載します。

WpPost導入手順


1.まず、WPプラグインモジュールをインストールする。
  バージョンは WPPost:WordPress連携 1.07

2.次に、オーナーズストア>プラグイン管理 メニューで
  WPPost:WordPress連携 を有効化する。
  プラグイン設定 メニューを開き、指定されているソースコードの変更を行う。
  WordPress側で修正が必要なソースコードは
  ・wp-config.php
  ・wp-includes/load.php
  この2ファイルだけです。

  詳しくはWpPostのインストールにすべて書いてます。

  ◆注意◆  
  WPのバージョンアップ時、ファイルが更新されてしまうので、その都度設定が必要となるらしい。
  ◆◆◆◆

3.プラグイン設定メニューを、そのサーバーに合わせた設定に変更する。
  PC CSSの設定もここで行う。
  
  ◆注意◆
  ロリポップサーバーは、WAF(アプリケーションファイアーウォール)を無効化しなければ、
  登録時エラーが発生する。
  プラグインの設定を行う場合は、ロリポップサーバーへログインし、WAFを一旦無効化したうえで
  設定を行う必要がある。
  WAFの設定変更は、5-10分ほどかかるのですぐには作業できません。
  ◆◆◆◆

4.サーバーのパーミッションを適宜変更する。
  基本的にはディレクトリは755、ファイルは644
  パーミッション設定が適切でない場合、Error 500が発生。
  サーバーログを確認し、パーミッション設定を適宜行うこと。

  パーミッションの設定を正しく行わないと、ほとんどのサーバーでINTERNAL Server Error(500)が出るような気がします。

5.1~4の設定完了後、管理画面より
  
  デザイン管理>PC>ブロック設定 から、「WpPost記事一覧」のデザイン変更を実施
  デザイン管理>PC>レイアウト設定 で、任意の場所にブロックを配置する。
  また、「WpPostポスト表示」「WpPostカテゴリ表示」のデザインを適宜変更する。

6.すべての設定完了後、ロリポップサーバーのWAF設定を元に戻す。

以上です。
サーバー側の設定でつまずかなければ、30分程度でできると思います。

.htacessでphp_valueやphp_flagのエラーが発生する

php_value エラーの対処法


EC-CUBEのテスト環境構築時お話です。
結論からいうと、このエラー、共有レンタルサーバーの場合、解決できません。
特にCPanelを展開しているサーバではこのphp_valueやphp_flagは使えないことが多いです。

httpd.conf でmod_php5.cのロードと、AllowOverride の設定をしないと動かないらしいのですが
httpd.conf ってのは専用サーバーじゃないと基本的にはいじれません。

対処法


一つは同様の機能をphp.iniで代用する。
もう一つは、EC-CUBEのテスト環境にのみに限って言うと、.htacess は無くてもシステムが動くので
コメントアウトしてOK
MODx とかでも同様に.htacess を消して大丈夫みたいですね。

とりあえずドはまりして時間を食う前に、コメントアウトしちゃってください。

EC-CUBE(2.13.1)テンプレートファイルにブロックを挿入(読み込み)する

テンプレートにブロック設定で作成したブロックをインクルード


EC-CUBEのバージョン2.13.1で、テンプレートファイルの中にブロックを挿入したい。

EC-CUBEは、バージョンによって定数のパス定義がちょろちょろと変わっているので
バージョン2.13.1より前のバージョンはちょっとわからないですが・・・

2.13.1の場合は以下のとおり

<!--{include file="`$smarty.const.SMARTY_TEMPLATES_REALDIR`/`
$smarty.const.TEMPLATE_NAME`/`$smarty.const.BLOC_DIR`customize.tpl"}-->

※改行は削除してください。

customize.tpl の部分を、作成したブロックのファイル名を指定することで表示可能。

$smarty.const.TEMPLATE_NAME を指定している理由は
テンプレートデザインを利用しているからで、
デフォルトデザインを利用している場合はそのまま

<!--{include file="`$smarty.const.USER_TEMPLATE_PATH`/default/bloc/customize.tpl"}-->

などでいけると思います。(未検証)

もしパスをミスっていたりすると、ページ表示時にはエラーにならず
コードそのものがhtml出力されません。

おかしいな?と思った場合は
システム設定 > EC-CUBE ログ表示 > エラーログファイル より
エラーログを読み込んだら
以下の様なエラーが出力されるのでご注意。

Warning(E_USER_WARNING): Smarty error: unable to read resource: "USER_TEMPLATE_PATHtemplatename/frontparts/bloc/customize.tpl" on [/home/users/main.jp/web/data/module/Smarty/libs/Smarty.class.php(1094)]

このコードは
商品詳細ページにブロックを表示させるために記載していますが
もしエラーログに include file そのものが未定義だというエラーが出てきている場合は
表示させようとしているページに include file の読み込みがされていないので、対象ページのオブジェクト内で
定義されるようインクルードが必要となります。


EC-CUBE(2.13系) 帳票の注文明細のフォントサイズ変更

フォントサイズ8は小さすぎるような・・・


というわけでEC-CUBEの明細行の高さを整え、フォントを1サイズだけ大きくしました。
修正箇所は以下のとおりです。

data>class>SC_Fpdf.php
private function setOrderData() メソッド

購入商品情報を吐き出す前にフォントセットしてるので
$this->SetFont('SJIS', '', 8);
⇒$this->SetFont('SJIS', '', 9);

プライベートなので直接、フォントサイズを変更

このままだと、明細の行の高さがやや合わないので、

data>class>helper>SC_Helper_FPDI.php
public function FancyTable($header, $data, $w)メソッド内で

テーブルの明細行を作っているところで高さをあわせます。

$h = 4;
⇒$h = 5;
に変更


本当は、
data>class_extends>helper_extends>SC_Helper_FPDI_Ex.php
にpublic function FancyTable($header, $data, $w)メソッドを書き加えないとダメなんだろうけど
書き方が悪いのか、呼び元が悪いのか、キャッシュがわからないけど
サイズ反映されなかったので根本を修正(おぃ)

ひとまず目を凝らさないといけないようなサイズではなくなったのでOKとしました。

2014/04/26時点で唯一の2.13系対応のEC-CUBE公式ガイドブックです。
手探りでコード修正を行ってる方は必見

テーマ:プログラミング - ジャンル:コンピュータ

PayPal IPN 503 error - Check points

PayPal IPN 503 error


When IPN return 503 status errors in PayPal,
You should suspect server's .
Isn't the following setup performed to ".htaccess"?
.htaccess Setting
----------------------------------------------------
ErrorDocument 503 /maintenance.html

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=192.168.0.4
RewriteCond %{REMOTE_ADDR} !=192.168.0.5
RewriteRule ^.*$ - [R=503,L]
</IfModule>
----------------------------------------------------
In such a case, IPN is not sent successfully.
Good Luck.

PayPalのIPNを有効にしても、サーバー側の.htaccess等でIP制限をしてると
エラーになるので注意してください。

テーマ:プログラミング - ジャンル:コンピュータ

EC-CUBE PayPal決済の設定方法まとめ

PayPal(ペイパル)のIPN(即時支払い通知)がステータス503で届かない~


EC-CUBEでPayPal決済を利用することになったのだけれど
PayPalからIPNが届かず、PayPal側にログインしてみるとレスポンスコード503で停滞。
EC-CUBE側でpaypal_recv.phpの吐き出しているであろうPayPal.logを確認しても
まったく通った形跡もない。

この影響で
PayPalの決済が完了したにも関わらず、オーダーのdel_flgが「1」のままで
ステータスが「決済処理中」のまま、管理画面に注文情報が挙がってこないという状態に陥ります。
ドハマりしたので、解決するまでの道のりを残しておきます。

当エントリは、EC-CUBEで
「ペイパル ウェブペイメント プラス 決済モジュール(2.11系・2.12系・2.13系)」
を使っての記事ですが根本原因としては他のプロダクトでも当てはまるかもしれません。

今回利用するPayPal決済のサービスは
「ペイパル-ウェブペイメントスタンダード」です。

「ウェブペイメントプラス」との違いがわかり辛いのですが

このモジュール一つで、
「ペイパル-ウェブペイメントスタンダード」および「ウェブペイメントプラス」の両方に対応しています。

両者の違いはまた別の機会に・・・
スタンダードは月額費用3,000がかからない代わりに、
継続課金やiframeに対応しておらず、サイトに決済ボタンを設置するか
決済の為に一旦PayPalサイトに遷移する必要が出てくると理解しています。
「ウェブペイメントスタンダード」は月額費無料ですが、ビジネスアカウントが必要です。
続きを読む

テーマ:プログラミング - ジャンル:コンピュータ

EC-CUBE(2.13系) メールテンプレートの順序変更-お問い合せメールのテンプレートが反映されない

EC-CUBE 2.13系でメールテンプレートの順序変更(IDの付け替え)を行ったところ
正常にお問い合せメールのメールが届かなくなったのでメモ

マスターデータ管理の修正


メールテンプレートのID変更は
システム設定>マスターデータ管理より行います。

マスターデータのmtb_mail_templateを選択して、IDを付け替えます。
20140426_mailchange01.png

IDに対応するテンプレートをmtb_mail_pathで設定します。
20140426_mailchange02.png

この設定を行うことで、基本情報管理>メール設定のテンプレート順が変わります。
20140426_mailchange03.png

受註管理画面のメール送信機能にも反映されます。
20140426_mailchange04.png

サイトからの問い合わせメールが注文オーダー(order_mail.tpl)のテンプレートになる


しかしWEBサイトからの「お問い合わせ」で適応されるメールテンプレートが
オーダーメールになってしまうことが発覚。
続きを読む

テーマ:プログラミング - ジャンル:コンピュータ

EC-CUBE(2.13系) 複数のお届け先の設定を切り替える

複数のお届け先を無効に設定する方法


ソースコードで根こそぎ変更しようとしたけど、
どうやら管理画面のパラメータ設定から、登録できるみたい。

登録方法は

EC-CUBEの管理画面から

システム設定>パラメーター設定>USE_MULTIPLE_SHIPPINGを検索して

設定内容をtrueからfalseに設定する。

楽ちんでした。

20140424_MultiSendSetting.png

2014/04/26時点で唯一の2.13系対応のEC-CUBE公式ガイドブックです。
手探りでコード修正を行ってる方は必見

テーマ:プログラミング - ジャンル:コンピュータ

EC-CUBE(2.13系)商品名に環境依存文字(特殊文字)を入れるとメールが文字化けする

EC-CUBEというパッケージを使うことになって
商品名に環境依存文字を入れなければいけなかったのだけど
どうしてもメールが文字化けしてしまってたので対応した内容をメモ

EC-CUBEで特殊文字を使う方法


まず考えたのは商品名に文字実体参照を使うこと。
これは商品名に直接文字実体参照である&reg;を書くことです。

こうすると、WEBサイト上でhtmlエンコーディングされてしまって
まんま&reg;って出ます。
WEBサイトサイト上の見かけを変更するために

あらゆる商品出力時のテンプレートのコード

<!--{$arrProduct.name|h}-->

を探して「|h」を外してやれば良い。
これで、htmlエンコードがなくなって®って出ます。

文字化けはWEBサイトで起こってるんじゃない!メールで起こってるんだ!


というわけで一安心してたのですが
実際に商品名が使われる場所って
WEBサイト上だけじゃないんですよね。

・CSV出力
・メール送信
・出荷伝票(納品書)
・ヤマトB2なんて使ってるとヤマト用のCSVファイル

実際にメール送信する時に、メール本文が&reg;って表示されてしまいます。
文字コードめぇ・・・

非常に面倒なので、商品名は直接®指定にすることにしました。
最近のブラウザは文字自体参照使わなくても表示されますし・・・ゲフンゲフン

と、これでもまだメール送信時に®が?に化けている事が発覚!
またか・・・

EC-CUBEのメールは、iso-2022-jpという文字コードで送信されています。
ソースコードの場所は

data > class >> SC_SendMail.php

です。ここで

setSubject()やsetBody()を見てみると

$this->body = mb_convert_encoding($body, 'JIS', CHAR_CODE);

が設定されています。
JISでは®を扱えないので
これを

$this->body = mb_convert_encoding($body, "UTF-8", CHAR_CODE);

に変更。

このままだと、Outlookなどお馬鹿なメールソフトだと
メールヘッダと本文の文字コードの乖離が出てしまってまたもや文字化けします。

なのでメールヘッダーの"Content-Type"も正しく設定します。

getTEXTHeader()とgetHTMLHeader()を確認。

$arrHeader['Content-Type'] = 'text/plain; charset="ISO-2022-JP"';
$arrHeader['Content-Type'] = 'text/html; charset="ISO-2022-JP"';

となっているところを
それぞれ
$arrHeader['Content-Type'] = 'text/plain; charset="utf-8"';
$arrHeader['Content-Type'] = 'text/html; charset="utf-8"';

に変更。

正攻法は、サイトシステム全体の文字コードを見直すことなのですが
手間ですしね・・・
CSVファイルも®で出力されていますし。多分運用上耐えれるでしょう。

2014/04/26時点で唯一の2.13系対応のEC-CUBE公式ガイドブックです。
手探りでコード修正を行ってる方は必見

テーマ:プログラミング - ジャンル:コンピュータ

ARCserver ~ Ntuser は右記にある認証サーバで検証されていません

Ntuser は右記にある認証サーバで検証されていません
ネットがつながらない状態だったのでえらくハマった。

ヘルプで「認証」と検索したら
認証に関するトラブルシュート らしき項目があったので
その通りしたら解決。

うちは、予めASXファイルを作って置いて、それを別のexeから蹴る
っていう運用をしてたんだけど
caroot権限を持たないユーザーがASXを蹴っても認証されない。
もちろん、ARCマネージャーでASXを開くとバックアップを開始できるのだが・・・
それはマネージャーのサーバー管理にCAROOT権限のID/PASSが入ってるからじゃなかろうかと推測している。

結局、CAROOT権限を持っているユーザーでログインしないと
ASXはけれませんってことらしい。
で、ARCserverをインストールしたログインユーザーにcaroot権限が付与されるのだけど、
大体はAdminあたりでインストールして、他の権限でログインする事がほとんどだろうから
もちろんASXを実行できない。

なのでASXをキックするユーザーに対してCAROOT権限を付与してあげましょうってなもんです。

てわけで以下のコマンドをどうぞ。

ca_auth [-cahost HOST-NAME] -equiv add ntuser HOST-NAME ARCserveBackupUser [caroot_username] [caroot_password]

ちなみにcmdでコマンドいれたけど、
最後の [caroot_password]はいれるとなぜかコマンドがとおらんかった。。。
[caroot_username]までいれて実行すると「パスワード?」と対話してくるので
サクっとパスワードを入れてあげましょう。

コマンドに成功するとASXを蹴れるようになります。

ちなみに参考リンクを貼っておくのでお好みでどうぞ。
ログイン認証に失敗する場合の確認手順

キーワードはca_auth ですよw

ちなみに、マネージャーを開かずにARCのログを出力したい場合は
ca_log.exeをキックしましょう。
認証エラーの場合。タイトルの通り「Ntuser は右記にある認証サーバで検証されていません」
と出てますので。

参考URLの抜粋をすると

指定した日時以降に記録されたログの内容を表示する。


ca_log -cahost <EB ホスト名> -view <ログ ファイル名 -after <DD/MM/YYYY>


<ログ ファイル名>は任意のパス名でOK.勝手に作成されます。
DDのところは昨日の日付あたりを入れると今日のがとれるよ。
コマンド ラインでの BrightStor Enterprise Backup の操作

大したバックアップも取らないんだったら、
ARCserverを使うより実装したほうが楽ちんな気がする今日この頃・・・
LTOバックアップなんか小規模運用では使わないしね・・・



 



FC2Ad