Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Поиск по сайту

Результаты поиска по тегам 'oc3'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Основной
    • Новости и анонсы
    • Предложения и пожелания
    • Акции, подарки, конкурсы и награды
  • Opencart 4.x
    • Opencart 4.x: Общие вопросы
    • Opencart 4.x: Установка и обновление
    • Opencart 4.x: Локализация
    • Opencart 4.x: Настройка и оптимизация
    • Opencart 4.x: Песочница
    • Opencart 4.x: Поиск модулей
    • Opencart 4.x: Отчёты об ошибках
  • Opencart 3.x
    • Opencart 3.x: Общие вопросы
    • Opencart 3.x: Установка и обновление
    • Opencart 3.x: Локализация
    • Opencart 3.x: Настройка и оптимизация
    • Opencart 3.x: Песочница
    • Opencart 3.x: Поиск модулей
    • Opencart 3.x: Отчёты об ошибках
  • Opencart 2.x
    • Opencart 2.x: Общие вопросы
    • Opencart 2.x: Установка и обновление
    • Opencart 2.x: Локализация
    • Opencart 2.x: Настройка и оптимизация
    • Opencart 2.x: Песочница
    • Opencart 2.x: Поиск модулей
    • Opencart 2.x / ocStore 2.x: Отчёты об ошибках
  • Реклама и продвижение
    • SEO-вопросы (оптимизация и продвижение магазина)
    • Контекстная реклама
    • Торговые площадки
    • E-commerce tracking и бизнес аналитика
    • Разное
  • Поддержка и ответы на вопросы
    • Общие вопросы
    • Установка, обновление, настройка
    • Шаблоны, дизайн и оформление магазина
    • Модули и дополнения
    • Помощь программистам и разработчикам
    • Мобильная витрина
    • Вопросы безопасности
    • Перевод
    • Отчёты об ошибках
    • Интернет-магазины и электронная коммерция
    • Песочница
  • Services
    • Создание магазинов под ключ
    • Design, layout and templates
    • Programming, creating modules, changing functionality
    • Setting up and minor work on an existing site
    • Обновление версии движка магазина
    • Наполнение магазина
    • Системное администрирование (настройка хостинга, серверов, ПО)
    • Другие услуги
  • Разное
    • Пользовательские обзоры дополнений
    • Примеры сайтов на OpenCart (ocStore)
    • Курилка
    • Предложения по улучшению

Категории

  • Шаблоны
    • Бесплатные шаблоны
    • Платные шаблоны
  • Фильтры
  • Цены, скидки, акции, подарки
  • Реклама и продвижение
  • Бонусы, купоны, программы лояльности
  • Блоги, новости, статьи
  • Отзывы
  • Покупки, оформление заказа, корзина
  • Опции
  • Атрибуты
  • Серии, Комплекты
  • Поиск
  • SEO, карта сайта, оптимизация
  • Кэширование, сжатие, ускорение
  • Платежные системы
  • Доставки
  • Редакторы
  • Меню, дизайн, внешний вид
  • Слайдшоу, баннеры, галереи
  • Письма, почта, рассылки, sms
  • Обратная связь, звонки
  • Обмен данными
  • Учет в заказе
  • Сравнения, закладки
  • Социальные сети
  • Парсеры
  • Модули
  • Инструменты, утилиты
  • Лицензии
  • Языковые пакеты
  • Прочее
  • Отчеты
  • Сборки
    • ocStore
  • Услуги
    • Графика и дизайн
    • Маркетинг

Категории

  • Служебные документы
  • Оплата
  • Документация Opencart

Категории

  • Общие вопросы
  • Покупка дополнений
  • Для разработчиков
  • Аккаунт
  • Техническая поддержка
  • Финансовый отдел

