【问题标题】:List products for specific category列出特定类别的产品
【发布时间】:2012-10-12 09:01:51
【问题描述】:

我正在尝试根据我所在产品的类别列出 4 个产品,所以如果我正在查看类别为“Awesome category”的“Cool product”,我想查看最新的“Awesome”中的 4 个该产品中的“类别”产品。

我知道这可以通过手动将每个产品的产品添加到特定块来实现,不幸的是,这种方法的产品太多了,不可行。

我已经到了可以根据当前产品类别获取最新 4 种产品的 id 的地步,但是我无法获取缩略图或产品的 URL,这是我目前所拥有的,

{php}
    $pid = $this->get_template_vars("product");
    $pid = $pid["product_id"];

    $cid = db_get_field("SELECT category_id FROM cscart_products_categories WHERE product_id = '$pid' AND link_type = 'M';");
    $prod_ids = db_get_fields("SELECT * FROM cscart_products_categories WHERE category_id = '$cid' LIMIT 4;");

    foreach($prod_ids as $prod_id){
        echo $prod_id;
    }

    print_r($prods);

{/php}

如您所见,我在配置中启用了 PHP。因此,总而言之,我想根据当前产品类别在我当前查看的产品中显示 4 个产品。

【问题讨论】:

  • cscart_products_categories 表是什么样子的?
  • 为什么要将您的逻辑与您的演示文稿混为一谈?阻止它不是很聪明吗?
  • @Marcus cscart_products_categories 的表结构如下所示,product_id(mediumint), category_id(mediumint), link_type(char), position(smallint)。 @Sammaye我对Smarty不太熟悉,所以我不确定最好的方法。我知道最好使用插件来达到预期的效果,但不幸的是我时间紧迫。
  • 好的,太好了。还有几个问题。 $prods 变量是什么,我在任何地方都看不到它的定义。您是否真的在 foreach 循环中打印了 ID?由于您选择 *,所以您不应该获得所有列,以便这一行 prod_ids = db_get_fields("SELECT * FROM cscart_products_categories WHERE category_id = '$cid' LIMIT 4;");实际上返回完整的结果集,你不能像这样访问你的列,$prod_ids['category_id'], $prod_ids['link_type'] 等等?您在哪里存储缩略图图像/url 和产品 url? db 中的列?

标签: php smarty smarty3 cs-cart


【解决方案1】:

方式 1 - 当你有 category_id 时

http://x.com/index.php?dispatch=categories.view&category_id=45

方式 2 - 当您有 product_id 或 category_id 时

进行查询(例如类别)

select * from cscart_seo_redirects where object_id = 45 and type = 'c' and lang_code='en'

然后读取 src 字段!

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多