忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/19 02:39 |
EC-CUBE EC-CUBEの外からブロックを利用

ログインブロックやカレンダーブロックといったブロック機能は、/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.phpwidget_search.phpなんかを作成。

/html/widget/widget_login.php

1
2
3
4
5
6
7
8
9
10
<?php
    /*
        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
<?php
    /*
        EC-CUBE外からブロックをヴィジェット的に使用
        商品検索ブロックを表示
    */
    //商品検索表示
        require_once($require_php_dir.'/frontparts/bloc/search_products.php');


別ファイルにする意味がほとんど無いような中身ですが、ディレクトリ構成を見ればヴィジェットだと言うことが一目でわかりやすいということで。
とりあえず以上でEC-CUBE外からEC-CUBEのブロックをヴィジェットとして扱うことができるようになりました。
あんまり検証していないのでどんなバグが眠っているかわからんけどな。
あとインクルードした時点で画面出力まで行われてしまう作りは筋が悪いと言わざるをえない。

一応ここを参考にしたつもりだったんだけど原形を留めていない。
結局/html/require.php/frontparts/bloc/***.phpをインクルードすればよいという結論になりました。


EC-CUBEの記事
  

PR


2010/02/22 22:01 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<==NOVEL PHILOSOMA== 03 | HOME | 買ったものリスト 2010/02/21>>
忍者ブログ[PR]