バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品一覧の更新について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Masashige
投稿日時: 2011/6/28 11:15
対応状況: −−−
長老
登録日: 2009/4/1
居住地:
投稿: 200
Re: 商品一覧の更新について
タイムアウトで書いたのが消えてしまいました…。思い出しつつ
書きます。

キャッシュはすべて削除してOKだと思います。ただ、それで
改善されないようならちょっと最初に思ったのとは離れて
しまって原因はよくわからないです。すいません。

なんとなくですが、DBがおかしくなってる気がします。
phpmyadmin/phppgadmin等が使えるなら、直接見てみて
おかしいところがないか確認してみると良いと
思います。シーケンス周りもチェックできればなお良いかと。

ついでに、気になったことをあげておきます。

・以前に同じように商品の入れ替えを行ったことはありますか?その時には同じような症状にはなりませんでしたか?
・新規で追加した商品は「一覧の初期状態では表示されない」「新着順にすると表示される」でOKですか?
・削除したはずの商品は「一覧の初期状態で表示される」新着順にすると表示されますか?
・新規で追加した商品、削除したはずの商品は、それぞれ詳細ページは正常に表示されますか?
・「管理画面から削除」「DBのproductsからも削除」では、どのような作業を行いましたか?
ゲスト
投稿日時: 2011/6/28 11:33
対応状況: −−−
Re: 商品一覧の更新について
Masashige様、お世話になってます。
キャッシュ全部削除しても駄目でした。
シーケンス周りというのが分かりません。
phpmyadminを見ることはできるのですが、技術不足で申し訳ないです。


>・以前に同じように商品の入れ替えを行ったことはありますか?その時には同じような症状にはなりませんでしたか?
ありません。

・新規で追加した商品は「一覧の初期状態では表示されない」「新着順にすると表示される」でOKですか?
その通りです。

・削除したはずの商品は「一覧の初期状態で表示される」新着順にすると表示されますか?
表示されません。

・新規で追加した商品、削除したはずの商品は、それぞれ詳細ページは正常に表示されますか?
削除した商品の方は、商品ページもありませんので表示されませんが、新規の方は問題なく表示されます。

・「管理画面から削除」「DBのproductsからも削除」では、どのような作業を行いましたか?
管理画面では商品管理から商品を削除しました。それ以前の段階で非公開にしていたのに、商品一覧で表示されていたから削除しました。(商品一覧は横3列表示にしています)
dtb_productsから×マークで削除しました。

よろしくお願いします。
Masashige
投稿日時: 2011/6/28 11:59
対応状況: −−−
長老
登録日: 2009/4/1
居住地:
投稿: 200
Re: 商品一覧の更新について
あ、MySQLだったらシーケンスは関係ないです。すいません。

そういった症状に遭遇したことはないですが、症状からすると
product_idが重複して登録されてそうな気がします。でも
削除はしたんですよねぇ…。何でだろ?

少なくとも、既にどこにも存在しない"はず"のデータが表示
されている状態だと思いますので、情報を取得している部分を
見たりphpmyadminで値を確認しながら原因を探っていくしか
ないかなーと思います。

2.4.1が手元にないので2.3.4をチラっと見たところ、
LC_Page_Products_List.phpのlfDispProductsList()
あたりにその辺のコードが(変わってなければ)あると思います。
ゲスト
投稿日時: 2011/6/28 13:47
対応状況: −−−
Re: 商品一覧の更新について
この部分でしょうか?

