0

最初に私の質問を説明させてください。私は、多くの商品を扱うウェブショップを持っていますが、カテゴリもたくさんあります。製品の写真はコンテンツ プロバイダーであるopenicecat.bizからインポートされます。特定の製品の説明または画像がない場合、noimage.jpg が表示されます。

商品リストから画像を選び、そのカテゴリの画像として使用するコードを誰かが作成しました。(利用可能な場合)カテゴリに画像のあるサブカテゴリと画像のないサブカテゴリがある場合に問題が発生します。代わりに noimage.jpg が表示され、画像を含むサブカテゴリの画像が表示されます。

例えば

catelog -> components -> card readers (no image) -> internal card reader (image)
                                                 -> external card reader (no image)

コード スニペットが設計された方法では、1 つのサブ カテゴリに画像がない場合ではなく、内部および外部カード リーダーに両方の画像がある場合に画像のみが表示されます。

私がしたいのは、たとえば、サブカテゴリの内部カードリーダーに画像のある製品があり、サブカテゴリの外部カードリーダーに画像がない場合、外部カードリーダーの画像がカードリーダーのカテゴリ画像として表示されることです.

catelog -> components -> card readers (image of internal card reader, instead of no image)                                    
                                       -> internal card reader (image)
                                       -> external card reader (no image)

私が言いたいことを理解していただければ幸いです。

これはコード スニペットです。

// Start auto fetch category image from product
if($categories['categories_image'] == "") {
$categories_img_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " p, products_to_categories pc WHERE p.products_id = pc.products_id AND pc.categories_id = '{$categories['categories_id']}' AND p.products_image IS NOT NULL order by p.products_id ASC");

if(tep_db_num_rows($categories_img_query) > 0) {
 $categories_img = tep_db_fetch_array($categories_img_query);
 $categories['categories_image'] = $categories_img['products_image'];
}
else {
 $categories_img_parent_query = tep_db_query("select categories_id from categories WHERE parent_id = '{$categories['categories_id']}'");

 while($categories_img_parent = tep_db_fetch_array($categories_img_parent_query)) {
   $categories_img_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " p, products_to_categories pc WHERE p.products_id = pc.products_id AND pc.categories_id = '{$categories_img_parent['categories_id']}' AND p.products_image IS NOT NULL order by p.products_id ASC");
   if(tep_db_num_rows($categories_img_query) > 0) {
     $categories_img = tep_db_fetch_array($categories_img_query);
     $categories['categories_image'] = $categories_img['products_image'];
   }
 }
}
}
// End auto fetch category image from product

このスニペットを完成させるのを手伝ってくれる人はいますか?

ところで、これは oscommerce 用です。

ところで、ああ、私はほとんど 40 分かけてこの問題を説明し、入力しています。これもメダルの価値があります (永遠の忍耐のメダル) ;-)

4

1 に答える 1

0

まず第一に、いくつかの批判。WHERE句はJOINに含める必要があります。あれは:

WHERE p.products_id = pc.products_id

実際にする必要があります

p JOIN pc USING (products_id)

これはより速く明確になります。

あなたの特定の問題について:

空白の画像を作成する方法がまったくわかりません(常にproducts_image IS NOT NULLを指定します)。そのため、noimage.jpgが実際にその画像の値として保存されます。その場合、問題は、たとえそれがnoimage.jpgであっても、見つかった画像を追加しているということです。tep_db_fetch_array()から最初の画像を追加する代わりに、それをループして、非noimageが見つかったかどうかを確認します。例えば:

while ($row = tep_db_fetch_assoc($categories_img_query)) {
  if ($row['products_image'] <> 'noimage.jpg'
     or !isset($categories['categories_image'])
  ) {
     $categories['categories_image'] = $row['products_image'];
  }
}

これは、カテゴリに特定の画像を追加する必要がないことも前提としています。noimage.jpgが利用可能な場合は、それだけを追加します。

于 2010-10-09T02:09:29.390 に答える