2013-11-18 10 views
2

Я использую opencart и успешно добавили минимальную цену заказа для всех транзакций. Это код, который я использовал:Цена минимального заказа Opencart исключает одну категорию

<?php if ($this->cart->getSubtotal() >= 10) { ?> 
<div id="payment"><?php echo $payment; ?></div> 
<?php } else { ?> 
<div class="warning">Minimum 10 Euro to checkout</div> 
<?php } ?> 

Теперь я хочу, чтобы исключить одну категорию из него так, что $ 9 продукт из этой категории можно купить.

Update 1: Спасибо большое за помощь shadyyx

Я попытался метод shadyyx, но я получаю эту ошибку: unexpected T_BOOLEAN_OR в этой линии

<?php if ($this->cart->getSubtotal() >= 10 || $this->cart->productsAreInCategory(1)) { ?> 

Update 2: Я попытался это, но он дал всплывающее говоря только об ошибках и кнопку ОК <?php if (($this->cart->getSubtotal() >= 10) || $this->cart->productsAreInCategory(1)) { ?>

Я попробовал этот <?php if (($this->cart->getSubtotal() >= 10) || ($this->cart->productsAreInCategory(1))) { ?> это не дает никакой ошибки и делает ту же работу (мин сумма всех заказов независимо от категории ид)

+0

Я не думаю, что для этого есть какой-либо метод быстрого доступа. Вам нужно добавить условие «elseif» между ними, чтобы проверить, совпадает ли категория существующего продукта с категорией, которую вы хотите исключить. –

ответ

0

Я бы так:

Расширьте system/library/cart.php и добавить метод:

public function productsAreInCategory($category_id) { 
    $product_ids = array(); 
    foreach($this->getProducts() as $product) { 
     $product_ids[] = $product['product_id']; 
    } 

    $categories = $this->db->query('SELECT category_id FROM ' . DB_PREFIX . 'product_to_category WHERE product_id IN (' . implode(',', $product_ids) . ')')->rows; 

    $category_ids = array(); 
    foreach($categories as $category) { 
     $category_ids[] = $category['category_id']; 
    } 

    if(in_array($category_id, $category_ids) { 
     return true; 
    } 

    return false; 
} 

Этот метод должен принять параметр $category_id для проверки и загрузки категорий для всех продуктов в корзине. После первого совпадения возвращается true, если нет совпадения, возвращается false. Теперь вы можете использовать этот метод следующим образом:

<?php if (($this->cart->getSubtotal() >= 10) || $this->cart->productsAreInCategory(1)) { ?> 
<div id="payment"><?php echo $payment; ?></div> 
<?php } else { ?> 
<div class="warning">Minimum 10 Euro to checkout</div> 
<?php } ?> 

Просто замените идентификатор категории в $this->cart->productsAreInCategory(1) с правильный.

+0

Спасибо за помощь Я получаю эту ошибку Ошибка анализа: ошибка синтаксиса, неожиданный T_BOOLEAN_OR в – Nix

+0

ОК, и ** в ** где? Пожалуйста, в будущем сообщите нам полное сообщение об ошибке ... Измените свой вопрос, добавьте сообщение об ошибке для этого решения и добавьте также часть кода, где появляется ошибка ... Спасибо. – shadyyx

+0

Извините, обновил вопрос – Nix

Смежные вопросы