/**
* Page のプロセス.
*
* @return void
*/
function process() {
$objView = new SC_SiteView();
$conn = new SC_DBConn();
$objDb = new SC_Helper_DB_Ex();

//表示件数の選択
if(isset($_POST['disp_number'])
&& SC_Utils_Ex::sfIsInt($_POST['disp_number'])) {
$this->disp_number = $_POST['disp_number'];
} else {
//最小表示件数を選択
$this->disp_number = current(array_keys($this->arrPRODUCTLISTMAX));
}

//表示順序の保存
$this->orderby = isset($_POST['orderby']) ? $_POST['orderby'] : "";

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

if (!isset($_GET['mode'])) $_GET['mode'] = "";
if (!isset($_GET['name'])) $_GET['name'] = "";
if (!isset($_POST['orderby'])) $_POST['orderby'] = "";
if (empty($arrCategory_id)) $arrCategory_id = array("0");

// タイトル編集
$tpl_subtitle = "";
if ($_GET['mode'] == 'search') {
$tpl_subtitle = "検索結果";
} elseif (empty($arrCategory_id[0])) {
$tpl_subtitle = "全商品";
} else {
$arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
$tpl_subtitle = $arrFirstCat['name'];
}

$objQuery = new SC_Query();
$count = $objQuery->count("dtb_best_products", "category_id = ?", $arrCategory_id);

// 以下の条件でBEST商品を表示する
// ・BEST最大数の商品が登録されている。
// ・カテゴリIDがルートIDである。
// ・検索モードでない。
if(($count >= BEST_MIN) && $this->lfIsRootCategory($arrCategory_id[0]) && ($_GET['mode'] != 'search') ) {
// 商品TOPの表示処理
$this->arrBestItems = SC_Utils_Ex::sfGetBestProducts($conn, $arrCategory_id[0]);
$this->BEST_ROOP_MAX = ceil((BEST_MAX-1)/2);
} else {
if ($_GET['mode'] == 'search' && strlen($_GET['category_id']) == 0 ){
// 検索時にcategory_idがGETに存在しない場合は、仮に埋めたIDを空白に戻す
$arrCategory_id = array(0);
}

// 商品一覧の表示処理
$this->lfDispProductsList($arrCategory_id[0], $_GET['name'], $this->disp_number, $_POST['orderby']);

// 検索条件を画面に表示
// カテゴリー検索条件
if (strlen($_GET['category_id']) == 0) {
$arrSearch['category'] = "指定なし";
}else{
$arrCat = $conn->getOne("SELECT category_name FROM dtb_category WHERE category_id = ?", $arrCategory_id);
$arrSearch['category'] = $arrCat;
}

// 商品名検索条件
if ($_GET['name'] === "") {
$arrSearch['name'] = "指定なし";
}else{
$arrSearch['name'] = $_GET['name'];
}
}
Masashige
投稿日時: 2011/6/28 14:00
対応状況: −−−
長老
登録日: 2009/4/1
居住地:
投稿: 200
Re: 商品一覧の更新について
あーと、その先の

function lfDispProductsList($category_id, $name, $disp_num, $orderby)


内の


        //表示順序
        switch($orderby) {

        //価格順
        case 'price':
            $col = "DISTINCT price02_min, product_id, product_code_min, product_code_max,"
                . " name, comment1, comment2, comment3,"
                . " main_list_comment, main_image, main_list_image,"
                . " price01_min, price01_max, price02_max,"
                . " stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,"
                . " point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,"
                . " status, product_flag, create_date, del_flg";
            $from = "vw_products_allclass AS T1";
            $order = "price02_min, product_id";
            break;

        //新着順
        case 'date':
            $col = "DISTINCT create_date, product_id, product_code_min, product_code_max,"
                . " name, comment1, comment2, comment3,"
                . " main_list_comment, main_image, main_list_image,"
                . " price01_min, price01_max, price02_min, price02_max,"
                . " stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,"
                . " point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,"
                . " status, product_flag, del_flg";
            $from = "vw_products_allclass AS T1";
            $order = "create_date DESC, product_id";
            break;

        default:
            $col = "DISTINCT T1.product_id, product_code_min, product_code_max,"
                . " price01_min, price01_max, price02_min, price02_max,"
                . " stock_min, stock_max, stock_unlimited_min,"
                . " stock_unlimited_max, del_flg, status, name, comment1,"
                . " comment2, comment3, main_list_comment, main_image,"
                . " main_list_image, product_flag, deliv_date_id, sale_limit,"
                . " point_rate, sale_unlimited, create_date, deliv_fee, "
                . " T4.product_rank, T4.category_rank";
            $from = "vw_products_allclass AS T1"
                . " JOIN ("
                . " SELECT max(T3.rank) AS category_rank,"
                . "        max(T2.rank) AS product_rank,"
                . "        T2.product_id"
                . "   FROM dtb_product_categories T2"
                . "   JOIN dtb_category T3 USING (category_id)"
                . " GROUP BY product_id) AS T4 USING (product_id)";
            $order = "T4.category_rank DESC, T4.product_rank DESC";
            break;
        }


です。カスタマイズ等していなければ、最初に一覧を表示した時は
default: 〜 break; で、新着順にした時はcase 'date': 〜 break;
で商品を引っ張ってきているかと思います。
ゲスト
投稿日時: 2011/6/28 14:19
対応状況: −−−
Re: 商品一覧の更新について
場所は分かりました。ソースも提示されたものと同じです。
デフォルトの場合人気順と言うことになるのでしょうか?
これだと新商品はリストに上がらないということになるんですね?
でももうすでに削除されたものがランキングに上がっているのが問題なのですが、どこにキャッシュされているのでしょう。
Masashige
投稿日時: 2011/6/28 15:18
対応状況: −−−
長老
登録日: 2009/4/1
居住地:
投稿: 200
Re: 商品一覧の更新について
うーん、後はソース追っかけたりDBの値見たりしながら原因を
探すことになると思いますが、ちょっとここで最後までサポートは
難しいかなと思います。

もし価格順で表示した場合にちゃんと新商品が出るようでしたら、
かなり乱暴ですが

//表示順序
switch($orderby) {


の前に

if($orderby != 'price'){
  $orderby = 'date';
}


等としてデフォルトを新着順に並べつつ裏で知り合いの業者さんに
相談されるのが良いんじゃないかなぁと思います。
ゲスト
投稿日時: 2011/6/28 15:49
対応状況: −−−
Re: 商品一覧の更新について
以下のようにしてみましたが、デフォルト表示になります。
間違ってるのかな?

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}

/* カテゴリIDがルートかどうかの判定 */
function lfIsRootCategory($category_id) {
$objQuery = new SC_Query();
$level = $objQuery->get("dtb_category", "level", "category_id = ?", array($category_id));
if($level == 1) {
return true;
}
return false;
}

/* 商品一覧の表示 */
function lfDispProductsList($category_id, $name, $disp_num, $orderby) {

$objQuery = new SC_Query();
$objDb = new SC_Helper_DB_Ex();
$this->tpl_pageno = defined("MOBILE_SITE") ? @$_GET['pageno'] : @$_POST['pageno'];

/* 商品一覧の修正 */
if($orderby != 'price'){
$orderby = 'date';
}
/* ここまで */


//表示順序
switch($orderby) {

//価格順
case 'price':
$col = "DISTINCT price02_min, product_id, product_code_min, product_code_max,"
. " name, comment1, comment2, comment3,"
. " main_list_comment, main_image, main_list_image,"
. " price01_min, price01_max, price02_max,"
. " stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,"
. " point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,"
. " status, product_flag, create_date, del_flg";
$from = "vw_products_allclass AS T1";
$order = "price02_min, product_id";
break;

//新着順
case 'date':
$col = "DISTINCT create_date, product_id, product_code_min, product_code_max,"
. " name, comment1, comment2, comment3,"
. " main_list_comment, main_image, main_list_image,"
. " price01_min, price01_max, price02_min, price02_max,"
. " stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,"
. " point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,"
. " status, product_flag, del_flg";
$from = "vw_products_allclass AS T1";
$order = "create_date DESC, product_id";
break;

default:
$col = "DISTINCT T1.product_id, product_code_min, product_code_max,"
. " price01_min, price01_max, price02_min, price02_max,"
. " stock_min, stock_max, stock_unlimited_min,"
. " stock_unlimited_max, del_flg, status, name, comment1,"
. " comment2, comment3, main_list_comment, main_image,"
. " main_list_image, product_flag, deliv_date_id, sale_limit,"
. " point_rate, sale_unlimited, create_date, deliv_fee,"
. " T4.product_rank, T4.category_rank";
$from = "vw_products_allclass AS T1"
. " JOIN ("
. " SELECT max(T3.rank) AS category_rank,"
. " max(T2.rank) AS product_rank,"
. " T2.product_id"
. " FROM dtb_product_categories T2"
. " JOIN dtb_category T3 USING (category_id)"
. " GROUP BY product_id) AS T4 USING (product_id)";
$order = "T4.category_rank DESC, T4.product_rank DESC";
break;
}

>ソース追っかけたりDBの値見たりしながら原因を
探すことになると思いますが、ちょっとここで最後までサポートは
難しいかなと思います。
そうですか・・・
お付き合いいただきありがとうございました。
まわりに業者さんいないんです・・・。どうしたものか。何かありましたらよろしくお願いいたします。
Masashige
投稿日時: 2011/6/28 16:09
対応状況: −−−
長老
登録日: 2009/4/1
居住地:
投稿: 200
Re: 商品一覧の更新について
んん!?もしかしてカスタマイズしてます?
LC_Page_Products_List_Ex.php はどうなってますか?
もしかしたらそっちに処理が書いてあるかもです。
先に確認しとけば良かったですね。すいません。

この辺にパートナーさんのリストがありますよ。
うちは登録してませんけど。

http://www.ec-cube.net/integrate/partner/index.php
ゲスト
投稿日時: 2011/6/28 16:15
対応状況: −−−
Re: 商品一覧の更新について
以下貼り付けます。

<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
*
* http://www.lockon.co.jp/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

// {{{ requires
require_once(CLASS_PATH . "pages/products/LC_Page_Products_List.php");

/**
* LC_Page_Products_List のページクラス(拡張).
*
* LC_Page_Products_List をカスタマイズする場合はこのクラスを編集する.
*
* @package Page
* @author LOCKON CO.,LTD.
* @version $Id: LC_Page_Products_List_Ex.php 16741 2007-11-08 00:43:24Z adachi $
*/
class LC_Page_Products_List_Ex extends LC_Page_Products_List {

// }}}
// {{{ functions

/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
parent::process();
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}
?>


横3列配置しかしていないのですが、何かお分かりになりますか?
よろしくお願いします。
« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,867名です
総投稿数は110,243件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1670
8
red
1570
9
mcontact
1339
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.