バージョン選択

フォーラム

メニュー

オンライン状況

69 人のユーザが現在オンラインです。 (58 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 68
tattsu もっと...

サイト内検索

質問 > フロント機能 > 関数フラグ使用方法

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
marushige
投稿日時: 2011/4/16 13:58
対応状況: −−−
一人前
登録日: 2011/2/14
居住地:
投稿: 93
関数フラグ使用方法
EC-CUBEバージョン 2.4.4
PHPバージョン PHP 4.4.4
DBバージョン MySQL 5.0.82-community


http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=7470&forum=10

上記URLを参考にカテゴリ毎にヘッダ画像を変更するのに、
カテゴリ毎にフラグをたててしようと思うのですが、うまくすすみません。


【<!--{if $disp_image_flg != ""}-->
<!--★ヘッダー画像表示のタグをここに挿入★-->
  <!--{/if}-->】


上記コードを LC_Page_Products_List.php ファイルのどのあたりに記載するべきなのでしょうか?場所はそんなに関係ような気はしてますが、気になりまして。


さらに
【例えば、PHP側でカテゴリ1〜3に所属している商品であれば、
smarty側には表示フラグを渡して、フラグが立った時だけ
ヘッダー画像を表示するというのはどうでしょうか。】

上記のSMARY側に渡すというのは、どうすればよいのでしょうか?




再度ご教授ねがえないでしょうか?

bkmrk2009
投稿日時: 2011/4/16 16:42
対応状況: −−−
常連
登録日: 2009/7/26
居住地:
投稿: 67
Re: 関数フラグ使用方法
初めまして
スーパーコメントが付くと思いますが、とりあえず私からコメントさせて頂きます。
引用:

【<!--{if $disp_image_flg != ""}-->
<!--★ヘッダー画像表示のタグをここに挿入★-->
  <!--{/if}-->】

上記コードを LC_Page_Products_List.php ファイルのどのあたりに記載するべきなのでしょうか?場所はそんなに関係ような気はしてますが、気になりまして。

上記はテンプレートファイルへの記述例ですので、.phpには記載しません。

引用:

【例えば、PHP側でカテゴリ1〜3に所属している商品であれば、
smarty側には表示フラグを渡して、フラグが立った時だけ
ヘッダー画像を表示するというのはどうでしょうか。】
上記のSMARY側に渡すというのは、どうすればよいのでしょうか?

例ですが、LC_Page_Products_Listクラスのprocess()内で
$objView->assignobj($this);の前にthis->$disp_image_flg=x;
としてやればphpで解析した結果をフラグというカタチ渡せると思います。

上記を踏まえてLC_Page_Products_List.phpのLC_Page_Products_Listクラスを仕様に合わせて改造という手順になるかと思います。

外していたらスイマセン。
marushige
投稿日時: 2011/4/19 16:39
対応状況: −−−
一人前
登録日: 2011/2/14
居住地:
投稿: 93
Re: 関数フラグ使用方法
お返事ありがとうございます。

引用:

例ですが、LC_Page_Products_Listクラスのprocess()内で
$objView->assignobj($this);の前にthis->$disp_image_flg=x;
としてやればphpで解析した結果をフラグというカタチ渡せると思います。



上記の部分ですが、「this->$disp_image_flg=x;」をそのまま流しこみすると、
phpで構文エラーがでます。$を前へ持ってくるとエラーがなくなるのですが、
このようなカタチでよいのでしょうか?
「$this->disp_image_flg=x;」

bkmrk2009
投稿日時: 2011/4/19 17:22
対応状況: −−−
常連
登録日: 2009/7/26
居住地:
投稿: 67
Re: 関数フラグ使用方法
こんにちわ
スイマセン記述間違いがあった様です。恥ずかしい。
this->$disp_image_flg=x;
ではなくて、
$this->disp_image_flg=x;
の間違いでした。
xは任意に値にして下さい。
外していたらスイマセン。
marushige
投稿日時: 2011/4/19 17:59
対応状況: −−−
一人前
登録日: 2011/2/14
居住地:
投稿: 93
Re: 関数フラグ使用方法
すいまんせん なんども・・・

たとえば、

$this->disp_image_flg=1; としたときに 

前に記載のあった 

【<!--{if $disp_image_flg != "1"}-->
<!--★ヘッダー画像表示のタグをここに挿入★-->
  <!--{/if}-->】

とした場合、フラグが1の時指定の画像が表示されるという意味合いはわかるのですが、1をどこかで定義しないといけないような気がするのですが。。。
まちがっているでしょうか?


今は大カテゴリ3種類あり、各カテゴリの中でさらに枝わかれしているのですが、

そのすべてのページにおいてヘッダー画像の分岐をSMARTYでおこなっているので、商品のいずれかは大カテゴリの3種類に属しているので、大カテゴリが「1」「2」「3」とあった場合、2のカテゴリに属している場合、指定ヘッダー画像とできると
3通りの指定でヘッダー画像の処理がおこなえるので、かなりヘッダーでの処理が軽くなります。

今商品をふやすたび、分岐をふやしているので、重く重くなります。Orz
bkmrk2009
投稿日時: 2011/4/19 19:20
対応状況: −−−
常連
登録日: 2009/7/26
居住地:
投稿: 67
Re: 関数フラグ使用方法
こんばんわ。
marushige様が実現した方法を私が理解できていなかったら申し訳ありませんが、私が考えた方法を書いてみます。
(2.4.4のソースを見ています。)

(1)LC_Page_Products_List.phpに下記を追加。

  :
        // GETのカテゴリIDを元に正しいカテゴリIDを取得する。
        $arrCategory_id = $objDb->sfGetCategoryId("", $_GET['category_id']);

        // 追加? by bkmrk2009
        $objQuery = new SC_Query();
        $arrCatID = $objDb->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $arrCategory_id[0]);

