以编程方式配置Prestashop镶嵌面搜索

以编程方式配置Prestashop镶嵌面搜索,prestashop,faceted-search,prestashop-1.7,Prestashop,Faceted Search,Prestashop 1.7,我必须为客户制作一个Prestashop网站,所以我必须每天用一个脚本导入他们的所有产品。除了启用ps\u facetedsearch模块所需的属性之外,所有功能(类别、产品、照片、功能)都正常工作。我可以在数据库中插入属性值,但找不到如何将它们分配给产品(这是问题1)。然后我需要在脚本中配置上述模块,以便这些属性可以在搜索块中显示为过滤器。确切地说,我必须知道在我的过滤器模型中使用了哪些类别,而我不能每天手动操作 下面是我用来将数据作为属性插入的代码($data是包含所有要导入数据的对象):

我必须为客户制作一个Prestashop网站,所以我必须每天用一个脚本导入他们的所有产品。除了启用
ps\u facetedsearch
模块所需的属性之外,所有功能(类别、产品、照片、功能)都正常工作。我可以在数据库中插入属性值,但找不到如何将它们分配给产品(这是问题1)。然后我需要在脚本中配置上述模块,以便这些属性可以在搜索块中显示为过滤器。确切地说,我必须知道在我的过滤器模型中使用了哪些类别,而我不能每天手动操作

下面是我用来将数据作为属性插入的代码(
$data
是包含所有要导入数据的对象):

关于这两个问题,你能给我指出正确的方向吗

编辑:对于问题的第一部分,我接受了下面的答案。至于第二部分,我终于找到了正确的代码,所以我将把它放在这里,以防有一天它能帮助别人

$cats=Db::getInstance()->executeS('SELECT id_category FROM `'._DB_PREFIX_.'category` WHERE `id_category`>\'1\'');
foreach($cats as $cle => $resultat){
    $comptattribut=0;
    $atts=DB::getInstance()->executeS('SELECT id_attribute_group FROM `'._DB_PREFIX_.'attribute_group` ORDER BY position ASC');
    foreach($atts as $cleatt => $resultatatt){
        $comptattribut++;
        DB::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'layered_category` SET `id_shop`=\'1\', `id_category`=\''.$resultat['id_category'].'\', `id_value`=\''.$resultatatt['id_attribute_group'].'\', `type`=\'id_attribute_group\', `position`=\''.$comptattribut.'\', `filter_type`=\'0\', `filter_show_limit`=\'0\'');
    }
DB::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'layered_category` SET `id_shop`=\'1\', `id_category`=\''.$resultat['id_category'].'\', `id_value`=NULL, `type`=\'price\', `position`=\''.($comptattribut+1).'\', `filter_type`=\'1\', `filter_show_limit`=\'0\'');
}

对于问题的第一部分,您应该使用以下内容:

$id_combination = $product->addCombinationEntity($wholesale_price, $price, $weight, $unit_price_impact, 0, $quantity, $ids_image, $reference, 0, $ean13, 0, 0, $upc);
foreach ($product_option_value as $id_attribute)
{
     Db::getInstance()->execute('INSERT IGNORE INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute) VALUES (' . (int) $id_attribute. ',' . (int) $id_combination . ')');
}

祝你好运。

这解决了第一个问题,我的属性已正确分配给我的产品。非常感谢。如果答案对您有帮助,请将其标记为有效;)祝你好运。它确实帮了我的忙,但我还在为模块配置而挣扎。我会随时通知你:)我建议你用第二个问题单独回答一个新问题。无论如何,你可以只标记一个答案为正确。祝你好运
$id_combination = $product->addCombinationEntity($wholesale_price, $price, $weight, $unit_price_impact, 0, $quantity, $ids_image, $reference, 0, $ean13, 0, 0, $upc);
foreach ($product_option_value as $id_attribute)
{
     Db::getInstance()->execute('INSERT IGNORE INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute) VALUES (' . (int) $id_attribute. ',' . (int) $id_combination . ')');
}