opencart $_GET 使用参数重定向到 index.php

opencart $_GET redirect to index.php with parameters

基本上我是在类别上构建自定义过滤器,并想使用 $_GET 来过滤类别中的产品。我发现每当提交表单输入时 URL 都会被重定向到 index.php?color=1 而不是 index.php?route=product/category&path=59?color=1.

任何人都可以解释一下吗?

localhost\catalog\view\theme..\category.tpl

      <div class="col-sm-1><!-- color -->
        <spam>Color</spam>
      </div>
      <div class="col-sm-11 form-group">
        <?php foreach ($details_color as $details_color) { ?>
            <div class="checkbox pretty primary">
              <?php if (isset($_GET[$details_color['name']])) { ?>
                <input type="checkbox" name="<?php echo $details_color['name']; ?>" value="<?php echo $details_color['value'] ?>" onchange="this.form.submit()" checked>
                <label><i class="fa fa-check"></i><?php echo $details_color['text']; ?></label>
              <?php } else { ?>
                <input type="checkbox" name="<?php echo $details_color['name']; ?>" value="<?php echo $details_color['value'] ?>" onchange="this.form.submit()">
                <label><i class="fa fa-check"></i><?php echo $details_color['text']; ?></label>
              <?php }?>
            </div>
        <?php } ?>
      </div>

localhost\catalog\controller\product\category.php

$array_details_color = array('black' => 'Black', 'blue' => 'Blue', 'brown' => 'Brown', 'cream' => 'Cream', 'crystal_color' => 'Crystal', 'gold' => 'Gold', 'gray' => 'Gray', 'green' => 'Green', 'orange' => 'Orange', 'pattern' => 'Pattern', 'pink' => 'Pink', 'purple' => 'Purple', 'red' => 'Red', 'silver' => 'Silver', 'tortoiseshell' => 'Tortoiseshell', 'translucent' => 'Translucent', 'white' => 'White', 'yellow' => 'Yellow');

$data['details_color'] = array();
    foreach ($array_details_color as $key => $value) {
        $data['details_color'][] = array (
            'text'  => $value,
            'name'  => $key,
            'value' => 1
        );
    }

localhost\catalog\model\catalog\product.php

$array_detail_color = array('black', 'blue', 'brown', 'cream', 'crystal_color', 'gold', 'gray', 'green', 'orange', 'pattern', 'pink', 'purple', 'red', 'silver', 'tortoiseshell', 'translucent', 'white', 'yellow');
    foreach ($array_detail_color as $value) {
        if (isset($_GET[$value])) {
            $sql .= " AND pdtc.$value = 1 ";
        }
    }

可能有更具体的 opencart 方法来执行此操作,但一个简单的方法是采用您的表单并添加两个隐藏的输入。

<input type="hidden" name="route" value"product/category">
<input type="hidden" name="path" value="59">

确保它与您的复选框位于同一个 <form> 标记中,并且在循环之外,这样它就不会被多次包含。

参数被添加到url这样的:-

?page=1&category=12 等等,没有?在 url

之间