2015-08-17 3 views
0

Концепция нашего проекта - фильтрация по площади с мутной продукцией, продукты могут быть одинаковыми или разными. Если администратор изменит цену продукта для конкретной области, тогда цена должна измениться только в соответствующей области. Для этого мы создали новую таблицу как oc_product_to_category со следующими новыми полями price,quantity,offer. , если новая таблица имеет значение цены, то используйте это значение для процесса, если другое означает использование значения цены по умолчанию в таблице oc_product. Upto страницы категории мы успешно реализовали эту концепцию,Как использовать таблицу пользовательских цен в открытой корзине

Category.php:

$this->load->model('mobile/product'); 
$price_by_category = $this->model_mobile_product->getpricebycategory($result['product_id'],$category_id); 

    if($price_by_category['price'] != ""){ 
     $data['products'][] = array(
       'product_id' => $result['product_id'], 
       'thumb'  => $image, 
       'name'  => $result['name'], 
       'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 
       'price'  => "Rs.".$price_by_category['price'].".00", 
       'special'  => $special, 
       'tax'   => $tax, 
       'minimum'  => $result['minimum'] > 0 ? $result['minimum'] : 1, 
       'rating'  => $result['rating'], 

       'href'  => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) 
      );; 
    }else{ 
     $data['products'][] = array(
       'product_id' => $result['product_id'], 
       'thumb'  => $image, 
       'name'  => $result['name'], 
       'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 
       'price'  => $price, 
       'special'  => $special, 
       'tax'   => $tax, 
       'minimum'  => $result['minimum'] > 0 ? $result['minimum'] : 1, 
       'rating'  => $result['rating'], 

       'href'  => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) 
      ); 
    } 

В корзине, она принимает значение таблицы цены по умолчанию. Если я создаю новые функции, мне нужно изменить работу всей корзины, но я хочу только изменить расчет цены. Исходя из идентификатора области и идентификатора продукта.

Я надеюсь, что кто-то даст решение.

Спасибо ..

ответ

1

Там нет необходимости повторять весь блок для category.php. Вы можете просто переназначить цену перед добавлением в массив, например $price = $price_by_category['price'] ?: $price.

Чтобы загрузить модель в cart.php, вы можете сделать это вот так. В __contruct блок добавить:

public function __construct($registry) { 
    $this->registry = $registry; 

Затем в методе getProducts() вы можете загрузить модель:

$this->load->model('mobile/product'); 
$mobileProduct = $this->registry->get('model_mobile_product'); 
$price_by_category = $mobileProduct->getpricebycategory($product_id,$category_id); 

Конечно проблема здесь вам нужно будет добавить данные категории в корзину массива, когда клиент добавляет товар в корзину, поэтому вы сможете ссылаться на него позже. Мое предложение состояло в том, чтобы закодировать его как третий срез в сеансе тележки. Обычно продукты выглядеть следующим образом:

product-id:serialized-option-data:profile-id 

Таким образом, вы можете добавить еще один кусок, чтобы сохранить идентификатор категории при добавлении в корзину:

product-id:serialized-option-data:profile-id:category_id 

Тогда позже:

if (!empty($product[3])) { 
    $category_id = $product[3]; 
} else { 
    $category_id = 0; 
} 

Вы также должны отправьте category_id как данные POST в Контроллер/Оформить заказ/корзину ->add(), а затем передать его sy stem/library/cart.php для кодирования в корзину.

+0

Спасибо ... Его рабочий тон @billynoah – Gayathri

+0

рад, что я могу помочь – billynoah

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