php - 从 CS 购物车的网站搜索中排除类别

标签 php mysql smarty cs-cart

是否可以从搜索结果中排除特定类别的产品?无法通过 fn.search.phptpl 文件找到任何方法。

最佳答案

您可以使用钩子(Hook)“get_products” 请添加到文件:

app/addons/my_changes/init.php

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

fn_register_hooks(
    'get_products'
);

app/addons/my_changes/func.php

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

function fn_my_changes_get_products($params, $fields, $sortings, &$condition, $join, $sorting, $group_by, $lang_code, $having){

    if (AREA=='C' && !empty($params['search_performed']) && $params['search_performed']=='Y') {
        $cids = array(...); //ex: 15, 16, 17
        $subcats = true;

        if ($subcats) {
            $_ids = db_get_fields(
                "SELECT a.category_id"."
                 FROM ?:categories as a"."
                 LEFT JOIN ?:categories as b"."
                 ON b.category_id IN (?n)"."
                 WHERE a.id_path LIKE CONCAT(b.id_path, '/%')",
                $cids
            );
            $cids = fn_array_merge($cids, $_ids, false);
        }

        $condition .= db_quote(" AND ?:categories.category_id NOT IN (?n)", $cids);
    }
}

您需要使用您希望排除产品的类别 ID 以及子类别来填充 $cids 数组

$cids = array(...);

请确保:

  • “我的更改”插件已激活
  • 如果文件丢失,您需要创建

关于php - 从 CS 购物车的网站搜索中排除类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112391/

相关文章:

php - php文件之间的变量

MySQL数据库结构、用户和日期

mysql - SQL - 列出与其他属性一起出现的属性

php - 在 prestashop 的 Hook.php 中具有函数 exec() 的目的是什么

php - 带有强制分页符的打印表

php - MySQL获取单个表中的多行

smarty - smarty 和谷歌分析之间是否存在冲突(prestashop 1.4)

php - Smarty,每 4 次迭代新行

php - 如何根据所选类别向表单添加额外字段?

php - 在 Laravel 中将数组转换为 Eloquent 模型