又は
        // 追加? by bkmrk2009
        $arrCat = $objDb->sfGetFirstCat($arrCategory_id[0]);

(2) ?の場合は$arrCatID[0],?の場合は$arrCat['id']がmarushige様の言われる大カテゴリのID番号です。
(3) (2)で得られた大カテゴリのIDをテンプレート(list.tpl)へ渡すか、画像表示部分のhtmlのタグをphp内で生成して、それをテンプレートへ渡す。
(marushige様の場合は、大カテゴリは3つなので、$arrCatID[0]、又は$arrCat['id']に対して3分岐の判定処理で済みますよね。tplにはビジネスロジックはあまり記述したくないので、個人的には後者がいいかと思っています。)

大きく外していたらスイマセン。
marushige
投稿日時: 2011/4/21 21:33
対応状況: −−−
一人前
登録日: 2011/2/14
居住地:
投稿: 93
Re: 関数フラグ使用方法
「// 追加� by bkmrk2009
$arrCat = $objDb->sfGetFirstCat($arrCategory_id[0]);」

LC_Page_Products_List.phpへ追加後、ページを表示するとエラーがでました。


エラー内容
Fatal error: Smarty error: [in /home/sites/heteml/users75/l/v/-/lv-hi/web/pokepa/html/user_data/packages/default/header.tpl line 440]: syntax error: unexpected {elseif} (Smarty_Compiler.class.php, line 476) in /home/sites/heteml/users75/l/v/-/lv-hi/web/pokepa/data/module/Smarty/libs/Smarty.class.php on line 1095


操作内容

「// 追加� by bkmrk2009
$arrCat = $objDb->sfGetFirstCat($arrCategory_id[9]);」

上記項目をLC_Page_Products_List.phpへ追加

画像のフラグをうけとるため、ヘッダー.tplへ

【<!--{if $disp_image_flg != "9"}-->
<!--★ヘッダー画像表示のタグをここに挿入★-->
  <!--{/if}-->】

を記載しました。

やはり フラグの受け渡しかたに原因があるのでしょうか?

なんどもすいません


大カテゴリIDが「9」の場合、
「9」に属する商品や子カテゴリのリストページなどのヘッダーが統一されればいいんですが><

ちなみにエラーはなおりました。僕のいれかたが わるかったみたいです。
bkmrk2009
投稿日時: 2011/4/22 1:09
対応状況: −−−
常連
登録日: 2009/7/26
居住地:
投稿: 67
Re: 関数フラグ使用方法
こんばんわ。
なんとなくまだご理解されていないような気がしたので、
老婆心ながらもう少し具体的なコードを示してみます。
(但し参考程度です。

(1)LC_Page_Products_List.phpに下記を追加。

        // GETのカテゴリIDを元に正しいカテゴリIDを取得する。
        $arrCategory_id = $objDb->sfGetCategoryId("", $_GET['category_id']);

        // 追加 by bkmrk2009
        $arrCat = $objDb->sfGetFirstCat($arrCategory_id[0]);

        // 表示している商品リストが所属する大カテゴリのID番号でヘッダに表示したい画像の<img>タグ生成。
        if( $arrCat['id'] == 9 ) {
            // 大カテゴリのIDが9だった場合
            $this->catimg = "<img src=\"". TPL_DIR . "img/cat9.jpg\" />";
        }
        else if( $arrCat['id'] == 10 ) {
            // 大カテゴリのIDが10だった場合
            $this->catimg = "<img src=\"". TPL_DIR . "img/cat10.jpg\" />";
        }
        else if( $arrCat['id'] == 11 ) {
            // 大カテゴリのIDが11だった場合
            $this->catimg = "<img src=\"". TPL_DIR . "img/cat11.jpg\" />";
        }
        else {
            $this->catimg = "";
        }


(2)header.tplの必要な部分に

           :
    <!--{* 選択したカテゴリの大カテゴリを示す画像を表示 *}-->
    <!--{$catimg}-->
           :


これでどうでしょうか?(動作未確認)
理解していないのが僕だったらスイマセン。


----------------
落ちない様に必死です。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,291名です
総投稿数は109,691件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.