ログインブロックやカレンダーブロックといったブロック機能は、/html/frontparts/bloc/login.phpとDocumentRoot配下にあるのに、単独で利用することはできません。
直接アクセスするとエラーになります。
ちなみに、公式で紹介されているサイトでも直接見てみるとよくFatal error: require_once()とか出てくるので試してみると楽しいかもしれません。
このようなブロックをヴィジェットのようにEC-CUBEの外から使用してみます。
とりあえずヴィジェットとして扱うために/html/widget/ディレクトリを作成します。
DocumentRootの中に入れる必要は全く無いし普通は外に出すべきなんですが、どうせ/html/frontparts/とかも中にあるしどうでもいいや。
次にEC-CUBEの管轄ではない適当なファイルを作成。
/html/example.php
1
2
3
4
5
6
7
8
9
|
<?php require_once('./require.php'); ?>
<html><body>
↓ログインヴィジェット<br />
<?php require_once('widget/widget_login.php'); ?>
↑ログインヴィジェット<br />
↓商品検索ヴィジェット<br />
<?php require_once('widget/widget_search.php'); ?>
↑商品検索ヴィジェット<br />
</body></html>
|
/html/require.phpは定数設定やインクルードの他にセッションの設定なんかも行っているので、一切の出力を行う前に呼ぶ必要があります。
次にexample.phpで呼び出しているwidget_login.phpやwidget_search.phpなんかを作成。
/html/widget/widget_login.php
1
2
3
4
5
6
7
8
9
10
|
/*
EC-CUBE外からブロックをヴィジェット的に使用
ログインブロックを表示
*/
//ログインブロックにはsite.jsが必要
print('<script type="text/javascript" src="'.TPL_DIR.'js/site.js">
</script>');
//ブロック表示
require_once($require_php_dir.'/frontparts/bloc/login.php');
|
/html/widget/widget_search.php
1
2
3
4
5
6
7
|
/*
EC-CUBE外からブロックをヴィジェット的に使用
商品検索ブロックを表示
*/
//商品検索表示
require_once($require_php_dir.'/frontparts/bloc/search_products.php');
|
別ファイルにする意味がほとんど無いような中身ですが、ディレクトリ構成を見ればヴィジェットだと言うことが一目でわかりやすいということで。
とりあえず以上でEC-CUBE外からEC-CUBEのブロックをヴィジェットとして扱うことができるようになりました。
あんまり検証していないのでどんなバグが眠っているかわからんけどな。
あとインクルードした時点で画面出力まで行われてしまう作りは筋が悪いと言わざるをえない。
一応ここを参考にしたつもりだったんだけど原形を留めていない。
結局/html/require.phpと/frontparts/bloc/***.phpをインクルードすればよいという結論になりました。
EC-CUBEの記事