Блоги

  • Konorws (Разработка и модификация Opencart)
  • Блог mr.Kent)
  • Прожектор Бритни Спирс
  • Layk
  • Продвижение интернет-магазина, seo оптимизация
  • Записная книжка
  • Блог RGB
  • Модули которые сделают сайт лучше
  • Блог веб-студии NeoSeo
  • Useful IT
  • Записи
  • Найденные решения проблем с Opencart
  • ocdroid blog
  • Заметки на полях...
  • Pimur
  • Серж Ткач
  • О жизни, смерти, о бизнесе и Опенкарте
  • Просто мысли от laim731
  • Маркетинг и продвижение интернет-магазина
  • Мой копирайтинг
  • SEO боксинг специального назначения
  • Get-Web Dev
  • Seok
  • Блоги sitecreator-а
  • Best practice
  • Vlad-Egorov-Blog
  • Блог spectre
  • commanddotcom
  • Внимание мошенники
  • Наблюдения обычного человека
  • Блог Rassol2
  • Блог Exploits
  • блог для натуралов
  • Настюша, тут есть темы
  • Пропитано рекламой
  • Tutorial
  • ОтВинта
  • Tg chnls
  • Блог
  • Блог sv2109
  • КАК ОРГАНИЗОВАТЬ НОВОСТНЫЕ ПОДПИСКИ НА БАЗЕ API OPENCART 3/0/2
  • VDS/VPS, серверы под Linux: установка, настройка, оптимизация
  • IT блог
  • Блог
  • Opencart SEO
  • Путёвые заметки о работе магазина NiceBike на платформе OpenCart
  • Blondi Blog
  • Полезные статьи, новости.
  • Блог владельца магазина
  • разное
  • ПРОДАЖА АКАУНТОВ-binance ВЕРИФИЦИРОВАННЫe ЧИСТЫЕ УСПЕВАЙТЕ КУПИТЬ ПО НИЗКОЙ ЦЕНЕ
  • Диспансеризация
  • wozobat
  • quasarbyte
  • Мой блог
  • Igorych
  • aaaaa
  • 👌🔊Bellsouth CUSTOMER support number 1+(8O8)678=9O64-☎phone number
  • Liudmila marketer
  • Заметки реалиста
  • ocstore на ноліках
  • Про Opencart
  • Блог про рутинні процеси в магазині на ocsote
  • Radaevich
  • Плагіни Opencart
  • Крафтовий OpenCart: Старт пригоди. Ціна створення сайту на Опенкарт
  • Щось про щось
  • Від власника до розробника

Искать результаты в...

Искать результаты, содержащие...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


Сайт


Skype


Город:


