繁体   English   中英

显示来自子类别问题的类别图片

[英]show category image from sub-category problem

请让我先解释我的问题。 我有一个网上商店,里面有很多产品,但也有很多类别。 产品图片是从openicecat.biz导入的,它也是内容提供商。 如果某产品没有可用的描述或图像,则显示noimage.jpg

有人编写了一个代码,该代码从产品列表中选择一个图像并将其用作该类别的图像。 (如果可用)当类别具有带图像的子类别和不带图像的子类别时,麻烦就来了。 会显示noimage.jpg,而是显示带有图像的子类别的图像。

例如

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

设计代码段的方式是,当内部和外部读卡器中都同时有图片时,只会显示一张图片,而当一个子类别没有图片时,则不会显示。

我想拥有的是,例如,当子类别内部读卡器的产品带有图像,而子类别外部读卡器的图像没有图像时,外部读卡器的图像将显示为读卡器的类别图像。

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

谁能帮助我完成此摘要?

btw1,用于oscommerce。

btw2,哦,我花了整整40分钟的时间来解释和键入这个问题,这也值得一枚奖牌(永恒的耐心勋章);-)

首先,有些批评。 您的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()添加第一张图像,而是循环遍历它,看看是否找到了非无图像。 例如:

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'];
  }
}

这也假定您不关心为该类别添加特定的图像,如果有的话,只添加任何non-noimage.jpg。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM