Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

MaJIon

Новачок
  
  • Публікації

    42
  • З нами

  • Відвідування

Усі публікації користувача MaJIon

  1. Я еще профан в php, поэтому сразу не понял. Спасибо за подсказку, переделал и все кэширует как надо По поводу вашей оптимизации есть ли смысл мне делать, если у меня всего 200 опций, и они на каждый товар почти одинаковые? Я из-за этого и решил закешировать их)
  2. Здравствуйте, пытаюсь закэшировать опции товара, но получаю ошибки, подскажите что я делаю не так? Сам файл кэша появляется, опции в файле кэшируются, но почему-то не выводится Ошибки следующие: 1. rying to access array offset on value of type int in 2. : Invalid argument supplied for foreach() in 3. : Trying to access array offset on value of type int in Модель public function getProductOptions($product_id) { $product_option_data = array(); $product_option_cache = $this->cache->get('product.option.' . (int)$product_id); if (!$product_option_cache) { $product_option_cache = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order"); foreach ($product_option_cache->row as $product_option_value) { $product_option_value_data = array(); $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order"); foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $product_option_value['name'], 'image' => $product_option_value['image'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } $product_option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } $this->cache->set('product.option.' . (int)$product_id, $product_option_cache); } return $product_option_cache; }
  3. Здравствуйте, подскажите пожалуйста, что тут не так, почему возвращает пустой массив ? Файл настройки темы $this->load->model('catalog/category'); if (isset($this->request->post['theme_zaprosto_category'])) { $data['theme_zaprosto_category'] = $this->request->post['theme_zaprosto_category']; } elseif (isset($setting_info['theme_zaprosto_category'])) { $data['theme_zaprosto_category'] = $setting_info['theme_zaprosto_category']; } else { $data['theme_zaprosto_category'] = array(); } foreach ($data['theme_zaprosto_category'] as $category_id) { $category_info = $this->model_catalog_category->getcategory($category_id); if ($category_info) { $data['theme_zaprosto_category'][] = array( 'category_id' => $category_info['category_id'], 'name' => ($category_info['path']) ? $category_info['path'] . ' &gt; ' . $category_info['name'] : $category_info['name'] ); } } В виде <div class="form-group"> <label class="col-sm-2 control-label" for="input-category">{{ entry_category }}</label> <div class="col-sm-10"> <input type="text" name="theme_zaprosto_category" value="" placeholder="{{ entry_category }}" id="input-category" class="form-control" /> <div id="featured_categories-category" class="well well-sm" style="height: 150px; overflow: auto;"> {% for category in theme_zaprosto_category %} <div id="featured_categories-category{{ category.category_id }}"><i class="fa fa-minus-circle"></i> {{ category.name }} <input type="hidden" name="category[]" value="{{ category.category_id }}" /> </div> {% endfor %} </div> </div> </div> <script> $('input[name=\'theme_zaprosto_category\']').autocomplete({ source: function(request, response) { $.ajax({ url: 'index.php?route=catalog/category/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['category_id'] } })); } }); }, select: function(item) { $('input[name=\'category\']').val(''); $('#featured_categories-category' + item['value']).remove(); $('#featured_categories-category').append('<div id="featured_categories-category' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="category[]" value="' + item['value'] + '" /></div>'); } }); $('#featured_categories-category').delegate('.fa-minus-circle', 'click', function() { $(this).parent().remove(); }); </script>
  4. Согласен, что для множество задач это костыль, но в моем случае есть всего несколько стран, которые будут неизменны. Ваш вариант конечно привлекательней, но мне надо было быстрое решение)
  5. Спасибо Вам добрый человек! Может кому пригодится: if ($this->request->post['code'] =='USD'){ // Код валюты $this->session->data['payment_address']['country_id'] = '260'; // ID нужной страны $this->session->data['shipping_address']['country_id'] = '260'; } elseif ($this->request->post['code'] =='GBP') { $this->session->data['payment_address']['country_id'] = '259'; $this->session->data['shipping_address']['country_id'] = '259'; } elseif ($this->request->post['code'] =='CAD') { $this->session->data['payment_address']['country_id'] = '258'; $this->session->data['shipping_address']['country_id'] = '258'; }
  6. Здравствуйте, нужно сделать автовыбор страны в зависимости от выбора валюты на сайте. То есть если выбирает пользователь руб тогда автоматически передается в сессию страна Россия, при выборе валюты ГРН - Украина и тд. Чтобы в конечном итоге в поле страны при оформлении заказа была выбрана страна в зависимости от валюты. Подскажите как можно это сделать самым простым способом, подкиньте идей)
  7. Уже решил, все намного проще чем я думал. Надо было лишь в модель добавить id товара и в доработать скрипт удаления товара из корзины, чтобы скрипт передавал product_id
  8. Как раз post[key] выводит значение cart_id с таблицы cart.. А мне надо вывести product_id с той же таблицы
  9. Здравствуйте, подскажите как я могу вывести id удалившего товара в функции public function remove() { в файле checkout/cart ?? $this->request->post['product_id'] - не катит Вся функция ниже public function remove() { $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $this->cart->remove($this->request->post['key']); unset($this->session->data['vouchers'][$this->request->post['key']]); //$json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('setting/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_setting_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get('total_' . $value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get('total_' . $result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); }
  10. Здравствуйте, почему в таблице customer в столбце cart не выводятся никакие данные, если товар у клиента лежит в корзине ? (на скриншоте 1) Кога в таблице cart данные сохраняются в базе. Зачем вообще нужен столбец cart в таблице customer?
  11. Тема закрыта, решено!
  12. Здравствуйте почему ошибка в запросе? (SELECT SUM(mpn) AS mpn FROM " . DB_PREFIX . "order_product WHERE o.order_id = '" . (int)$order_id . "') AS mpn, Так тоже не катит (SELECT SUM(mpn) AS mpn FROM " . DB_PREFIX . "order_product WHERE o.order_id) AS mpn Полный запрос $sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.total, (SELECT SUM(mpn) AS mpn FROM " . DB_PREFIX . "order_product WHERE o.order_id = '" . (int)$order_id . "') AS mpn, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";
  13. Да я это понял, я в мускулах профан и мне надо было лишь узнать как правильно SUM(...) записать
  14. Да правильно) Большое вам спасибо и низкий поклон!
  15. Всем привет) Помогите плз, нужно вывести суммарное число полей mpn в таблице order_product конкретного заказа Что то типа этого public function getTotalProductsByMpn($order_id) { $query = $this->db->query("SELECT COUNT(*) AS mpn FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); return $query->row['mpn']; }
  16. Спасибо, помогло)) Еще вопрос как сделать, так чтобы округляло 1000 и не пересчитывало как на скриншоте . У меня шаги у всех товаров разные и поэтому я в скрипте 1 заменил на input.attr('step')) в поле количества товаров, но вот если у меня шаг, к примеру, 0.100, то на увеличении к 0.300 у меня не округляет. Надо чтобы было 0.300
  17. Здравствуйте, как дописать скрипт таким образом, чтобы при клике добавляло или отнимало от значения в сотых, то есть шаг 0.25 сделать? <script><!-- $(function() { $(document).on('click', ".number-spinner a", function(e){ e.preventDefault(); btn = $(this); input = btn.closest('.number-spinner').find('input'); btn.closest('.number-spinner').find('a').prop("disabled", false); if (btn.attr('data-dir') == 'up') { if ( input.attr('max') == undefined || parseInt(input.val()) < parseInt(input.attr('max')) ) { input.val(parseInt(input.val())+1); input.trigger('change'); }else{ btn.prop("disabled", true); } } else { if ( input.attr('min') == undefined || parseInt(input.val()) > parseInt(input.attr('min')) ) { input.val(parseInt(input.val())-1); input.trigger('change'); }else{ btn.prop("disabled", true); } } }); $(document).on('change', '.dc-quantity-spinner-list', function(){ if($(this).parents('.product-thumb').find('[onclick^="cart.add"]').length){ var buttonCart = $(this).parents('.product-thumb').find('[onclick^="cart.add"]'); var productId = buttonCart.attr('onclick').match(/\d+/); buttonCart.attr('data-product-id', productId).removeAttr('onclick'); } }); $(document).on('click', '[data-product-id]', function(){ cart.add($(this).data('product-id'), $(this).parents('.product-thumb').find('.dc-quantity-spinner-list').val()); }); }); //--></script>
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.