-
Публикаций
19 -
Зарегистрирован
-
Посещение
Достижения KylunSergOC
-
Наследования для собственного контроллера
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 3.x: Общие вопросы
Я думав що система автоматично їх шукає та підключає -
Наследования для собственного контроллера
KylunSergOC опубликовал теме в Opencart 3.x: Общие вопросы
Подскажите как работает наследование в Opencart 3. моя структура файлов: Я хочу чтобы set_filter_body наследовался от set_filter так же как set_filter наследуется от контроллера. Но без явного подключения require_once(DIR_APPLICATION . 'controller/ocpinka/set_filter.php'); я получаю ошибку Fatal error: Uncaught Error: Class 'ControllerOcpinkaSetFilter' not found in C:\OpenServer\domains\site.ua\catalog\controller\ocpinka\set_filter_body.php:3 Stack trace: #0 C:\OpenServer\domains\sitestorage\modification\system\engine\action.php(69): include_once() #1 C:\OpenServer\domains\site.ua\catalog\controller\startup\router.php(25): Action->execute() #2 C:\OpenServer\domains\sitestorage\modification\system\engine\action.php(79): ControllerStartupRouter->index() #3 C:\OpenServer\domains\site.ua\system\engine\router.php(67): Action->execute() #4 C:\OpenServer\domains\site.ua\system\engine\router.php(56): Router->execute() #5 C:\OpenServer\domains\site.ua\system\framework.php(169): Router->dispatch() #6 C:\OpenServer\domains\site.ua\system\startup.php(104): require_once('C:\\OpenServer\\d...') #7 C:\OpenServer\domains\site.ua\index.php(21): start() #8 {main} thrown in C:\OpenServer\domains\site.ua\catalog\controller\ocpinka\set_filter_body.php on line 3 Нужно дополнительно что-то настраивать, или использовать require_once это нормально? -
Подскажите как исправить ошибку. Хочу добавить возможность изменять количество товаров после добавления в корзину (фото прикреплено). В файл cart.twig добавлена разметка: <td> <div class="cart_quantity_button"> <a style="font-size:20px; cursor:pointer" class="cart_quantity_down" data-key="{{ product.cart_id }}">-</a> <input class="cart_quantity_input" type="text" name="quantity" value="{{ product.quantity }}" autocomplete="off" size="2" readonly> <a style="font-size:20px; cursor:pointer" class="cart_quantity_up" data-key="{{ product.cart_id }}">+</a> </div> </td> И в файл common.js добавлено функцию и слушатели: function updateCart(key, quantity) { $.ajax({ url: 'index.php?route=checkout/cart/edit', type: 'post', data: 'key=' + key + '&quantity=' + (typeof (quantity) != 'undefined' ? quantity : 1), dataType: 'json', beforeSend: function () { $('#cart > button').button('loading'); }, complete: function () { $('#cart > button').button('reset'); }, success: function (data) { // Обновление количества товаров в корзине $('#cart-total').html(data['total']); // Обновление содержимого корзины 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 ul li'); } }, error: function (jqXHR, exception) { if (jqXHR.status === 0) { alert('Not connect. Verify Network.'); } else if (jqXHR.status == 404) { alert('Requested page not found (404).'); } else if (jqXHR.status == 500) { alert('Internal Server Error (500).'); } else if (exception === 'parsererror') { alert('Requested JSON parse failed.'); } else if (exception === 'timeout') { alert('Time out error.'); } else if (exception === 'abort') { alert('Ajax request aborted.'); } else { alert('Uncaught Error. ' + jqXHR.responseText); } } }); } $('.cart_quantity_up').on('click', function () { var key = $(this).data('key'); var quantity = $(this).parent().find('.cart_quantity_input').val(); quantity++; $(this).parent().find('.cart_quantity_input').val(quantity); updateCart(key, quantity); }); $('.cart_quantity_down').on('click', function () { var key = $(this).data('key'); var quantity = $(this).parent().find('.cart_quantity_input').val(); if (quantity > 1) { quantity--; $(this).parent().find('.cart_quantity_input').val(quantity); updateCart(key, quantity); } }); При нажатии на +/- срабатывает событие, количество увеличивается/уменьшается и вызывается функция updateCart() которая должна обновить содержимое корзины. Но метод success не выполняется, так как получаю ошибку "parsererror". (фото прикреплено)
-
Счетчик количества товаров
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 3.x: Общие вопросы
показал деду, поорали вместе. Дед оценил -
Добрый день. OcStore 3. Хочу сделать возможность добавление/уменьшение количества товаров после добавления в корзину. Магазин делаю в большей мере для себя для знакомства с OpenCart да и вообще с программированием) Умею верстать, знаю основы js, php. Поэтому в большей мере хочу сделать все сам, без готовых модулей, там где это будет оправдано. В шапке есть корзина, после покупки товара, открывается корзина с возможностью изменить количество единиц. Код счетчика: cart.twig <div class="product-card-modal__counter counter" data-counter> <button class="counter__control" data-action="minus"> <svg class="counter__icon"> <use xlink:href="catalog/view/theme/pinkashop/assets/img/icons/icons.svg#minus"></use> </svg> </button> <div class="counter__input"> <input type="text" name="quantity" value="{{ product.quantity }}" data-input-quantity class="counter__input__quantity" placeholder="{{ product.quantity }}"> </div> <button class="counter__control" data-action="plus"> <svg class="counter__icon"> <use xlink:href="catalog/view/theme/pinkashop/assets/img/icons/icons.svg#plus"></use> </svg> </button> </div> common.js $(document).on('click', '[data-counter] [data-action]', function (e) { const btn = $(this); const input = btn.closest('[data-counter]').find('input'); const minValue = 1; if (btn.attr('data-action') == 'plus') { input.val(parseInt(input.val()) + 1); } else if (btn.attr('data-action') == 'minus') { if (parseInt(input.val()) > minValue) { input.val(parseInt(input.val()) - 1); } else { return null; } } }); Подскажите как передать количество дальше в общую корзину? Как сохранить изменённое количество после обновления страницы? Скачивал модули, которые делают похожие вещи, но там 20-40 строк кода, но как они передают данные дальше не могу понять.
-
Оптимизация кэшированных изображений
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Настройка и оптимизация
перед загрузкой они вручную оптимизируются -
Оптимизация кэшированных изображений
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Настройка и оптимизация
Часть этих тем я видел, но никакого решения там нету. Косвенно качаются либо плагина, либо VPS. -
Оптимизация кэшированных изображений
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Настройка и оптимизация
Искал, там везде рекламируют плагин webp + lazy load + watermark. А если просто в папке Кеша заменить изображения и не чистить кэш они останутся?) -
Оптимизация кэшированных изображений
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Настройка и оптимизация
Я уже задумывался об этом, но он проплачен еще на год. Но все равно хотелось бы оптимизировать изображения, если есть такая возможность -
Оптимизация кэшированных изображений
KylunSergOC опубликовал теме в Opencart 2.x: Настройка и оптимизация
Добрый день. На сайте порядка 50 картинок. Перед загрузкой на сайт, они вручную оптимизируются с помощью веб-сервисов. Попугаи показывают что сами картинки замедляют загрузку сайта на 3,5 сек. Для мобильной версии сайта это довольно проблематично и хотелось бы разобраться с этой проблемой. А проблема с теми картинками которые , которые кэшируются (их нарезает сам движок). Их размер можно уменьшить вполовину. Погуглив, нашлось только решения покупки модулей для оптимизации изображений, но цены там довольно кусаются для 50 картинок. Может кто-то знает способ отменить нарезку изображений движком, и самому отдавать то что ему нужно? Или кто как справляется с этой проблемой? -
KylunSergOC изменил свой аватар
-
Как правильно сделать меню категорий?
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Общие вопросы
Тогда как-то не задумывался об seo, да и наверное это было самое простое решение. А как так же на десктопе сделать?- 5 ответов
-
- меню
- подкатегории меню
-
(і ще 2)
Теги:
-
Как правильно сделать меню категорий?
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Общие вопросы
Разве? оно использует категории как пункты, а подкатегории как выпадающее меню подпунктов. Я же хочу чтобы у меня была кнопка ("меню"), которая при наведении, покажет выпадающий список категорий магазина.- 5 ответов
-
- меню
- подкатегории меню
-
(і ще 2)
Теги:
-
Добрый день. Подскажите, насколько правильно сделано мое меню. У меня OcStore 2.3. Меню создавал таким образом, что есть одна главная категория "Продукция", а у нее подкатегории "1", "2", и тд. Но получается что путь к товару теперь очень длинный и включает ненужную главную категорию "продукция", которая выступает только в роли кнопки для открытия меню. И все пункты меню выступают в роли подкатегорий, а не категории. На сколько это влияет на SEO? Как вместо категории, сделать обычную кнопку, которая будет раскрывать меню категорий?
- 5 ответов
-
- меню
- подкатегории меню
-
(і ще 2)
Теги:
-
Как выводить единицы измерения в опенкарт?
KylunSergOC опубликовал теме в Opencart 2.x: Общие вопросы
Подскажите как выводить единицы измерения для опенкарт 2.3. Когда товар был в граммах, я просто дописывал после вывода веса - гр. А теперь мне нужно чтобы еще выводились и литры, и этот костыль себя изжил. Как обратится к переменной которая отвечает за вывод единиц (гр, кг, л)?? Вот так раньше выводил вес)) `<?php if($product['weight']>0) { ?> <div class="weight"> <?php echo $product['weight']; ?>гр. </div> <?php } ?>` -
Вывод обьема вместо веса
KylunSergOC ответил в теме пользователя KylunSergOC в Opencart 2.x: Общие вопросы
Спасибо!!! Розобрался