[解決済み] ベストセラーウィジェットに画像を表示させたい。
フォーラム › テンプレート(テーマ) › [解決済み] ベストセラーウィジェットに画像を表示させたい。
-
投稿者投稿
-
2010年6月17日 3:35 PM #49819gasa参加者
すみません。
welcartデフォルトテーマの左サイドバーのベストセラーウィジェットに商品画像を表示させたいのですが、
どうすればいいでしょうか?
おすすめウィジェットのように、
php usces_the_itemImage
を挿入すればいいと思いusces_bestseller.phpの
php usces_list_bestseller($rows_num)の直前に挿入してやってみました
が、一覧のトップの商品画像が出てしまいます。。。
template_func.phpの中にそれらしいモノがないかと探してみても無いようです
よろしくお願いいたします。
2010年6月18日 12:25 AM #59814nanbuキーマスターこんにちは。
usc-e-shop/functions/template_func.php のusces_list_bestseller() という関数をご覧ください。この中にusces_widget_bestseller_auto_text というフックが有ります。このフックに引っ掛けてフィルターをかけます。そうすることで本体に改変を加えずともご要望の表示をさせる事ができます。
フックやフィルターについてはこちらをご覧ください。
不用意に本体をハックしてはいけません。
まずはこの開発フォーラムで、どのフックを使えばいいのか、また存在しない場合は本体に新たなフックの設置が可能かどうかをお尋ねください。
2010年6月18日 1:06 AM #59815kami参加者kamiです。
フックについて書いてあったので失礼します。
『 usces_widget_bestseller_auto_text 』
上記のフックの中身はどこに記述すれば良いのでしょうか?
外部ファイルにフックの一覧が定義されているということでしょうか?
フックについてよくわからず、申し訳ありませんが、どうぞよろしくお願いましす。
2010年6月18日 4:33 AM #59816nanbuキーマスターフックはWelcart の機能ではなくWordPress のAPI です。その詳細は僕がここで説明するまでも無く「WordPress Codex」に全て記述されています。まずはそちらで知識を得て技術を習得してください。
ヒントを申し上げますと
フックに引っ掛けて自分で作った関数を実行することになります。その一連のコードはテーマフォルダの中のfunctions.php に記述するのが手っ取り早いと思います。大掛かりな場合は拡張プラグインを自分で作ることになります。Welcart 自体も全てフックに引っ掛けてWordPress を拡張しているのです。
趣味の範囲ならともかく、WordPress でカスタマイズを仕事にしたいと考えている方は「プラグイン API」をマスターするといいですよ。
2010年6月20日 12:39 PM #59817gasa参加者お返事遅くなり、すみません。
難しそうですが、PHPの勉強のテーマが出来たので頑張ります!
一応解決済みとします。
できたらご報告いたします。
素早いご回答ありがとうございました。
2010年6月23日 4:05 PM #59818gasa参加者すみません。追加で質問なのですが、
usces_widget_bestseller_auto_text
というフィルターフックの適用タイミングはどこで定義されているのでしょうか?
マルチファイル検索しても、usc-e-shop/functions/template_func.php
の中にしか見つからず、wordpress本体も検索しても見つからずで。。。
何度もすみません。
2010年6月23日 8:11 PM #59819nanbuキーマスターこんにちは。
usc-e-shop/functions/template_func.php の中で正解です。
そのusces_list_bestseller() と言う関数がベストセラーのリストを生成しています。
フィルターが代入している $disp_text がアンカーの中に設置されていますよね。その値を関数でリターンしてやればいいのです。
フィルターは2つの引数を送っています。大切なのは2つ目の$ids[$i](post_id)で、独自の関数ではこれを取得して商品の関連データを探し出すことになります。
2010年6月24日 2:17 PM #59820gasa参加者nanbu様
できたようです。。。
$disp_img = apply_filters('usces_widget_bestseller_auto_text', usces_the_itemImage($number = 0, $width = 150, $height = 150, $post ), $ids[$i]);
$htm .= "<li><img src='" . get_permalink($ids[$i]) . "'>" . $disp_img . "</a></li>?n";上記をbestseller関数の
$disp_text = apply_filters('usces_widget_bestseller_auto_text', wp_specialchars($post->post_title), $ids[$i]);
の後に挿入したら表示できました!
前回の質問の仕方が悪かったのだと思いもう一度聞きますが、
usces_widget_bestseller_auto_text
というフックが定義されているファイルが分かりません。
例えば、wordpressデフォルトのフィルターフックの
comment_excerpt
ならば、以下のような説明があります。
『comment_excerpt関数を使ってデータベースから取得したコメント抜粋に適用される。』
なので、usces_widget_bestseller_auto_textの正体がわからず悶々としています。
外部ファイルに「こういう動きをする」みたいなプログラムも見つからないので辿っていけず。。
多分どこかで独自フィルターフックを登録しているはず!と考えて探していたのですが、、、
すみません、かなり的を得てない質問かもしれません。
2010年6月25日 2:02 AM #59821nanbuキーマスターこんにちは。
template_func.php をハックしてしまってはフックの意味が有りません。
まずはtemplate_func.php を元に戻してください。
フックがどれか判らないという事ですが、apply_filters がフックなのです。
従って、apply_filters(‘usces_widget_bestseller_auto_text’,・・・・) がusces_widget_bestseller_auto_text というフィルターフックなのです。
次のコードをテーマ内のfunctions.php に記述してください。
add_filter( 'usces_widget_bestseller_auto_text', 'my_bestseller', 10, 3);
function my_bestseller(){
$args = func_get_args();
$post_id = $args[1];
$post = get_post($post_id);
$str = usces_the_itemImage(0, 60, 60, $post, 'return' ) . wp_specialchars($post->post_title);
return $str;
}2010年6月26日 10:56 AM #59822gasa参加者nanbu様
できました!
こういう仕組みになっているんですね。。。
何度もすみませんでした。
ありがとうございました!
2010年12月13日 4:22 PM #59823saorin参加者nanbu様
上記のやりとりを拝見させていただき、
add_filter( ‘usces_widget_bestseller_auto_text’, ‘my_bestseller’, 10, 3);
function my_bestseller(){
$args = func_get_args();
$post_id = $args[1];
$post = get_post($post_id);
$str = usces_the_itemImage(0, 60, 60, $post, ‘return’ ) . wp_specialchars($post->post_title);
return $str;
}
上記のコードをテーマ内のfunctions.php に記述してみたのですが、うまく画像が表示されません。。。
やりかたが間違っているのでしょうか?
他に変更すべき箇所があるのでしょうか?
ウィジットで、ベストセラーを選び、右のサイドバーに配置しています。
ちなみに、手書きリストを選択しています。
どうぞよろしくお願いいたします。
2010年12月14日 1:57 AM #59824nanbuキーマスターこんにちはsaorinさん。
手書きリストの方にはフックがありませんでしたので次期バージョンで追加したいと思います。フィルター名は’usces_widget_bestseller_manual_text’となる予定です。
2011年11月8日 6:12 PM #59825akemi参加者お世話になります。
2011/11/6に更新された、Welcart 1.0.7バージョンには追加されていないですね?次期バージョンになりますでしょうか?
楽しみにしてます。宜しくお願いします。
2011年11月9日 9:29 AM #59826nanbuキーマスターこんにちは、akemiさん。
‘usces_widget_bestseller_manual_text’フックは、usces_bestseller.php にございます。1.0.7 には既に入っております。
2011年11月10日 5:09 PM #59827akemi参加者nanbuさん、こんにちは。
お陰様でできました!嬉しいです。
本当にありがとうございました!
-
投稿者投稿
- このトピックに返信するにはログインが必要です。