バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 連想配列データのテンプレートへの受け渡しについて

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
moke
投稿日時: 2012/1/11 21:12
対応状況: −−−
半人前
登録日: 2011/12/15
居住地:
投稿: 20
連想配列データのテンプレートへの受け渡しについて
トップ画面にカテゴリー毎の画像を表示したく、
以下のようなPRGを作成しました。

動きとしては、dtb_categoryより親カテゴリーを取得し、
その親カテゴリーをもとに子カテゴリーを取得。

取得した、子カテゴリーのdtb_productsを取得し、
取得したデータ内の画像ファイルを表示させようとしています。

※カテゴリー表示のPRG、テンプレートはデフォルトのcategory関連のファイルを修正しています。


function action() {
$this->arrProductTest = $this->lfGetProductData();
}

function lfGetProductData() {
$objQuery = new SC_Query_Ex();

$arrCategoryId = array();

$col = 'category_id';
$from = 'dtb_category';
$where = 'parent_category_id=0 group by category_id';

$arrCategoryId = $objQuery->select($col, $from, $where);

$col = 'p.*';
$from = 'dtb_product_categories as c
inner join dtb_products as p on c.product_id = p.product_id
inner join dtb_category as cat on c.category_id = cat.category_id';

foreach($arrCategoryId as $category_id){
$where = 'p.del_flg = 0 and cat.parent_category_id=' . $category_id['category_id'] . ' order by rand() limit 1';
$arrProductData[] = $objQuery->select($col, $from, $where);
}
return $arrProductData;
}


category_test.tpl

<!--{foreach from=$arrProductTest item=arrProduct name="product_data"}-->
<p>image:<!--{$arrProduct.main_large_image}--></p>
<!--{/foreach}-->


以上のようなPRGを作成したのですが、データ自体は取得でき、phpで確認すると、データも入っています。
しかし、テンプレート上に表示を行おうとすると、
配列自体はわたっていそうなのですが、データが何も入っていません。

何か、連想配列をテンプレートに渡す際に、
足りない処理などあるのでしょうか?

どなたか、ご教授いただければ幸いです。



[EC-CUBE] 2.11.4
[サーバ] 自社サーバ
[OS] centOS
[PHP] 5.3.3
[データベース] MySQL
[WEBサーバ] apache2.2.3-53
karin
投稿日時: 2012/1/11 21:33
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 連想配列データのテンプレートへの受け渡しについて
mokeさん、こんにちは。

mokeさんのプログラムでは、連想配列自体はテンプレート側に受け渡しされていますが、テンプレートでの処理に問題があるように見受けられます。

この連想配列の構造を確認してみてください。
<p>image:<!--{$arrProduct.main_large_image}--></p>


$arrProduct直下にmain_large_imageが格納されているのではなく、
その中にさらにもう一つ配列が存在し、その子要素としてmain_large_imageが格納されているようです。

試しに、
<p>image:<!--{$arrProduct.0.main_large_image}--></p>

を試してみてください。


----------------

moke
投稿日時: 2012/1/11 22:07
対応状況: −−−
半人前
登録日: 2011/12/15
居住地:
投稿: 20
Re: 連想配列データのテンプレートへの受け渡しについて
karin様

ご教授ありがとうございました。
kiranさまのおっしゃる通りに記述してみました所、
無事に表示を行うことができました。

お伺いしたいのですが、「.0.」を付けずに
「$arrProduct.main_large_image」のみで表示をする場合、
どのように配列に格納したらよいのでしょうか?

たびたび申し訳ありませんが、ご教授頂ければと思います。
karin
投稿日時: 2012/1/11 22:12
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 連想配列データのテンプレートへの受け渡しについて
テンプレート側で必要なデータは、main_large_image のみでしょうか?


----------------

moke
投稿日時: 2012/1/11 22:15
対応状況: −−−
半人前
登録日: 2011/12/15
居住地:
投稿: 20
Re: 連想配列データのテンプレートへの受け渡しについて
その他、nameやmain_list_image等が必要になります。
項目が一つでないと、実現不可能なのでしょうか?
karin
投稿日時: 2012/1/11 22:24
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 連想配列データのテンプレートへの受け渡しについて
いえ、そんなことはありません。必要な項目が一つであれば後述する方法とはまた違った方法もありましたので、念のため確認させていただいた次第です。

function lfGetProductData() 内でDBからデータを取得する際に、
現在の$objQuery->select ではなく、
一行をカラム名をキーとした連想配列として取得する関数: $objQuery->getRow を使えば可能かと思います。

※上記関数は、SC_Query.php 内に定義されています。


----------------

moke
投稿日時: 2012/1/11 22:33
対応状況: −−−
半人前
登録日: 2011/12/15
居住地:
投稿: 20
Re: 連想配列データのテンプレートへの受け渡しについて
karin様

教えて頂いたとおり、修正しましたところ無事に表示をすることができました!

かなり、煮詰まっていましたので本当に大変助かりました。

ご教授頂き、本当にありがとうございました。
karin
投稿日時: 2012/1/11 22:40
対応状況: 解決済
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 連想配列データのテンプレートへの受け渡しについて
無事解決されたとのことで、一安心いたしました。おつかれさまでした :))


----------------

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.