

Padlik
Користувачі-
Публікації
105 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача Padlik
-
Добрый день! Прошу подсказку. Задача в /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 } ?> На выходе имею ссылки на скачивание, однако ссылки зациклены и в заказах выводятся те ссылки, которые, собственно, не имеют к заказам отношения. Готов получить решение на платной основе. Спасибо.
-
Благодарю Вас за ответ. У меня задача, на самом деле, достаточно примитивна. Мне нужно лишь, чтобы товар при выгрузке в мой склад приходил не с исходным названием с сайта, а с добавлением к названию выбранных в заказе опций. Если кто-то сможет помочь на платной основе - готов оплатить работу.
- 159 відповідей
-
- обмен данными
- exchange1c
-
(і ще %d)
Теги:
-
День добрый! Использую исключительно для выгрузки заказов в учетную систему. Подскажите, у меня товары в заказе выгружаются без опций в принципе. Можно как-то заставить выгружаться опции, хотя бы добавлением названия и значения опции к названию самого товара? <Товары> <Товар> <Ид/> <Наименование>Коробка телескоп Luxor</Наименование> <ЦенаЗаЕдиницу>2500.0000</ЦенаЗаЕдиницу> <Количество>1</Количество> <Сумма>2500.0000</Сумма> <Скидки> <Скидка> <УчтеноВСумме>false</УчтеноВСумме> <Сумма>0</Сумма> </Скидка> </Скидки> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> <Резерв>1</Резерв> <БазоваяЕдиница> <Код>796</Код> <НаименованиеПолное>Штука</НаименованиеПолное> </БазоваяЕдиница> </Товар> </Товары>
- 159 відповідей
-
- обмен данными
- exchange1c
-
(і ще %d)
Теги:
-
У меня одного данный модуль на страницах 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 выводятся верные + работает ЧПУ. Без правок модификаторов ссылки не работали, ЧПУ также отсутствовал.
- 46 відповідей
-
- страница 404
- seo оптимизация
- (і ще %d)
-
В общем да, не кашерно в шаблоне считать. Добавил в контроллер вычисление без форматирования цены и вернул разделитель тысячных пробелом: $skidka = round(100-((float)$product_info['special']/((float)$product_info['price']/100)));
-
Ребят, разобрался. Проблема была следующая, кто-то ковырял языковой файл и сделал разделитель тысяч пробелом, отсюда кривые расчеты))) $_['thousand_point'] = ' '; Теперь у меня новый вопрос. Пофиксил я кривые расчеты, а разделитель тысячных остался нужен. Погуглил, везде основное решение - это как раз сделать пробел разделителем, однако, как показала практика - решение так себе. Можно каким-то образом расчеты производить, игнонируя этот пробел?
-
Не из админки, вывод в шаблон товара. Попробовал тупо <?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
-
system/library/cart/currency.php - подсунул оригинал из opencart 2.3 - результата нет. Проверил на наличие модификаторов, затрагивающих этот файл - моды отсуствуют.
-
Деление $product['special'] / $product['price'] = 22795/23500 - в выводе 0.95652173913043, по факту должно быть 0.97. (float)$product['special']/(float)$product['price'] - аналогичный результат. Подскажите, пожалуйста, формат цен задается только в контроллере товара или где-то еще?
-
Прошу помочь. Не могу разобраться откуда растут ноги. Делаю вывод скидки в процентах: <?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. Цены с налогом выключены. При этом болтается налоговая ставка - которую не могу удалить, но изменение ее значения никак не влияет на процент. Всю голову сломал, прошу подсказку, где искать косяк.
-
Ребята, все привет. Нужна помощь. Сделал карточку товара в модальном окне используя 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 в модальном окне. ===//
-
Друзья, прошу помочь. Пишу возможность изменять количество товара в корзине кнопками + и - со страницы категории. Делаю Контроллер 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 статус - не могу понять по какой причине. Прошу помощи, ибо уже не знаю в какую сторону копать. Подозреваю, что в контроллере корзины наваял кривенько.
-
Благодарю Вас, помогли! Решение для получения текущее количество товара в из корзины на примере категорий: В контроллер перед $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']; ?> ------------------------------------------------------------------------------------------
-
Всем привет. Задача - показывать количество определенного товара по 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. Подскажите, чего не так сделал?
-
Я пытаюсь получить массив товаров из категорий и подкатегорий, чтобы вытащить товары со скидочной ценой. Массив товаров получаю в контроллере модуля категорий, вывод в шаблоне модуля категорий. Кэш модификаторов чистил. Системный тоже. Не помогает. print_r( $special_count ) - получаю правильный подсчет, но, я так понимаю, что $special_count к самим категориям не привязывается. По крайней мере вызов в шаблоне не работает.
Останні розширення
-
-
SP Cool Timer Автор: spectre
-
Всі товари магазину Автор: kJlukOo
-
-
Список Замовлень PRO Автор: Parallax