Интересы

  1. Всем привет! Ищу модуль - "этот товар сейчас просматривают..." (как на скрине) Видел пару тем, ни одна толком не закончена, все уходят в рассуждения зачем, почему итд. Давайте эту часть опустим и если кто знает готовый модуль для oc3 или как сделать (не думаю, что сложно) - подскажите, пожалуйста. Суть его: в карточке товара он показывает рандомное число пользователей внутри заданного (1-30, например) , которые просматривают товар.
  2. Версия 1.0.0

    Особенности: простота установки; создание неограниченного количества блоков; простота использования без каких-либо знаний в области программирования; мультиязычность (English, Русский, Українська) Преимущества: переопределение заголовка модуля; управлением изображением, заголовком и кратким описанием для блоков; Изменение количества столбцов (Bootstrap3); управление размером и выравниванием изображения;
    10.00 USD
  3. Всем привет подскажите как убрать вспылвающее увидомление одобавление товар в ocstore 3?вот фото прочел несколько статей пока не понял что делать вот скрип в common.js и в product.twig <script> $('body').on('click', '#button-cart', function(){ $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'), dataType: 'json', cache: false, beforeSend: function() { $('#button-cart').button('loading'); }, complete: function() { $('#button-cart').button('reset'); }, success: function(json) { $('.alert-dismissible, .text-danger').remove(); $('.form-group').removeClass('has-error'); if (json['error']) { if (json['error']['option']) { let errorOption = ''; for (i in json['error']['option']) { var element = $('#input-option' + i.replace('_', '-')); if (element.parent().hasClass('input-group')) { element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } else { element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } errorOption += '<div class="alert-text-item">' + json['error']['option'][i] + '</div>'; } rmNotify('danger', errorOption); } if (json['error']['error_warning']) { rmNotify('danger', json['error']['error_warning']); } if (json['error']['recurring']) { $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>'); } // Highlight any found errors $('.text-danger').parent().addClass('has-error'); } if (json['success']) { if (json['isPopup']) { octPopupCart(); } else { rmNotify('success', json['success']); } if (typeof octYandexEcommerce == 'function') { octYandexEcommerce(json); } // Need to set timeout otherwise it wont update the total setTimeout(function() { $('#oct-cart-quantity, .rm-header-cart-quantity, #mobile_cart_index, .oct-fixed-bar-quantity-cart').html(json['total_products']); $('.rm-header-cart-text').html(json['total_amount']); }, 100); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }); </script> это то что в product.twig // Cart add remove functions var cart = { 'add': function(product_id, quantity) { $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1), dataType: 'json', cache: false, beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { $('.alert-dismissible, .text-danger').remove(); if (json['redirect']) { location = json['redirect']; } if (json['error'] && json['error']['error_warning']) { rmNotify('danger', '<div class="alert-text-item">' + json['error']['error_warning'] + '</div>'); } if (json['success']) { if (json['isPopup']) { octPopupCart(); } else { rmNotify('success', json['success']); } if (typeof octYandexEcommerce == 'function') { octYandexEcommerce(json); } // Need to set timeout otherwise it wont update the total setTimeout(function() { $('#oct-cart-quantity, .rm-header-cart-quantity, #mobile_cart_index, .oct-fixed-bar-quantity-cart').html(json['total_products']); $('.rm-header-cart-text').html(json['total_amount']); }, 100); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }, 'update': function(key, quantity) { $.ajax({ url: 'index.php?route=checkout/cart/edit', type: 'post', data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1), dataType: 'json', cache: false, beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { // Need to set timeout otherwise it wont update the total setTimeout(function() { $('#oct-cart-quantity, .rm-header-cart-quantity, #mobile_cart_index, .oct-fixed-bar-quantity-cart').html(json['total_products']); $('.rm-header-cart-text').html(json['total_amount']); }, 100); var now_location = String(document.location.pathname); if ((now_location == '/cart/') || (now_location == '/cart') || (now_location == '/checkout/') || (now_location == '/checkout') || (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(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }, 'remove': function(key) { $.ajax({ url: 'index.php?route=checkout/cart/remove', type: 'post', data: 'key=' + key, dataType: 'json', cache: false, beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { // Need to set timeout otherwise it wont update the total setTimeout(function() { $('#oct-cart-quantity, .rm-header-cart-quantity, #mobile_cart_index, .oct-fixed-bar-quantity-cart').html(json['total_products']); $('.rm-header-cart-text').html(json['total_amount']); }, 100); var now_location = String(document.location.pathname); if ((now_location == '/cart/') || (now_location == '/cart') || (now_location == '/checkout/') || (now_location == '/checkout') || (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(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); } } это в common.js Всем заранее спс!
  4. Добрый день! Странная ситуация стала время от времени возникать с некоторыми товарами со скидкой: при оформлении заказа в корзине устанавливается не цена с примененной скидкой, а старая цена. Но, что важно, такая ситуация не со всеми товарами со скидкой, а с 1-2 карточками. Кто-нибудь сталкивался с подобным? Если да, то как решили?
  5. Доброго времени суток! Не смог найти (точно неправильно ищу) как вывести картинку в order_list.twig который отвечает за историю заказов. Подскажите пожалуйста, как это реализовать, куда копать... OpenCart 3
  6. Здравствуйте! делаю свой первый проект, поэтому многое не понимаю и не все могу найти в гугле. На данный момент у меня и после успешного оформления заказа и после успешной отправки фидбэка идет редирект на одну и ту же common/success.twig Подскажите как сделать при успешном оформлении заказа редирект на мой новый success-checkout.twig? Я дошел до контроллера /checkout/success.php и в конце index() if ( ... ) { $this->response->setOutput($this->load->view('common/checkout-success', $data)); } else { $this->response->setOutput($this->load->view('common/success', $data)); } не знаю что вставить в условие
  7. Доброе утро! Столкнулся с неведомой до селе проблемой - на сайте стало невозможно оформить заказ. При нажатии на кнопку "купить", "быстрый заказ" и "сообщить когда появится" - всплывает ошибка (скриншот). Кто-нибудь сталкивался с таким? Как можно решить? P.S.: хостинг провайдеру уже написал, но пока без ответа.
  8. Выкладываем на сайте товары , артикул заполняем такой же как у поставщика . Нужно создать модуль или с помощью АОП настроить обновление\загрузку фотографий для товаров по которым найдены совпадения артикула на сайте у поставщика . Постоянно возникает много мелких задач , ищем исполнителя который заинтересован в долгосрочном сотрудничестве . Требования к исполнителю : Опыт настройки модуля АОП Широкий кругозор в опенкарт 3 Рассматриваем разные форматы сотрудничества : Позадачно или по часам .
  9. Здравствуйте, возникла необходимость в добавлении поля выбора количества товара в модуле вариантов товара, саму кнопку добавления покупки товара я сделал, но возикла проблема с выбором количества и добавления этого количества в корзину. Не хочет отправлять нужное количество в корзину код модуля с кнопкой <div class="prodvar-button"> <div class="form-group"> <label class="control-label" for="input-quantity">{{ entry_qty }}</label> <div class="input-group number-spinner"> <span class="input-group-btn"> <button class="btn btn-default" data-dir="dwn"><i class="fa fa-minus"></i></button> </span> <input type="text" name="quantity" value="{{ product['minimum'] }}" id="input-quantity" class="form-control text-center" /> <span class="input-group-btn"> <button class="btn btn-default" data-dir="up"><i class="fa fa-plus"></i></button> </span> </div> <input type="hidden" name="product_id" value="{{ product['product_id'] }}" /> <br /> <button type="button" id="button-cart" data-loading-text="{{ text_loading }}" class="btn btn-primary btn-lg btn-block">{{ button_cart }}</button> </div> </div> В кнопку <button type="button" id="button-cart" class="btn btn-primary btn-lg btn-block">{{ button_cart }}</button> добавлял атрибут onclick="cart.add('{{ product['product_id'] }}', $(this).parent().parent().find('.quantity_input').val());" работало только с onclick="cart.add('{{ product['product_id'] }}', {{ product['minimum'] }} но добавлял только 1 товар код для переключалки количества $(document).on('click', '.number-spinner button', function () { var btn = $(this), oldValue = btn.closest('.number-spinner').find('input').val().trim(), newVal = 1; if (btn.attr('data-dir') == 'up') { newVal = parseInt(oldValue) + 1; } else { if (oldValue > 1) { newVal = parseInt(oldValue) - 1; } else { newVal = 1; } } btn.closest('.number-spinner').find('input').val(newVal); }); Как сделать так чтобы было стандартное поле как с правой стороны и оно адекватно работало? в идеале нужно чтоб оно отправляло данные в попап корзину, с блоком справа код ниже работает $(function() { $.ajax({ type: 'get', url: 'index.php?route=extension/module/cart_popup/initcart', dataType: 'json', cache: false, success: function(json) { $.each($("[onclick^='"+json['add_function_selector']+"']"), function() { var product_id = $(this).attr('onclick').match(/[0-9]+/); $(this) .attr('onclick', 'call_cp(\'' + $(this).attr('onclick').match(/[0-9]+/) + '\',\'' + 'add' + '\');') .addClass('cp-call-button'); }); var product_id_in_page = $("input[name='product_id']").val(); $('#'+json['add_id_selector']) .unbind('click') .attr('onclick', 'call_cp(\'' + product_id_in_page + '\',\'' + 'add_option' + '\');'); if (json['cart_products']) { $.each(json['cart_products'], function(i,value) { $('[onclick="call_cp(\'' + value + '\',\'' + 'add' + '\');"]') .html('<i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">' + json['text_in_cart'] + '</span>') .attr('onclick', 'call_cp(\'' + value + '\',\'' + 'load' + '\');'); $('[onclick="call_cp(\'' + value + '\',\'' + 'add_option' + '\');"]') .html(json['text_in_cart']) .attr('onclick', 'call_cp(\'' + value + '\',\'' + 'load_option' + '\');'); }); } if (json['cart_products_vs_options']) { $.each(json['cart_products_vs_options'], function(i,value) { $('[onclick="call_cp(\'' + value + '\',\'' + 'add' + '\');"]') .html('<i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">' + json['text_in_cart'] + '</span>'); $('[onclick="call_cp(\'' + value + '\',\'' + 'add_option' + '\');"]') .html(json['text_in_cart_vs_options']); }); } } }); }); function call_cp(product_id, action) { quantity = typeof(quantity) != 'undefined' ? quantity : 1; if (action == "add") { $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: 'product_id=' + product_id + '&quantity=' + quantity, dataType: 'json', cache: false, success: function(json) { if (json['redirect']) { location = json['redirect']; } if (json['success']) { cpInit(); call_cp(product_id,'load'); $('#cart-total').html(json['total']); } } }); } if (action == "load" || action == "load_option") { $.magnificPopup.open({ tLoading: '<img src="catalog/view/theme/default/stylesheet/cart_popup/loading.svg" alt="" />', items: { src: 'index.php?route=extension/module/cart_popup', type: 'ajax' }, showCloseBtn: false }); $('.mfp-bg').css({ 'background': 'url(image/cart_popup/background/{{ cp_setting['style_beckground'] }})', 'opacity': '{% if cp_setting['background_opacity'] == 0 %}{{ cp_setting['background_opacity'] }}{% else %}{{ cp_setting['background_opacity']/10 }}{% endif %}' }); } if (action == "add_option") { $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'), dataType: 'json', cache: false, beforeSend: function() { $('#button-cart').button('loading'); }, complete: function() { $('#button-cart').button('reset'); }, success: function(json) { $('.alert, .text-danger').remove(); $('.form-group').removeClass('has-error'); if (json['error']) { if (json['error']['option']) { for (i in json['error']['option']) { var element = $('#input-option' + i.replace('_', '-')); if (element.parent().hasClass('input-group')) { element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } else { element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } } } $('.text-danger').parent().addClass('has-error'); } if (json['success']) { cpInit(); call_cp(product_id, 'load_option'); $('#cart-total').html(json['total']); } } }); } } подскажите пожалуйста что я не так сделал? и как мне это починить? Благодарю
  10. Доброго времени суток! Подключаю в head файла header.twig кастомные js-скрипты (предварительно собранные и минифицированные в Gulp, на статичной версии сайта работают), путь верный (в devtools код 200), но по факту-не работают, не могу понять причину. Единственное-в консоли есть ошибка, но с этими же скриптами ее нет в статичной версии сайта
  11. Здравствуйте! Ищу модуль, с помощью которого можно создавать всплывающую строку с небольшим текстом и кнопкой. Строка должна быть на всю ширину сайта. Желательно возможность выставлять цвет строки, непрозрачность и цвет текста. Самому написать подобное не хватает навыков.
  12. Доброго времени суток! На странице "контакты/связаться с нами" в форму нужно добавить поле "ваш телефон". Делаю по аналогии с полем "email", но в контроллере contact. php есть метод getEmail-и я не могу найти файл, где он прописан, чтобы создать по аналогии для телефона. Может кто-то имел опыт добавления телефона в эту форму? Я нашел подобную тему, но там для oc2...
  13. Долгосрочное сотрудничество в приоритете. Нужен грамотный программист с свежим взглядом для доработки функционала OC3. Задач много и они разные , в основном маленькие по верстке на фронте . Бывают и более сложные , типа написания модуля для рекомендованных остатков в маркетплейсы. Пишите , более подробное ТЗ кину в личку.
  14. Всем добрый день. Имеется сайт, для которого необходимо выставить часовой пояс "America/Denver". В php.ini прописал, в startup.php if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } Заменил на date_default_timezone_set('America/Denver'); По итогу php время корректное, время в БД корректное, но время на сервере остаётся в UTC: Каким образом можно решить данную проблему без установки модулей, создающих дополнительные поля в базе данных (module_timezone и им подобные)?
  15. Есть сайт на опенкарт 3. постоянно нужны доработки, как правило мелкие, иногда не очень. Ищем живого энергичного программиста , который поможет реализовывать наши задумки и сам будет предлагать решения по оптимизации и улучшению.
  16. Здравствуйте, есть ли возможность назначать опции не каждому товару, а всем товарам одной категории? Например, у меня есть категория смартфон, я хочу всем товарам, которые находятся в этой категории сделать одинаковые опции с одинаковыми значениями. В ручную каждому добавлять одно и то же долго. Может есть вариант с каким-нибудь модулем. Спасибо.
  17. Нужно изменить процесс оформления покупки, т.е. убрать личный кабинет.
  18. Всем привет, ребят как можно найти кусок кода если в файлах его нет, а гугл показует что он есть? Суть в чем я нашел так он должен выглядить в оргинале -> у меня почему то класс и home не отображаються вместо этого стоит другой класс! вот так он у меня! и как найти и исправить классы хз! Все файлы прошарил не где нет такого! Может как то подругому можно его вывести ? Вот ссылка на сайт!
  19. Создаем магазин https://aroma-doterra.ru/ работает на OpenCart 3х + Unishop2 + SimplePars. Модуль парсинга работает с сайта doterra.com Нужно: 1. Настроить в OpenCart вариативность товаров, так как это принято в других CMS, но не принято в OpenCart. Все варианты в одной карточке (разные склады, объемы) 2. Коррективы текущих настроек парсинга + инструкции по его обслуживанию. 3. Простые визуальные коррективы + цветовая гамма и шрифты Подробно задание изложил здесь https://docs.google.com/document/d/1_9s1NDvjwCmt0sJCgosLUfAw_g5QTkv84Wps8jML1WE/edit#heading=h.kso68vj4czmo В Вашем отклике укажите: опыт решения подобных задач на OpenCart. Цена выполнения работы зависит от подхода выполнения задач и опыта исполнителя. Открыт к Вашим предложениям!
  20. 9 Скачать / Купить дополнение Last-Modified, If-Modified-Since, 304 not modified. Для Opencart 3. Ускорение индексации поисковыми системами, экономия Трафика, снижение нагрузки на сервер, Поддержка: OpenCart 3.x.x.x Возможности: Выводит дату последней модификации для страниц категорий, товаров и статьей и для главной страницы. Можно менять вручную дату последней модификации категорий Можно менять вручную дату последней модификации статей Можно менять вручную дату последней модификации главной страницы Установить: Модули/Расширения -> Установка расширений. Выбрать архив с модулем и Загрузить. Модули/Расширения -> выбрать установленный модуль (Last Modified ...) -> Активировать Зайти в активированный модуль и установить время для главной страницы Модули/Расширения -> Модификаторы. Нажать кнопку Обновить Обращаем ваше внимание, что заголовок LastModified не отдаётся для WWW-доменов с включенным SSI. Перед покупкой проверьте передает ли ваш сервер параметры $_SERVER['HTTP_IF_MODIFIED_SINCE'] или $_ENV['HTTP_IF_MODIFIED_SINCE'] * Если при установке модуля возникает ошибка "Директория не доступна для записи!" - необходимо поставить бесплатный модуль Localcopy OCMOD для Opencart 3 Зачем нужен Last-Modified HTTP заголовок Last-Modified сообщает клиенту время последнего изменения страницы (объекта). Если клиент (браузер, поисковый робот) получил заголовок Last-Modified, то при следующем обращении к адресу, при условии, что страница (объект) есть в локальном кеше, он добавит вопрос If-Modified-Since(не изменилась ли страница после даты, полученной в Last-Modified). В свою очередь сервер, получив запрос If-Modified-Since должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified. Экономия Трафика Если страница не изменилась, то сервер прекратит передачу данных после отправки заголовков с кодом 304 Not Modified, тело страницы, изображения и другие объекты передаваться не будут. Снижение нагрузки на сервер Правильная реализация проверки времени последнего изменения страницы может значительно (до 30% и более) сократить нагрузку на сервер. Под правильной реализацией подразумевается проверка времени до начала генерации страницы на динамическом сайте. В таком случае все действия для генерации страницы (запрос контента из базы данных, парсинг шаблонов, получение комментариев и др) выполняться не будут. Особенно это актуально для сайтов с высокой посещаемостью и долгой продолжительностью визита пользователя. Пример: пользователь находится на сайте спортивных новостей и постоянно обновляет главную страницу в ожидании публикации результата матча. За несколько минут страница может быть запрошена и получена десятки раз. Если заголовок Last-Modified отдается и запрос If-Modified-Since обрабатывается правильно, то реально страница будет передана один раз, а на все последующие запросы будет выдан ответ 304 Not Modified. Ускорение индексации поисковыми системами Поисковые системы через руководство для вебмастеров рекомендуют отсылать заголовок Last-Modifiedи правильно обрабатывать If-Modified-Since. Добавил Feech Добавлено 19.04.2019 Категория SEO, карта сайта, оптимизация Системные требования Метод активации Без активации Ioncube Loader Нет ocStore 3.0 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
  21. Добрый день! Подскажите пожалуйста как добавить фото товара в письме клиенту в OC3x Пробовал в catalog\controller\mail order.php добавить в $data['products'][] = array( 'img' => (!empty($product_info['image']) ? HTTPS_SERVER.'image/'.strip_tags(html_entity_decode($product_info['image'], ENT_QUOTES, 'UTF-8')) : ''), в файле order.twig для вывода в <img src="{{ product.img }}" /> В итоге фото не выводится в письме путь <img src="https://ci5.googleusercontent.com/proxy/IfnpJ_SVUWOZHsiWL0n7XLNnxcW9Q9_lPvVKtEcK3Stu6fKtTnnJpTmYhoVWxPAjU7ZM-9xe8vzk9bLJfF1TRkH80jEUdAg7zJ0rnsUvgdHfAw=s0-d-e1-ft#http:// далее наименование файла img
  22. Подскажите, как исправить дубли страниц категорий, которые появились после добавления второго языка на сайт, при этом дубли появились только на добавленном языке и лишь некоторых категорий? Я заметил, что это самые первые разделы, которые были созданы на сайте. Сайт: https://ecosmak.com.ua/ru/
  23. У меня существует два типа доставки в магазине - "самовывоз" и "доставка по весу". Если в корзине есть товар из конкретной категории, то нужно добавить фиксированную сумму к стоимости доставки. Есть ли плагин который это может решить? Если нет, то как это реализовать ручками, подскажите пожалуйста? Всем спасибо за участие!!
  24. Ребят смотрите как можно сделать модуль подписки на рассылку на всю ширину в footere? щас он такой см фото #1 а мне нужно сделать его таким примерно и еще такой вопрос почему то перевод модуля не подключаеться и в чем может быть проблема? вместо Подписка на рассылку пишет Лидеры продаж и кнопка вместо подписки пишет Применить (Хотя если модуль выводить не в footere то он нормально работает )
  25. Всем привет, подскажите как можно вывести модуль подписка на рассылку в footer? Код в контрльере subscribe.php <?php class ControllerExtensionModuleSubscribers extends Controller{ public function index(){ $this->load->language('extension/module/subscribers'); $data['heading_title'] = $this->language->get('heading_title'); return $this->load->view('extension/module/subscribers', $data); } public function newSubscribe(){ $this->load->model('extension/module/subscribers'); $json = array(); $json['message'] = $this->model_extension_module_subscribers->Subscribe($this->request->post); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Вот код из catalog/view/theme/default/template/extension/module <div class="container-fluid"> <div class="row"> <div class="box-subscribers"> <form action="" method="post" class="form-inline" class="subscribers"> <div class="subscribers"> <div class="col-xs-12 col-md-3"> <h3>{{ heading_title }}</h3> {{ test }} </div> <div class="col-xs-12 col-md-6"> <div class="input-group"> <div class="input-group-addon"><i class="fa fa-envelope-o"></i></div> <input type="email" name="txtemail" id="txtemail" value="" placeholder="" class="form-control input-lg" /> </div> <p><label><input type="checkbox" id="agree"> {{ entry_submit }} </label></p> </div> <div class="col-xs-12 col-md-3"><button type="submit" id="subscribe" class="subscribers btn btn-primary btn-lg" onclick="return Subscribe();" disabled="disabled">{{ button_submit }}</button></div> </div> </form> </div> </div> </div> <style> .subscribers .col-md-12,.subscribers .col-md-3{text-align:start;}.subscribers .input-group{width:100%;display:table}.subscribers p{padding:10px;text-align:start;} </style> <script> function Subscribe() { var emailpattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}(.[a-zA-Z]{2})?$/; // email pattern for email text field var email = $('#txtemail').val(); if(email != "") { if(emailpattern.test(email)){ $.ajax({ type: 'POST', url: 'index.php?route=extension/module/subscribers/newSubscribe', dataType: 'json', data: {email: $('#txtemail').val()}, success: function(data){ alert(data.message);} }); $('#txtemail').val(''); return false; }else{ alert("{{ text_invalid_email }}"); return false; } } else { alert("{{ text_email_require }}"); $(email).focus(); return false; } } $('#agree').click(function(){ if ($(this).is(':checked')){ $('#subscribe').removeAttr('disabled'); } else { $('#subscribe').attr('disabled', 'disabled'); } }); </script> изучил пару тем на форуме почему то не чего не нашел , как можно вывести данный модуль в footer? он щас выглядит вот так фото в низу! Спасибо заранее за помощь!
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.