Приобрёл ваш фильтр всё работет отлично на чистом движке, спасибо огромное. Сейчас пытаюсь сделать так чтобы при отсутствии товара на складе кнопка купить в категории товара менялась на кнопку вызова предзаказа. Для этого правил 2 файла category.tpl и контролер category.php в итоге получил вот что:
при отключенном фильтре кнопки выводятся правильно, но если фильтр включить он подменяет вывод товаров в категории на свой filterpro.tpl. Я меняю код <div class="cart"> ... </div> в раёне 235 строки в filterpro.tpl и делаю небольшие правки в контроллере filterpro.php. Делаю тоже самое что и в файлах category.tpl и category.php кнопки тоже добавляются и работают но при этом фильтрация перестаёт работать. Изменения кода приведены ниже:
Файл контроллера filterpro.php :
Было:
if($product['quantity'] <= 0) {
$rstock = $product['stock_status'];
} elseif($this->config->get('config_stock_display')) {
$rstock = $product['quantity'];
} else {
$rstock = $this->language->get('text_instock');
}
Стало:
if($product['quantity'] <= 0) {
$rstock = $product['stock_status'];
$this->data['quantity'] = 0;
} elseif($this->config->get('config_stock_display')) {
$rstock = $product['quantity'];
$this->data['quantity'] = 1;
} else {
$rstock = $this->language->get('text_instock');
$this->data['quantity'] = 1;
}
Было:
$result[] = array(
'product_id' => $product['product_id'],
'sku' => $filterpro_setting['sku_display'] ? $product['sku'] : false,
'model' => $filterpro_setting['model_display'] ? $product['model'] : false,
'brand' => $filterpro_setting['brand_display'] ? $product['manufacturer'] : false,
'location' => $filterpro_setting['location_display'] ? $product['location'] : false,
'upc' => $filterpro_setting['upc_display'] ? $product['upc'] : false,
'stock' => $filterpro_setting['stock_display'] ? $rstock : false,
'image' => $image,
'thumb' => $image,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'name' => $product['name'],
'description' => $description,
'price' => $price,
'href' => $this->url->link('product/product', 'path=' . $this->request->post['path'] . '&product_id=' . $product['product_id'])
);
Стало:
$result[] = array(
'product_id' => $product['product_id'],
'sku' => $filterpro_setting['sku_display'] ? $product['sku'] : false,
'model' => $filterpro_setting['model_display'] ? $product['model'] : false,
'brand' => $filterpro_setting['brand_display'] ? $product['manufacturer'] : false,
'location' => $filterpro_setting['location_display'] ? $product['location'] : false,
'upc' => $filterpro_setting['upc_display'] ? $product['upc'] : false,
'stock' => $filterpro_setting['stock_display'] ? $rstock : false,
'image' => $image,
'thumb' => $image,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'name' => $product['name'],
'description' => $description,
'price' => $price,
'href' => $this->url->link('product/product', 'path=' . $this->request->post['path'] . '&product_id=' . $product['product_id']),
'quantity' => $result['quantity']
);
Файл контроллера filterpro.tpl :
Было:
<div class="cart"><a onclick="addToCart('${product_id}');" class="button"><span><?php echo $button_cart; ?></span></a></div>
Стало:
<div class="cart">
<?if($product['quantity']!=0):?>
<div class="cart"><input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /></div>
<?else:?>
<div class="cart"><input type="button" value="Предзаказ" rel="<?=$product['name'];?>" class="button pre_order" /></div>
<?endif?>
</div>
Суть изменения кода в том чтоб перед выводом кнопки проверять наличие товара на складе и в соответствии с наличием или отсутствием выводит соответствующую кнопку.
Скорее всего проблема :
if($product['quantity'] <= 0) {
$rstock = $product['stock_status'];
$this->data['quantity'] = 0;
} elseif($this->config->get('config_stock_display')) {
$rstock = $product['quantity'];
$this->data['quantity'] = 1;
} else {
$rstock = $this->language->get('text_instock');
$this->data['quantity'] = 1;
}
подскажите пожалуйста как правильно прописать проверку наличия не задевая логику фильтра. заранее спасибо.