質問 > フロント機能 > 関数フラグ使用方法 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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: 関数フラグ使用方法 初めまして
スーパーコメントが付くと思いますが、とりあえず私からコメントさせて頂きます。 引用:
上記はテンプレートファイルへの記述例ですので、.phpには記載しません。 引用:
例ですが、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: 関数フラグ使用方法 お返事ありがとうございます。
引用:
上記の部分ですが、「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に下記を追加。
(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に下記を追加。
(2)header.tplの必要な部分に
これでどうでしょうか?(動作未確認) 理解していないのが僕だったらスイマセン。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |