普雷斯塔普 从 id 获取组合产品


Prestashop Get combination product from id's

我正在尝试在产品列表中显示数量,组合等。到目前为止,我已经让它很好地显示组合,以便我可以从分配给产品的每个组中选择一个属性。

现在,如何将这些"属性 ID"组合成一个组合产品,以便我可以看到价格,将其添加到购物车等。

这是我获取组合的模块

function hookdisplayProductOnList($params){
    $product=new Product($params['id_product']);
    $combinations=$product->getAttributeCombinations($this->context->language->id);
    $combArray = [];
    $combArrayIds = [];
    foreach( $combinations as $k => $v )
    {   
        if( !in_array($v["id_attribute"], $combArrayIds))
        {
            $combArrayIds[] = $v["id_attribute"];
            $combArray[ $v["group_name"] ][] = $v;
        }
    }
    $this->smarty->assign('combinations',$combArray);
    return $this->display(__FILE__, 'combinations.tpl');
}

这就是我输出组的方式

{foreach $combinations as $k=>$comb}
            <ul class="attribute-select" data-group="{$k}">
            {foreach from=$comb item=attr}
                <li data-combId="{$attr.id_attribute}" title="{l s='+'} {convertPrice price=$attr.unit_price_impact}">{$attr.attribute_name}</li>
            {/foreach}
            </ul><br />

{/foreach}

是否有任何辅助功能或类似的东西。喜欢:

::GetByAttributes($product_id, [ attr_id1, attr_id2, attr_id3 ] );

从产品 ID 和属性 ID 数组中,您可以获取产品属性 ID。我想这就是你需要的吗?

$productId = 123;
$attributeIds = [123, 1234];
$combinationId = (int) 'Product::getIdProductAttributesByIdAttributes(
    $productId,
    $attributeIds
);

更新

正如 PrestaShop 1.7.3.1 中@PululuK的评论中所述,这已被弃用,我们应该改用Product::getIdProductAttributeByIdAttributes(),请参阅 https://github.com/PrestaShop/PrestaShop/blob/develop/classes/Product.php#L6511。

我在这里使用 id_product 21 ,我的前缀表是 ps_(默认值(,lang id 是 1 ,并且数量取用于属性股票

这是我从prestashop

代码中获取的查询,翻译成单个查询,根据需要更改它,它将给出产品属性ID,数量和用于组合的prestashop格式

选择pac.id_product_attribute,(从ps_stock_available中选择总和(数量(,其中id_product_attribute = pac.id_product_attribute(作为数量,GROUP_CONCAT(agl.name , '-',al. name 按 AGL 订购。id_attribute_group分隔符"-"(作为attribute_designation从ps_product_attribute_combination PAC左连接ps_attribute A.id_attribute = PAC 。id_attribute左加入ps_attribute_group AG ON AG。id_attribute_group = a. id_attribute_group 左联接ps_attribute_lang AL ON (a. id_attribute = AL. id_attribute 和 AL. id_lang = 1( 左联接ps_attribute_group_lang AGL ON (AG.id_attribute_group = AGL。id_attribute_group和阿格尔。id_lang = 1( pac.id_product_attribute ps_product_attribute 中的位置(从 PA 中选择 pa.id_product_attribute 其中 PA。id_product = 21 组按 PA。id_product_attribute ( 按pac.id_product_attribute分组