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

Padlik

Користувачі
  
  • Публікації

    105
  • З нами

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

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

  1. День добрый. Ищу исполнителя, который сможет сделать работу из сабжа. Сейчас в ЛК из коробки файлы для скачивания на отдельной странице, список заказов на отдельной - что не есть удобно. Версия движка Opencart 2.3.
  2. Добрый день! Прошу подсказку. Задача в /catalog/view/theme/mstore/template/account/order_list.tpl добавить вывод ссылки (или ссылок, купленных клиентом). Сейчас неудобно то, что файлы для скачивания и заказы в личном кабинете разведены по разным страницам. А я хочу сделать рядом с кнопкой просмотра заказа кнопку скачивания купленного файла. Что делаю, в контроллер /catalog/controller/account/order.php добавляю: $this->load->model('account/download'); $data['downloads'] = array(); $downloads = $this->model_account_download->getDownloads($result['order_id']); foreach ($downloads as $download) { if (file_exists(DIR_DOWNLOAD . $download['filename'])) { $size = filesize(DIR_DOWNLOAD . $download['filename']); $i = 0; $suffix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' ); while (($size / 1024) > 1) { $size = $size / 1024; $i++; } $data['downloads'][] = array( 'order_id' => $download['order_id'], 'date_added' => date($this->language->get('date_format_short'), strtotime($download['date_added'])), 'time_added' => date($this->language->get('time_format'), strtotime($download['date_added'])), 'name' => $download['name'], 'size' => round(substr($size, 0, strpos($size, '.') + 4), 2) . $suffix[$i], 'href' => $this->url->link('account/download/download', 'download_id=' . $download['download_id'], true) ); } } Ниже функцию download public function download() { if (!$this->customer->isLogged()) { $this->session->data['redirect'] = $this->url->link('account/download', '', true); $this->response->redirect($this->url->link('account/login', '', true)); } $this->load->model('account/download'); if (isset($this->request->get['download_id'])) { $download_id = $this->request->get['download_id']; } else { $download_id = 0; } $this->load->model('account/order'); if (isset($this->request->get['order_id'])) { $order_id = $this->request->get['order_id']; } else { $order_id = 0; } $download_info = $this->model_account_download->getDownload($order_id, $download_id); if ($download_info) { $file = DIR_DOWNLOAD . $download_info['filename']; $mask = basename($download_info['mask']); if (!headers_sent()) { if (file_exists($file)) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . ($mask ? $mask : basename($file)) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); if (ob_get_level()) { ob_end_clean(); } readfile($file, 'rb'); exit(); } else { exit('Error: Could not find file ' . $file . '!'); } } else { exit('Error: Headers already sent out!'); } } else { $this->response->redirect($this->url->link('account/download', '', true)); } } Вывод в шабе <?php if($downloads){ ?> <?php foreach($downloads as $download){ ?> <a href="<?php echo $download['href']; ?>" title=""><?php echo $download['name']; ?><?php echo " (". $download['size'] .")";?></a> <?php } ?> <?php } ?> На выходе имею ссылки на скачивание, однако ссылки зациклены и в заказах выводятся те ссылки, которые, собственно, не имеют к заказам отношения. Готов получить решение на платной основе. Спасибо.
  3. Благодарю Вас за ответ. У меня задача, на самом деле, достаточно примитивна. Мне нужно лишь, чтобы товар при выгрузке в мой склад приходил не с исходным названием с сайта, а с добавлением к названию выбранных в заказе опций. Если кто-то сможет помочь на платной основе - готов оплатить работу.
  4. День добрый! Использую исключительно для выгрузки заказов в учетную систему. Подскажите, у меня товары в заказе выгружаются без опций в принципе. Можно как-то заставить выгружаться опции, хотя бы добавлением названия и значения опции к названию самого товара? <Товары> <Товар> <Ид/> <Наименование>Коробка телескоп Luxor</Наименование> <ЦенаЗаЕдиницу>2500.0000</ЦенаЗаЕдиницу> <Количество>1</Количество> <Сумма>2500.0000</Сумма> <Скидки> <Скидка> <УчтеноВСумме>false</УчтеноВСумме> <Сумма>0</Сумма> </Скидка> </Скидки> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> <Резерв>1</Резерв> <БазоваяЕдиница> <Код>796</Код> <НаименованиеПолное>Штука</НаименованиеПолное> </БазоваяЕдиница> </Товар> </Товары>
  5. У меня одного данный модуль на страницах 404 выводит кривые ссылки на категории в версии Opencart 2.3? Я изменил модификатор везде, где идет получение ссылок на категории: Это 'href' => $this->url->link('product/category', 'path=_' . $result['category_id'] . $url) Меняем на это 'href' => $this->url->link('product/category', 'path=' . $result['category_id']) После данных изменений ссылки на категории на страницах 404 выводятся верные + работает ЧПУ. Без правок модификаторов ссылки не работали, ЧПУ также отсутствовал.
  6. Собственно, сабж. Нужно вывести товары, для которых назначен купон в модуле и странице акций.
  7. В общем да, не кашерно в шаблоне считать. Добавил в контроллер вычисление без форматирования цены и вернул разделитель тысячных пробелом: $skidka = round(100-((float)$product_info['special']/((float)$product_info['price']/100)));
  8. Ребят, разобрался. Проблема была следующая, кто-то ковырял языковой файл и сделал разделитель тысяч пробелом, отсюда кривые расчеты))) $_['thousand_point'] = ' '; Теперь у меня новый вопрос. Пофиксил я кривые расчеты, а разделитель тысячных остался нужен. Погуглил, везде основное решение - это как раз сделать пробел разделителем, однако, как показала практика - решение так себе. Можно каким-то образом расчеты производить, игнонируя этот пробел?
  9. Не из админки, вывод в шаблон товара. Попробовал тупо <?php echo 1/2; ?> - в шабе 0.5 - как положено. Пробую так <?php echo $product['price']/2; ?> (price - 23500) - результатом является 11.5))))) <?php echo $product['special']/2; ?> (special - 22795) - результатом является 11))))) Хоть убейте, не пойму где ломается цена при форматировании. В моделе товара чисто, currency.php оригинальный, без изменений. Смущает контроллер: if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $data['special'] = false; } Пробовал убрать форматирование $data['special']= $product_info['special'] - получается вообще полная херня. Работаю на php 5.6.4 в режиме CGI
  10. system/library/cart/currency.php - подсунул оригинал из opencart 2.3 - результата нет. Проверил на наличие модификаторов, затрагивающих этот файл - моды отсуствуют.
  11. Деление $product['special'] / $product['price'] = 22795/23500 - в выводе 0.95652173913043, по факту должно быть 0.97. (float)$product['special']/(float)$product['price'] - аналогичный результат. Подскажите, пожалуйста, формат цен задается только в контроллере товара или где-то еще?
  12. Прошу помочь. Не могу разобраться откуда растут ноги. Делаю вывод скидки в процентах: <?php echo round(100-($product['special']/$product['price'])*100); ?> или <?php echo round(100-($product['special']/($product['price']/100))); ?> Выводится полная херня. К примеру, новая цена 22795, старая 23500 - т.е. разница ровно 3%. Но в выводе -4%. А если фактический размер скидки меньше 3% - то в выводе 0%. При этом размер скидки в рублевом эквиваленте выводится норм. Валюта по-умолчанию рубль, значение 1.00000, кол-во нулей после запятой 0. Цены с налогом выключены. При этом болтается налоговая ставка - которую не могу удалить, но изменение ее значения никак не влияет на процент. Всю голову сломал, прошу подсказку, где искать косяк.
  13. Разобрался))) Всем спасибо, тему можно закрыть. Чтобы работал нормально релоуд, надо указывать текущую ссылку на страницу товара. В моем случае это: $('#reloadprod').load('/index.php?route=extension/module/prodinpop&product_id=' + product_id +' #reloadprod >*');
  14. Ребята, все привет. Нужна помощь. Сделал карточку товара в модальном окне используя fancybox. Сейчас делаю функцию добавления товара в корзину и обновления этой корзины из карточки товара в модальном окне. Суть такая: если товара в корзине нет, то при клике на кнопку "В корзину" - товар в количестве 1 штука падает в корзину и вместо кнопки "В корзину" появляется форма +/- для изменения количества товара в корзине из самой карточки. Фишка - если минусую количество до нуля - то +/- заменяется на кнопку "В корзину". На страницах категорий я это успешно реализовал. Итак, что делаю конкретно в товаре, по такому же принципу сделал и в категориях: Сама форма с заменой кнопки "В корзину" выглядит так: <div id="reloadprod"> <?php if (($quantity_in_cart)>0) { ?> <?php $style= 'display:block'; ?> <?php $style2 = 'display:none'; ?> <?php } else { ?> <?php $style= 'display:none'; ?> <?php $style2 = 'visibility: visible;'; ?> <?php } ?> <div class="cart-item__quantity" id="quant" style="<?php echo $style; ?>"> <div class="quantity"> <?php if ($weight_class == 'шт') { ?> <button class="quantity__controller quantity-minus1" type="button" onclick="updateCart2('<?php echo $product_id; ?>', '<?php echo $key; ?>', '-')">−</button> <?php } else { ?> <button class="quantity__controller quantity-minus1" type="button" onclick="updateCart2('<?php echo $product_id; ?>', '<?php echo $key; ?>', '1')">−</button> <?php } ?> <input class="quantity__value" type="text" id="quantida<?php echo $product_id; ?>" name="prod<?php echo $key; ?>" size="3" value="<?php echo $quantity_in_cart; ?> <?php echo $weight_class; ?>" onchange="updateCart2('<?php echo $product_id; ?>', '<?php echo $key; ?>')"/> <?php if ($weight_class == 'шт') { ?> <button class="quantity__controller quantity-plus1" type="button" onclick="updateCart2('<?php echo $product_id; ?>', '<?php echo $key; ?>', '+')">+</button> <?php } else { ?> <button class="quantity__controller quantity-plus1" type="button" onclick="updateCart2('<?php echo $product_id; ?>', '<?php echo $key; ?>', '2')">+</button> <?php } ?> </div> </div> <button type="button" onclick="addTocart('<?php echo $product_id; ?>');" id="button-cart" style="<?php echo $style2; ?>" data-loading-text="<?php echo $text_loading; ?>" class="add-to-basket button button--primary"><svg class="icon"><use xlink:href="#cart"></use></svg> В корзину</button> </div> Далее в json success для функции addtocart: if (json['success']) { $('#cart-total').html(json['countProducts']); $('#cart-total').html('<span>' + json['total'] + '</span>'); $('.total2').html(json['countProducts']); $('.total2').html('<span>' + json['total'] + '</span>'); $('.slide-cart').load('index.php?route=extension/module/popupcart .slide-cart > *'); document.getElementById('quant').style.display = "block"; document.getElementById('button-cart').style.display = "none"; $('#reload'+product_id+'').load(' #reload'+product_id+''); // === тут я налету обновляю блоки с аналогичной кнопкой корзины и -+ на страницах категорий, поиска и тд, чтобы при закрытии окна с товаром на страницах категории оставался блок с количеством товара в корзине ===// $('#reloadprod').load(' #reloadprod'); // ==== А вот тут я делаю перезагрузку блока на самой странице товара в модалке фэнси - и как раз тут у меня получается косяк. блок не релоудится, точнее я получаю пустой <div id="reloadprod"></div> - хотя должен получить блок +/- с ключом корзины, чтобы работало добавление плюсом и удаление из корзины минусом. Такая конструкция работает везде, кроме модального окна fancy. Грешу на то, что рефреш в модальном окне фэнси не работает должным образом. Очень прошу помочь как сделать релоуд конкретно этого div в модальном окне. ===//
  15. Друзья, прошу помочь. Пишу возможность изменять количество товара в корзине кнопками + и - со страницы категории. Делаю Контроллер checkout/cart public function minus() { $this->load->language('checkout/cart'); $json = array(); if (isset($this->request->post['key'])) { $this->cart->minus_product_quantity($this->request->post['key'],1); unset($this->session->data['vouchers'][$this->request->post['key']]); $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'])); $json['countProducts'] = sprintf($this->cart->countProducts()); $this->response->redirect($this->url->link('checkout/cart')); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } В файле library/cart ------- public function minus_product_quantity($product_id, $qty = 1){ $data = array(); $product['product_id'] = (int)$product_id; $key = base64_encode(serialize($product)); if ((int)$qty && ((int)$qty > 0)) { if ($this->session->data['cart'][$key]>1) { $this->session->data['cart'][$key] -= (int)$qty; } else { $this->remove($key); } } } В tpl категории: <a onclick="addTocart('<?php echo $product['product_id']; ?>');" class="add-basket product__add-basket"><svg class="icon"><use xlink:href="#cart-plus"></use></svg></a> <a onclick="minus('<?php echo $product['product_id']; ?>');" class="add-basket product__add-basket"><svg class="icon"><use xlink:href="#cart-minus"></use></svg></a> Скрипт: function minus(key) { $.ajax({ url: 'index.php?route=checkout/cart/minus', type: 'post', data: 'key=' + key, dataType: 'json', beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { $('#cart-total').html(json['countProducts']); $('#cart-total').html('<span>' + json['total'] + '</span>'); $('.slide-cart').load('index.php?route=extension/module/popupcart .slide-cart > *'); if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') { location = 'index.php?route=checkout/cart'; } else { $('#cart > ul').load('index.php?route=common/cart/info span'); } } }); } Добавление товара работает стандартным методом add, а вот уменьшение количества товара в корзине никак не хочет работать. В консоли XHR запрос /index.php?route=checkout/cart/minus возвращает 302 статус - не могу понять по какой причине. Прошу помощи, ибо уже не знаю в какую сторону копать. Подозреваю, что в контроллере корзины наваял кривенько.
  16. Для страницы товара по аналогии: Контроллер: $data['cart_count'] = 0; foreach ($this->cart->getProducts() as $product2) { if ($product2['product_id'] == (int)$this->request->get['product_id']) { $data['cart_count'] = $product2['quantity']; } } Шаблон: <?php echo $cart_count; ?>
  17. Благодарю Вас, помогли! Решение для получения текущее количество товара в из корзины на примере категорий: В контроллер перед $data['products'][] = array( $cart_count = 0; foreach ($this->cart->getProducts() as $product2) { if ($product2['product_id'] == $result['product_id']) { $cart_count = $product2['quantity']; } } В массив $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'cart_count' => $cart_count, ............ В шаблоне <?php echo $product['cart_count']; ?> ------------------------------------------------------------------------------------------
  18. Всем привет. Задача - показывать количество определенного товара по id из корзины на страницах категорий, модулей, товара. На примере категорий делаю: Перед $data['products'][] = array( Добавляю: $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $result['product_id']) { $cart_count = $product['quantity']; } } В массив $data['products'][] = array( 'cart_count' = cart_count, ..... В шаблоне product['cart_count'] - вывод количества конкретного товара работает криво. В корзине 2 товара. У одного количество 1, у другого 2. На странице категории у обоих товаров показывается количество 2, а у всех остальных не в корзине - количество 1. Подскажите, чего не так сделал?
  19. Тоже самое было в моем предыдущем посте, пришло один дубль изменить)
  20. Мой косяк, все работает))) У меня в модуле несколько однотипных блоков с выводом,в зависимости от медиа-запросов. Так вот, пихал $category['special_count'] в один из блоков, который в стилях скрыт... В общем все ок, еще раз всем спасибо!
  21. Я пытаюсь получить массив товаров из категорий и подкатегорий, чтобы вытащить товары со скидочной ценой. Массив товаров получаю в контроллере модуля категорий, вывод в шаблоне модуля категорий. Кэш модификаторов чистил. Системный тоже. Не помогает. print_r( $special_count ) - получаю правильный подсчет, но, я так понимаю, что $special_count к самим категориям не привязывается. По крайней мере вызов в шаблоне не работает.
  22. print_r($categories) на выходе Array ( [category_id] => 102 [image] => catalog/theme/image.png [parent_id] => 0 [top] => 0 [column] => 1 [sort_order] => 0 [status] => 1 [date_added] => 2020-02-22 23:11:35 [date_modified] => 2020-04-20 19:51:58 [language_id] => 1
  23. print_r($subproducts) нормально выводит массивы товаров со special, но определение переменной $category['special_count'] не работает.
×
×
  • Створити...

Important Information

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