以前「ECCUBEのお問い合わせフォームの複製/別作成 増やし方」で紹介もしましたが。
WordPressも実装しているのであればコチラのContactform7を入れたいくらいです。
主な機能は下記。
基本的なお問い合わせフォーム機能はもちろんのこと。
メール形式チェック
入力必須項目の実装
CAPTCHA(画像認証)
ファイル添付機能
などなど、カスタマイズ性には特化しているかと思います。
なのですが・・・ファーストサーバーで文字化けする・・・orz
クリエイターと名乗ってみた。
以前「ECCUBEのお問い合わせフォームの複製/別作成 増やし方」で紹介もしましたが。
WordPressも実装しているのであればコチラのContactform7を入れたいくらいです。
主な機能は下記。
基本的なお問い合わせフォーム機能はもちろんのこと。
メール形式チェック
入力必須項目の実装
CAPTCHA(画像認証)
ファイル添付機能
などなど、カスタマイズ性には特化しているかと思います。
なのですが・・・ファーストサーバーで文字化けする・・・orz
※ PHPファイルの作成に失敗しました
と表示される事象に遭遇中です。
「デザイン管理>PC>ページ詳細設定」で新規ページ追加時に起こった現象ですが。
ブロック設定からの新規追加は可能。
パーミッション変更でもらちがあきませんでした。
ん〜どうしよう。。。
面倒なので以下で解決。
phpが作れないとダダをこねるなら。。。。
登録したいファイル名でphpを予め作りFTPで「user_data」にアップロード。
因にファイル内容は下記でアップロード。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
; html-script: false ]<?php require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); |
そしてブラウザ側で登録ボタンを押すことでtplファイルの生成とSQLへの登録も行えます。
以下余談。
クラスがだめなのかと思い、該当ファイルのみナイトリービルドを突っ込んでみました。
案の定デザインclassだった為か全部書き換えられ、一時的にuser_dataフォルダも認識しない状態に・・・
バックアップとって再インストールして解決。
なぜ静的URLにするのかというと・・・
GoogleやYahoo! などの検索の場合、動的URLでは、一つのページとみなしてしまいます。 (まぁ最近じゃ?がついていようとインデックスしてくれるみたいですが) ちなみに動的URLとは下記のように?が入るURLです。 http://サーバ名/ec-cube/html/products/detail.php?product_id=xxこちらですと、検索するにあたって、detail.phpのファイルとみなされていまい、 1ページしかインデックスされません。
ですので、各ページごとにインデックスされるように、 http://サーバ名/ec-cube/html/products/detail/xx
とします。これが静的URLです。 実際にページは存在していませんが、 検索ロボットに存在しているように見せることができます。
1. パラメータを変える。
まず、 システム設定>パラメータ設定より以下を変更います。 パラメータ:LIST_P_HTML 変更前:URL_DIR . “products/list-p” 変更後:URL_DIR . “products/list/” パラメータ:DETAIL_P_HTML変更前:URL_DIR . “products/detail.php?product_id=”変更後:URL_DIR . “products/detail/”
2. .htaccsessファイルをhtml/products/以下にに配置します。 そのファイルに下記の内容を追加します。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^detail/([0-9]+)+ detail.php?product_id=$1 [L] RewriteRule ^list/([0-9]+)+ list.php?category_id=$1 [L]
※.htaccsessは、html/ 内にありますので、それをコピーして設置すると楽です。
3.管理画面>デザイン管理>ブロック編集>カテゴリを開き46行目あたりのソースを変更
こちらはカテゴリのリンクの変更です。
変更前:products/list.php?category_id= 変更後:products/list/
4.管理画面>デザイン管理>ページ詳細設定>商品詳細ページのソースを変更
商品詳細のページのリンクが静的ページにするために、パス( / )を切った関係で、階層が一つ多くなってしまいました。
変更箇所は、 内の合計6つ変更です。
変更前:./ 変更後:../ ※2階層上へ送っている
他、動作には関係ありませんが、こちらも変更をオススメ、
内
変更前:products/list.php?category_id= 変更後:products/list/
これで、変更完了です。 各種エディターを使って、コピペして、コマンド+Fで所定の箇所を探してみてください。
管理画面のレイアウト崩れが。。
define( ‘CONCATENATE_SCRIPTS’, false );
ただしこれは根本的な解決策ではありません。
define( ‘CONCATENATE_SCRIPTS’, false ); というコードを wp-config.php の最初に追加する。
WordPress のスピードは遅くなるので、数日後に削除してまたテストしてみること。
(これを行うことで古いネットワークキャッシュを削除できます)
ということなので、一定期間経過後コードを削除してレイアウトの状態を見てみることにしました。
が、1週間強経過しているにもかかわらず、状態は変わらずです。
もうしばらく様子を見ようとも思ったのですが、原因が分からないのも気持ちが悪いので、
再度ぐーぐる先生に聞いてみました。
WordPressをCORESERVERに設置する|pc.casey.jp
今まで色々いじくっているので、.htaccessの内容がおかしくなっていることでしょう。
まずはこちらの記事の「.htaccessファイルを設置」する項目を実践しました。
WordPressルートフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
wp-contentフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
wp-adminフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
それから「管理画面のレイアウトが崩れる=CSSが読み込まれていない」ということで、
納得のいく説明をされていた以下のブログも参考にさせてもらいました。
WordPress 2.9.1 自動アップデート後に管理画面表示がおかしくなった時の対処法|guttyo blog
上記ブログの管理者さんが調べたことによると、原因はこういうことらしい。
この現象の原因は下記のような.htaccessファイルでPHPをCGIモードで動かしているときに、
load-style.phpが吐き出す content-type=text/htmlだからだそうだ。
text/cssではないのでFirefoxではcssと認識しないということらしい。
AddHandler application/x-httpd-php5cgi .php
なるほど、text/cssになればいいって訳なのね。
でも、部分的にCGIとして動かしてはいてもPHP全体をCGIとして動かしてはいないし、
やっぱ、なんかおかしくなってるのかなぁ?
まぁ、要はこれが重要な訳で。
# こいつだけモジュール版で動作させる
AddHandler application/x-httpd-php .php
このコードをwp-adminファイルの.htaccessに記載すると、
今まで悩んでいたレイアウト崩れは嘘のように解決しました。
define( ‘CONCATENATE_SCRIPTS’, false );
ともおさらばしました。
まず管理画面にログインして、デザイン管理>PC>レイアウト設定 から、ページを新規入力します。
URLは review_list.php として、以下のコードを貼り付けて保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<div id="customervoice_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--></div> |
次に、html/user_data/review_list.php を開いて、次のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
<!--?php require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); $masterData = new SC_DB_MasterData_Ex(); $this--->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { //レビュー情報の取得 $this->arrReview = $this->lfGetReviewData(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } //商品ごとのレビュー情報を取得する function lfGetReviewData() { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image"; $from = "dtb_review as t1 left join dtb_products as t2 using (product_id)"; $where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC"; $arrReview = $objQuery->select($col, $from, $where, $arrval); return $arrReview; } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); |
data/Smarty/templates/default/user_data/review_list.tpl を以下のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->"> <img src="{$smarty.const.ROOT_URLPATH}resize_image.php?image={$arrReview[cnt].main_list_image|sfNoImageMainList|h}&width=40&height=40" alt="<!--{$arrReview[cnt].name|h}-->" /></a> <a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--> |
以上。
ブロック化は以下。
デザイン管理>PC>ブロックの設定新規ブロックで下記を作成。
ブロック名:お客様の声一覧
ファイル名:review_list_bloc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<div id="customervoice_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="お客様の声一覧" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->"> <img src="{$smarty.const.ROOT_URLPATH}resize_image.php?image={$arrReview[cnt].main_list_image|sfNoImageMainList|h}&width=40&height=40" alt="<!--{$arrReview[cnt].name|h}-->" /></a> <a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--></div> |
トップページのブロックで表示する場合、html直下のindex.php下記のような感じで書き換え。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
require_once './require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Index_Ex.php'; // }}} // {{{ generate page //$objPage = new LC_Page_Index_Ex(); //register_shutdown_function(array($objPage, "destroy")); //$objPage->init(); //$objPage->process(); /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); $masterData = new SC_DB_MasterData_Ex(); $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { //レビュー情報の取得 $this->arrReview = $this->lfGetReviewData(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } //商品ごとのレビュー情報を取得する function lfGetReviewData() { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image"; $from = "dtb_review as t1 left join dtb_products as t2 using (product_id)"; $where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC"; $arrReview = $objQuery->select($col, $from, $where, $arrval); return $arrReview; } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); |
基本的には同じ作業。
画像とかは適当にかえましょう。
(レビュー自体未投稿だと空欄なので適当に用意しておきましょう。)
特定商取引法の項目追加の件 古物系(オークション)や中古家電販売をされている方は許可番号をどうしたって入力しないとなりません。
(場合によっては数県分入力せねばいけないときもありマスが。)
参考例として、項目「運営責任者」の下に項目「許可番号等」を追加する例を記載します。
今回の追加作業にはDBの操作が必要になるので、自己責任でバックアップとりましょう。
追加分カラム名を「law_no1」としました。
増やす場合は重複しなければあとは任意で好きなだけ増やしましょう。
基本MySQLしかいじったことないので以下はMySQL中心です。
1.\data\class\pages\admin\basis\LC_Page_Admin_Basis_Tradelaw.php 管理画面用の追加。
・「パラメータ情報の初期化」の「運営責任者」の下に下記を追加する。
1 |
objFormParam->addParam("古物商許可証番号", "law_no1", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); |
2.\data\Smarty\templates\admin\basis\tradelaw.tpl 管理画面用テンプレ変更 ・「運営責任者」のデータ部分の下に下記を追加する。
1 2 3 4 |
許可番号等<span> *</span> <!--–{assign var=key value=”law_no1″}–--> <span><!--–{$arrErr[$key]}–--></span> <textarea name="”<!–{$arrForm[$key].keyname}–">” maxlength=”<!–{$arrForm[$key].length}–>” cols=”60″ rows=”8″ style=”<!–{$arrErr[$key]|sfGetErrorColor}–>” ><!–{$arrForm[$key].value|escape}–></textarea><span> (上限<!--–{$arrForm[$key].length}–-->文字)</span> |
\data\Smarty\templates\default\order\index.tpl (「利用ガイド」での「特定商取引法」ボタン押下後の表示テンプレート) ・「運営責任者」のデータ部分の下に下記を追加する。
1 2 |
古物商許可証番号 <!--–{$arrRet.law_no1|escape|nl2br}–--> |
携帯スマフォも同様に追加。 \data\Smarty\templates\sphone\order\index.tpl \data\Smarty\templates\mobile\order\index.tpl 携帯
1 2 |
[emoji:39]<span>古物商許可証番号</span> <!--–{$arrRet.law_no1|escape|nl2br}–--><hr /> |
絵文字は好きなの使いましょう。 (ネットで「絵文字コード」とかググれば一覧表が出てくるはずなので。) スマフォ
1 2 |
<dt>古物商許可番号</dt> <dd><!--{$arrOrder.law_no1_company|h}--></dd> |
最後にデータベース追記 dtb_baseinfo の中にカラム追加。 カラム「law_no1」を追加。 (カラム形式はtext)
ヘッダーにカテゴリを表示します。
CSSハックでドロップダウンメニューにも対応。
一応管理画面からだけで設定可能なシンプル版です。 “ヘッダーにカテゴリを表示:ドロップダウンメニュー(CSS)” の続きを読む
ヤマト家財便の発送料金をコードに追加することで商品登録時に家財便専用の送料を追加できます。
というか家財便のモノしか送れなくなります。
※ちなみに下記の設定は関東地区からの発送の場合になります。
管理画面-システム設定-パラメタ設定を下記に変更
DELIV_ADDR_MAX ・・・0
OPTION_DELIV_FEE ・・・1
OPTION_PRODUCT_DELIV_FEE ・・・1
まずさきにヤマト家財便のお届け地方が50コード(北海道4分割)存在するので変更。
[ec-cube既存の都道府県コード]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
1 = 北海道 2 = 青森県 3 = 岩手県 4 = 宮城県 5 = 秋田県 6 = 山形県 7 = 福島県 8 = 茨城県 9 = 栃木県 10 = 群馬県 11 = 埼玉県 12 = 千葉県 13 = 東京都 14 = 神奈川県 15 = 新潟県 16 = 富山県 17 = 石川県 18 = 福井県 19 = 山梨県 20 = 長野県 21 = 岐阜県 22 = 静岡県 23 = 愛知県 24 = 三重県 25 = 滋賀県 26 = 京都府 27 = 大阪府 28 = 兵庫県 29 = 奈良県 30 = 和歌山県 31 = 鳥取県 32 = 島根県 33 = 岡山県 34 = 広島県 35 = 山口県 36 = 徳島県 37 = 香川県 38 = 愛媛県 39 = 高知県 40 = 福岡県 41 = 佐賀県 42 = 長崎県 43 = 熊本県 44 = 大分県 45 = 宮崎県 46 = 鹿児島県 47 = 沖縄県 |
MySQLのDBを下記に変更
今回はmtb_prefテーブルを削除後に再度DB(下記)をid:1から50として変更追加
※先に顧客登録があると都道府県がズレます。なので初期インストール時に実行する為のもの。
(アップデート仕様のものは制作中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
-- -- テーブルの構造 `mtb_pref` -- CREATE TABLE `mtb_pref` ( `id` smallint(6) NOT NULL DEFAULT '0', `name` text, `rank` smallint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=ujis; -- -- テーブルのデータをダンプしています `mtb_pref` -- INSERT INTO `mtb_pref` (`id`, `name`, `rank`) VALUES (1, '札幌', 1) (2, '函館', 2) (3, '道北', 3) (4, '道東', 4) (5, '青森県', 5) (6, '岩手県', 6) (7, '宮城県', 7) (8, '秋田県', 8) (9, '山形県', 9) (10, '福島県', 10) (11, '茨城県', 11) (12, '栃木県', 12) (13, '群馬県', 13) (14, '埼玉県', 14) (15, '千葉県', 15) (16, '東京都', 16) (17, '神奈川県', 17) (18, '新潟県', 18) (19, '富山県', 19) (20, '石川県', 20) (21, '福井県', 21) (22, '山梨県', 22) (23, '長野県', 23) (24, '岐阜県', 24) (25, '静岡県', 25) (26, '愛知県', 26) (27, '三重県', 27) (28, '滋賀県', 28) (29, '京都府', 29) (30, '大阪府', 30) (31, '兵庫県', 31) (32, '奈良県', 32) (33, '和歌山県', 33) (34, '鳥取県', 34) (35, '島根県', 35) (36, '岡山県', 36) (37, '広島県', 37) (38, '山口県', 38) (39, '徳島県', 39) (40, '香川県', 40) (41, '愛媛県', 41) (42, '高知県', 42) (43, '福岡県', 43) (44, '佐賀県', 44) (45, '長崎県', 45) (46, '熊本県', 46) (47, '大分県', 47) (48, '宮崎県', 48) (49, '鹿児島県', 49) (50, '沖縄県', 50); |
mtb_constantsテーブルのid=DELIVFEE_MAXのレコードを47 -> 50に変更
/data/mtb_constants_init.phpのDELIVFEE_MAXのレコードを47 -> 50に変更
/data/cache/mtb_constants.php を削除
/data/cache/mtb_pref.php を削除
上記を削除してから「お客様情報入力」ページを開くと反映されていますとりあえずは都道府県の再登録完了。
管理画面>基本情報設定>配送設定 の中で48以降の県が増えているので一応料金を設定。(ここで設定した料金は支払い情報には反映されませんが。)
※離島・海外等の処理はまた後日
——————-
管理画面-システム設定-パラメタ設定で別のお届け先最大登録数
DELIV_ADDR_MAX に0を設定する。
商品送料を商品重量に変更する
data/Smarty/templates/admin/products/confirm.tpl
132行目 商品送料→送料ランク
135行目 円→/3辺合計
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
320行目
1 |
$objFormParam->addParam(“商品送料”, “deliv_fee”, PRICE_LEN, ‘n’, array(“NUM_CHECK”, “SPTAB_CHECK”, “MAX_LENGTH_CHECK”)); |
↓
1 |
$objFormParam->addParam(“送料ランク”, “deliv_fee”, PRICE_LEN, ‘n’, array(“EXIST_CHECK”, “NUM_CHECK”, “SPTAB_CHECK”, “MAX_LENGTH_CHECK”)); |
data\Smarty\templates\admin\products\product.tpl
198行目付近
商品送料をランクに変更↓
送料ランク *213行目
円→/3辺合計
data/class/SC_CartSession.php
609行目付近 「配送業者の送料を加算」の次に「配送ランクを加算」を追加
ここではサイズをcmではなくmmで設定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id); } // 配送ランクを加算 $deliv_rank = $results['deliv_fee']; switch ($deliv_pref[0]) { case 1: //札幌 if ($deliv_rank <= 600){ $results['deliv_fee'] = 1160;} elseif ($deliv_rank <= 800){ $results['deliv_fee'] = 1370;} elseif ($deliv_rank <= 1000){ $results['deliv_fee'] = 1580;} elseif ($deliv_rank <= 1200){ $results['deliv_fee'] = 1790;} elseif ($deliv_rank <= 1400){ $results['deliv_fee'] = 2000;} elseif ($deliv_rank <= 1600){ $results['deliv_fee'] = 2210;} elseif ($deliv_rank <= 2000){ $results['deliv_fee'] = 5600;} elseif ($deliv_rank <= 2500){ $results['deliv_fee'] = 10000;} elseif ($deliv_rank <= 3000){ $results['deliv_fee'] = 14500;} elseif ($deliv_rank <= 3500){ $results['deliv_fee'] = 23000;} elseif ($deliv_rank <= 4000){ $results['deliv_fee'] = 29900;} elseif ($deliv_rank <= 4500){ $results['deliv_fee'] = 39500;} else { $results['deliv_fee'] = 0;}; break; //以下割愛 }; |
とりあえず都道府県のコード1まで記述。
残りのコードはこちらのリンクから”ヤマト家財便 発送料金”
※関東地区からの発送の場合になります。
後は商品登録時に商品送料ランクの部分に三辺合計を指示するのみです。
「ヤマト家財便の発送料金をコードに追加することで商品登録時に家財便専用の送料を追加できます。」とか書いておきながら。
この設定では家財便のモノしか送れなくなります。なので別途で送料指定が可能なものを模索中・・・
商品種別を増やしてやればうまいこと行くかもしれないけれど・・・しかも家財便の場合代引きができないことも多いしな・・・
支払方法を増やすか支払方法でク分けるかor商品送料自体を2つにして2重チェック(?)したらいいんだろうか。
というか、書いてある「// 配送業者の送料を加算」コードの最終行(break;の次の行)に、下記追記で対応できますねw
1 2 3 4 5 |
default: if ($deliv_rank <=10000){ $results['deliv_fee'] = 1000;}//10000mmの場合1000円(基本4500mm以上の数字で設定。) elseif ($deliv_rank <= 15000){ $results['deliv_fee'] = 50;}//以下適当にelseifを必要な分だけ増やす。 else { $results['deliv_fee'] = 0;}; break; |
このdefault:文は試していないのでうまくいくかどうかは検証してみます。。。