【问题标题】:Prestashop: How to get accessories for productPrestashop:如何获取产品配件
【发布时间】:2013-01-30 09:47:07
【问题描述】:

如何获得每种产品的配件? 在循环中:

{foreach $products as $product}

// 获取配件

{/foreach}

【问题讨论】:

  • 请指定您要展示附件的页面/url/模板
  • 我想要这里:modules/homefeatured/homefeatured.tpl

标签: product prestashop


【解决方案1】:

问题是 HomeFeatured 模块不检索产品的附件,因此它们在模板中不可用。

你有选择:

  • 编辑模块的 PHP 代码:简单但不是升级证明
  • 将模块复制到 myhomefeatured:也很简单,但更少,并且升级证明

我更喜欢第二个,更多的未来证明,如果需要,您可以在之后添加越来越多的逻辑。

无论您选择什么,这里修改后的 hookDisplayHome 代码都包含一个 Smarty 变量 $accessories 由产品的 id 索引:

public function hookDisplayHome($params) {
    $category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
    $nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
    $products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));

    // -- begin -->
    $accessories = array();
    foreach ($products as $product) {
        $p = new Product($product['id_product'], false, (int)Context::getContext()->language->id);
        $accessories[$product['id_product']] = $p->getAccessories((int)Context::getContext()->language->id);
    }
    // <-- end --

    $this->smarty->assign(array(
        'products' => $products,
        'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
        'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
        'accessories' => $accessories // <-- added --
    ));
    return $this->display(__FILE__, 'homefeatured.tpl');
}

【讨论】:

    【解决方案2】:

    获取属性组合的快速示例:

    $product = new Product($id_product);                
    $comb = $product->getAttributeCombinations($this->context->cookie->id_lang);
    
                        if (sizeof($comb)){
                            foreach($comb AS $combination){ 
                                //do some stuff here
                            }
                        }
    

    我认为这对另一个人会有所帮助

    【讨论】:

      【解决方案3】:

      我不确定它在 .tpl 文件中的外观,但对于 PHP,它是:

      $product->getAccessories(intval($cookie->id_lang))
      

      参考您的示例,它可能如下所示:

      {foreach $products as $product}
        {assign var='accessories' value=$product->getAccessories(intval($cookie->id_lang))}
          {$accessories|@var_dump}
          {foreach from=$accessories item=accessory}
             {$accessory|@var_dump}
          {/foreach}
      {/foreach}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 2020-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        相关资源
        最近更新 更多