※この方法では、カート > 購入のところで、動きませんでした。
設計上、同じ処理になってないんでしょうね・・・
残念です。
今回、SSLが別ディレクトリー運用できない、
GMOの腐ったサーバーだったので、
仕方なく、サブディレクトリで運用。
でも、URLが、不格好・・・
で、いろいろ、試してみた。
※実際には、サブディレクトリ「eccube」にあるものとする
> /data/config/config.php
- define(‘HTTP_URL’, ‘https://shoroji.com/’);
- define(‘HTTPS_URL’, ‘https://shoroji.com/’);
- define(‘ROOT_URLPATH’, ‘/’);
と設定した場合、リンク先は、すべてルートを見に行くが、
ファイルが存在しないので、表示がされないので、
.htaccessでリダイレクトしてやる。
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^.*$ /eccube%{REQUEST_URI} [L]
ま、これは、わけないが、
実際には、外郭のテンプレートは表示されるものの、
メインであるボディーが表示されない。
エラーをみると、
2015/09/02 17:06:41 [/*/products/list.php] Warning(E_USER_WARNING): ページ情報を取得できませんでした。 on [C:\*\_data\class\helper\SC_Helper_PageLayout.php(58)] from 0.0.0.0 2015/09/02 17:06:41 [/*/products/list.php] Warning(E_USER_WARNING): メイン部のテンプレートが存在しません。[C:/*/_data/Smarty/templates/*/.tpl] on [C:\*\_data\class\helper\SC_Helper_PageLayout.php(65)] from 0.0.0.0 2015/09/02 17:06:41 [/*/products/list.php] Warning(E_USER_WARNING): Smarty error: unable to read resource: "C:/*/_data/Smarty/templates/*/.tpl" on [C:\*\_data\module\Smarty\libs\Smarty.class.php(1094)] from 0.0.0.0
問題点は、.tplの前がなく、
つまり、テンプレートファイルが見つからないというエラー。
/eccube/にインストールしている場合、
通常であれば、
- $_SERVER[‘SCRIPT_NAME’] = /eccube/index.php
- ROOT_URLPATH = /eccube/
となるので、
結果として、「index.php」が取り出されるのだけど、
今回、ルートで運用したいので、ROOT_URLPATH = /
としているため、処理がうまく出来ていない。
では、どうしたらいいか?
というと、
その書き換えをしている「SC_Helper_Pagelayout.php」を修正します。
実際には、function getPageProperties に与えられる、
第4パラメーター「$arrParams」に、
/eccube/index.php のまま渡されてくるので、これを、書き換えてやります。
↓を、「SC_Helper_Pagelayout_ex.php」(拡張クラス)に、追加。
class SC_Helper_PageLayout_Ex extends SC_Helper_PageLayout { public function getPageProperties($device_type_id = DEVICE_TYPE_PC, $page_id = null, $where = '', $arrParams = array()) { ## begin if (count($arrParams) > 0) { #var_dump(ROOT_URLPATH_redirect); #var_dump($_SERVER['SCRIPT_NAME']); $arrParams[0] = preg_replace('|^'. preg_quote(ROOT_URLPATH_redirect). '|', '', $_SERVER['SCRIPT_NAME']); } ## end $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = 'device_type_id = ? ' . (SC_Utils_Ex::isBlank($where) ? $where : 'AND ' . $where); if ($page_id === null) { $where = 'page_id <> ? AND ' . $where; $page_id = 0; } else { $where = 'page_id = ? AND ' . $where; } $objQuery->setOrder('page_id'); $arrParams = array_merge(array($page_id, $device_type_id), $arrParams); #var_dump($arrParams); return $objQuery->select('*', 'dtb_pagelayout', $where, $arrParams); } }
大事な部分は、 begin~endの
$arrParams[0] = preg_replace('|^'. preg_quote(ROOT_URLPATH_redirect). '|', '', $_SERVER['SCRIPT_NAME']);
LC_Page.php [102行目]で、
$_SERVER[‘SCRIPT_NAME’]が第4パラメーターに渡され、
SC_Helper_PageLayout.php [50行目]で、
ROOT_URLPATH を置換して、
dtb_pagelayout上のテンプレート名を
引っ張ってきているという流れなので、
ROOT_URLPATHを、Eccube上関係ない定数
「ROOT_URLPATH_redirect」に置き換えて、URLを補正した次第です。
※ROOT_URLPATH_redirectは、環境によって異なるだろうから、
/data/config/config.phpで、定義しています。
- define(‘ROOT_URLPATH_redirect’, ‘/eccube/’);
以上。
しかし、
ずいぶん、Eccube通になってきたww
PS.
答えじゃなくて、ヒントになる程度に、書いてます。
見る人が見たら、答えなんだけどw
.