バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > 管理機能 > 商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kenz
投稿日時: 2017/3/19 3:54
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 44
商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて
お世話になっております。

管理者画面の商品管理/商品マスターの“この条件で検索をクリック”した際に表示されるページ数($tpl_pager)がありますが、この検索に関与するsc_product.phpのクエリーを変更した検索機能を新たに追加しました。

商品の“検索結果の取得”は正しいものが表示されますが、問題は“ページ送りの取得”の箇所で、たとえば検索で表示される商品の数が少なく、2ページにまで至らない場合にも、2,3,4ページと表示されます。(おそらく検索にかかわるデフォルトのphpファイルの記述を使用しているためだと思われます。)

この様にsc_product.phpでのクエリーの絞りを変更した場合に$tpl_pagerの結果が正しく表示されるためにはどのファイルのどの箇所を変更すれば宜しいかお教え願いませんでしょうか。(以下はページ送りの取得をしている記述です。)

LC_Page_Admin_Products.php

// 検索実行
default:
// 行数の取得
$this->tpl_linemax = $this->getNumberOfLines($where, $arrWhereVal);
// ページ送りの処理
$page_max = SC_Utils_Ex::sfGetSearchPageMax($objFormParam->getValue('search_page_max'));
// ページ送りの取得
$objNavi = new SC_PageNavi_Ex($this->arrHidden['search_pageno'],
$this->tpl_linemax, $page_max,
'fnNaviSearchPage', NAVI_PMAX);
$this->arrPagenavi = $objNavi->arrPagenavi;

// 検索結果の取得
$this->arrProducts = $this->findProducts($where, $arrWhereVal, $page_max, $objNavi->start_row,
$order, $objProduct);

// 各商品ごとのカテゴリIDを取得
if (count($this->arrProducts) > 0) {
foreach ($this->arrProducts as $key => $val) {
$this->arrProducts[$key]['categories'] = $objDb->sfGetCategoryId($val['product_id'], 0, true);
$objDb->g_category_on = false;
}
}

EC-CUBE 2.X系
(データベース) MySQL5.0.77
(WEBサーバ) apache2
(OS) Windows XP
(PHP) 5.0.22
tao_s
投稿日時: 2017/3/19 6:52
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 646
Re: 商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて
どういうカスタマイズをしたのか具体的なところがわからないので何とも言えませんが、getNumberOfLines()あたりじゃないでしょうか?


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBE開発ブログ

kenz
投稿日時: 2017/3/19 19:37
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 44
Re: 商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて
tao_s様

ご教示頂きまして感謝いたします。

x件が該当しました。という表示はデフォルトの状態で抽出した数字を表示します。

以下の“検索結果の取得”が正常に機能してる(カスタマイズした$objProductも正常に反映されている)にもかかわらず、

その下の“検索結果の行数を取得する”が機能していないのはどこに問題があるからなのでしょうか。

いろいろと試しておりますが、どうしてもわかりません。


// 検索結果の取得
$this->arrProducts = $this->findProducts($where, $arrWhereVal, $page_max, $objNavi->start_row,
$order, $objProduct);


// 検索結果の行数を取得する.
function getNumberOfLines($where, $arrValues) {
$objQuery =& SC_Query_Ex::getSingletonInstance();
return $objQuery->count('dtb_products', $where, $arrValues);
}
468
投稿日時: 2017/3/20 11:46
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 630
Re: 商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて
検索結果の行数を取得しているgetNumberOfLinesメソッド内の
return $objQuery->count('dtb_products', $where, $arrValues);

ですが、単純にdtb_productsテーブルのみを対象に抽出された件数を返しています。

カスタマイズされた$objProductの内容は件数を取得するSQLには伝わっていないので、
getNumberOfLinesメソッド内の処理をカスタマイズする必要があると思います。

findProductsメソッドのほうは引数に$objProductが渡されており、
メソッド内で以下の記述により$objProductが利用されています。

$from = $objProduct->alldtlSQL();


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

kenz
投稿日時: 2017/3/21 0:36
対応状況: −−−
常連
登録日: 2010/6/8
居住地:
投稿: 44
Re: 商品管理/商品マスターで検索をした際に表示される$tpl_pagerについて
468様、tao_s様、

もう少しのところまで来ている感があります。
以下の設定にいたしましたが、同様に$objProductを利用しているfunction findProducts(検索結果の取得)ではエラーがでないにも関わらず、以下の設定では

function getNumberOfLines($where, $arrValues, &$objProduct) {
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objProduct = new SC_Product2_Ex();
$from = $objProduct->alldtl($where_products_class = '');
return $objQuery->count('dtb_products', $from, $where, $arrValues);
}

次の様なエラーがでます。

MDB2 Error: syntax error
_doQuery: [Error message: Could not execute statement]
[Native code: 1064]
[Native message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS alldtl' at line 1]

Sc_product2.phpのfunction alldtl($where_products_class = '') のwhere句の下にあるAS alldtl付近に構文上の問題がるというエラーがでます。同じクエリーを使用しているfindProductsでは問題ないので、getNumberOfLinesに関する記述のどこかに問題があるのかと考えておりますが、糸口が見つかりません。何かヒントなどありませんでしょうか。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は19,664名です
総投稿数は82,195件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1632
4
yuh
1372
5
red
1059
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
782
10
umebius
671
11
tao_s
646
12 sumida 638
13
homan
633
14
468
630
15 karin 609
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.