Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

triok

Newbie
  
  • Posts

    26
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

triok's Achievements

Explorer

Explorer (4/14)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. Здравствуйте! Есть аналогичная проблема с нагрузкой на сервер, ищу исполнителя который поможет определить проблему, проанализировать запросы и оптимизировать БД!
  2. Здравствуйте! Необходимо доработать загрузку сайта, что бы страницы грузились быстрее. В данный момент загрузке мешают js скрипты, всякие счетчики (метрики, гугла), дживо чат итп. Есть проблемы с фото и большим количеством запросов к БД. Это сказывается на показателях pagespeed (для мобильных 46 показывает). Нужно придумать как реально ускорить загрузку и отложить запуск js, но что бы сайт для пользователей грузился нормально. Рассмотрю любые варианты сотрудничества!
  3. Привет всем, коллеги! Сделал кнопку, которая отправляет аджакс запрос контроллер. В контроллере , через curl получаю строку (изображение (маркировочный лист для заказа)) в виде : content-type: "application/pdf" base64: "набор символов" Я никак не могу понять как же мне в админке после нажатия на эту кнопку получить изображение (декодировать его) и вывести его на печать? Не кидайте пожалуйста камни, догадываюсь что задача простая, но не сталкивался с выводом на печать и не понимаю как оно должно сработать в итоге. Даже не пойму куда копать. Может надо что бы по нажатию на кнопку открывался шаблон (view) и туда передавалась строка с base64? Направьте пожалуйста на какой-нибудь пример, не могу ничего толкового найти. Пока в аджакс запросе стоит вот так: ... success: function(json){ console.log(json); }, И в консоль передается следующее: result: {content_type: "application/pdf", base64_content: "JVBERi0xLjQKJeLjz......."} Дальше у меня затуп что с этим делать..
  4. Все еще раз привет, пользовался SEO PRO несколько месяцев, но к сожалению данный модуль не дружит с MegaFilter. Вопрос, есть еще какие-нибудь модули/варианты которые помогут решить проблему дублей, кроме SEO PRO ?
  5. В порядке эксперимента, Поставил Opencart 2.3 Русская сборка, затем MegaFilter, затем SEO Pro. Результат такой же, перестают работать ссылки фильтра если включить Тип чпу - SEO Pro. Затем поставил OcStore 2.3 , к нему MegaFilter и затем SEO Pro. Точно такой же результат. Не работают. Попробовал в другом порядке поставить, значения не имеет. Из-за того что проведена колоссальная 2 летняя работа с Мегафильтром, избавиться от него не представляется возможным.
  6. есть ощущение, что либо ни у кого не стоит такая связка Опенкарт 2.3 + МегаФильтр + СеоПро, либо у всех всё без проблем работает. Если второе (у всех такая связка работает без проблем), ребята, отпишитесь пожалуйста)
  7. Добрый день, подниму тему, проблема актуальна и не у меня одного! Если снять галочку в Мегафильтра alliases, то все работает норм, если опять включить что бы использовать ЧПУ, то редиректит на "страница не найдена"
  8. Всем привет! Ищу исполнителя для следующего задания: Opencart 2.3 Megafilter Pro 2.0.5.2 SeoPro Если включить SEOPro, то перестают работать ЧПУ которые назначены для страниц в Мегафильтре. То есть при выборе фильтра в урл отображается правильный ЧПУ, но если скопировать этот урл и открыть на новой странице или даже на той же, то "Запрашиваемая страница не найдена". Если поставить ЧПУ: Default, то все работает хорошо. Готов оплатить работу по исправлению этой проблемы!
  9. Спасибо большое за разъяснение, теперь все стало понятно. В итоге сделал отдельную функцию, в ней указал роут по умолчанию common/home и все модули загрузились.
  10. А почему тогда без Ajax все работает? То есть смотрите если оставить в home строку echo $content_bottom, то она включает контроллер content_bottom , который в свою очередь возвращает вьюху return $this->load->view('common/content_bottom', $data); А в content_bottom.tpl функция: <?php foreach ($modules as $module) { ?> <?php echo $module; ?> <?php }?> И вот она без проблем выводит все модули которые отмечены в админке в разделе Дизайн. Правильно ли я делаю что через ajax обращаюсь к функции Index контроллера content_bottom?
  11. Всем привет, пытаюсь сделать ленивую загрузку модулей в Opencart 2.3. На главной странице почти все модули выводятся через echo $content_bottom и я пытаюсь сделать их загрузку по кнопке "Load". Вот что сделал: В home.tpl убрал echo $content_bottom и написал следующий скрипт: modulesShown = false; $('#load').click(function(){ if(!modulesShown){ showModules(); modulesShown=true; } function showModules () { $.ajax({ url:"index.php?route=common/content_bottom/index", dataType:"html", success: function(e){ $("#modules").html(e); } }); }; }); То есть по моему замыслу все модули должны будут загрузится в див "modules" по нажатию на кнопку "Load" Контроллер content_bottom.php у меня стандартный. Вьюха content_bottom.tpl тоже Если добавить print_r($modules); то каждый раз у меня возвращается пустой массив. В этом собственно и проблема. Не могу понять почему он пустой.
  12. Всем привет! Столкнулся с проблемой дублей страниц, решить ее не смог. Кто поможет убрать дубли, что бы они не попадали в индексацию? Вкратце о строении сайта Есть Бренды (это категории) Есть Категории (это тоже категории и подкатегории) Одна и та же карточка товара отображается по следующим url: https://gearpro.ru/nozh-opinel-8-olive-wood (сайт/карточка) https://gearpro.ru/brand/nozh-opinel-8-olive-wood (сайт/бренд/карточка) https://gearpro.ru/brand/opinel/nozh-opinel-8-olive-wood (сайт/бренды/бренд/карточка) https://gearpro.ru/categories/nozh-opinel-8-olive-wood (сайт/категории/карточка) https://gearpro.ru/categories/nozhi/nozh-opinel-8-olive-wood (сайт/категории/категория/карточка) https://gearpro.ru/categories/nozhi/nozhi-opinel/nozh-opinel-8-olive-wood (сайт/категории/категория/подкатегория/карточка) Ну я так понимаю можно еще комбинации придумать) Все варианты попадают в индекс и в вебмастере эти страницы постоянно удаляются с пометкой дубль.А затем снова попадают и снова удаляются.
  13. 1) Немного переделал форму, так как если поля не заполнить и закрыть ее все равно появлялось уведомление что письмо отправлено. Поправил это. Новый код: <script type="text/javascript"> window.onload = function () { var a = document.getElementById('director'); a.onclick = function() { Swal({ type: 'warning', title: 'Письмо директору', html: '<input name="name" id="swal-input1" class="swal2-input" placeholder="Ваше имя">' + '<input name="email" id="swal-input2" class="swal2-input" placeholder="Email для ответа">' + '<textarea name="text" id="swal-textarea1" class="swal2-textarea" placeholder="Введите текст сообщения..." style="display: flex;"></textarea>', showCancelButton: true, confirmButtonColor: '#ff5908', cancelButtonColor: '#666', confirmButtonText: 'Далее', cancelButtonText: 'Отмена', preConfirm: function () { return new Promise(function (resolve) { resolve([ $('#swal-input1').val(), $('#swal-input2').val(), $('#swal-textarea1').val() ]) }) }, }).then(function (result) { if (result.value) { var result = {}; result.name = $('#swal-input1').val(); result.email = $('#swal-input2').val(); result.text = $('#swal-textarea1').val(); $.ajax({ url:"index.php?route=common/director/index", type: "POST", data: JSON.stringify(result), success: function() {Swal({type: 'success', text: 'Сообщение отправлено'});}, error: function(xhr,status,error){ console.log(status); console.log(error); } }) } }) return false; } } </script> 2) Вопрос к знатокам, с точки зрения более чистого кода уместно ли было создать новый контроллер для обработки такого запроса. Или же логичнее было впихнуть функцию обработки например в контроллер хедера/футера? Может быть вообще правильнее было всю логику вставить в функцию индекс хэдера/футера? 3) Защиту от спама не делал, во-первых не знаю как, а во-вторых на моем проекте она не нужна, спама нет) А вот с file_get_contents , тут да. Я долго не мог поймать пост запрос и в итоге это единственное решение которое сработало. Был бы признателен если бы указали как правильнее его поймать. Я так понимаю что надо начать со строк: if ($this->request->server['REQUEST_METHOD'] == 'POST') { } но как тут правильно все сделать не понимаю, у меня ничего не получилось
  14. Если долго мучиться, то что-нибудь получится. В итоге все сделал. Может кому понадобится, оставлю код здесь. Надеюсь кто-нибудь опытный поправит кои косяки и недоработки. В общем повторю еще раз смысл: В шапке магазина размещена ссылка, нажав на которую появляется модальное окошко SweetAlert с формой (имя, имейл, текст). Заполнив форму, жмем "ОК" и происходит отправка сообщения с данными формы на определенный имейл. В моем случае на почту директора. Итак, в header.tpl, ссылка выглядит так: <a href="mailto:[email protected]"><p id="director" class="director">Письмо директору</p></a> В footer.tpl, вставил скрипт JS(SweetAlert) + отправку формы через Ajax, json <script type="text/javascript"> window.onload = function () { var a = document.getElementById('director'); a.onclick = function() { Swal({ type: 'warning', title: 'Письмо директору', html: '<input name="name" id="swal-input1" class="swal2-input" placeholder="Ваше имя">' + '<input name="email" id="swal-input2" class="swal2-input" placeholder="Email для ответа">' + '<textarea name="text" id="swal-textarea1" class="swal2-textarea" placeholder="Введите текст сообщения..." style="display: flex;"></textarea>', showCancelButton: true, confirmButtonColor: '#ff5908', cancelButtonColor: '#666', confirmButtonText: 'Далее', cancelButtonText: 'Отмена', preConfirm: function () { return new Promise(function (resolve) { resolve([ $('#swal-input1').val(), $('#swal-input2').val(), $('#swal-textarea1').val() ]) }) }, }).then(function (result) { var result = {}; result.name = $('#swal-input1').val(); result.email = $('#swal-input2').val(); result.text = $('#swal-textarea1').val(); $.ajax({ url:"/catalog/controller/common/director/index", type: "POST", data: JSON.stringify(result), error: function(xhr,status,error){ console.log(status); console.log(error); } }).done(function() { Swal({type: 'success', text: 'Сообщение отправлено'}); }); }) return false; } } </script> В папке controller/common/ создал контроллер director.php, который получает данные jSON и отправляет сообщение. Вот так он выглядит: <?php class ControllerCommonDirector extends Controller { public function index() { $request_body = file_get_contents('php://input'); $data = json_decode($request_body); $username = $data->name; $email = $data->email; $msg = $data->text; $message = '<div><span>Имя: </span><span><strong>'.$username.'</strong></span></div><br><div><span>Имейл: </span><span><strong>'.$email.'</strong></span></div><br><div>Текст сообщения:</div><br><div><strong>'.$msg.'</strong><div>'; $subject = 'Письмо директору от: '.$email; $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo('[email protected]'); // Имейл директора $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8')); $mail->setHtml($message); $mail->send(); } } Уверен, что можно было бы где-то что-то упростить, но вариант рабочий. Буду рад услышать критику.
  15. Добрый день коллеги, помогите разобраться. Придумал себе задачу, сделать JS форму на сайте типа "Письмо директору", с двумя инпутами и кнопкой "ОК". При заполнении полей и нажатии на кнопку должна происходить отправка имейл сообщения. Почему именно JS , потому что все всплывающие окошки на сайте сделаны через SweetAlert2. Форму сделал соответственно тоже через SweetAlert2, при заполнении полей и нажатии на OK данные с инпутов кодируются в JSON, тут всё работает. Вот так выглядит форма: <script type="text/javascript"> window.onload = function () { var a = document.getElementById('director'); a.onclick = function() { Swal({ type: 'warning', title: 'Письмо директору', html: '<input id="swal-input1" class="swal2-input" placeholder="Ваш иемйл">' + '<textarea id="swal-textarea1" class="swal2-textarea" placeholder="Введите текст сообщения..." style="display: flex;"></textarea>', showCancelButton: true, confirmButtonText: 'Отправить', cancelButtonText: 'Отмена', preConfirm: function () { return new Promise(function (resolve) { resolve([ $('#swal-input1').val(), $('#swal-textarea1').val() ]) }) }, }).then(function (result) { var message = JSON.stringify(result); }) return false; } } </script> Собственно, вопрос , а дальше что? Я начал лепить аджакс запрос: $.ajax({ url:"sendmail.php", type: 'POST', data: message, error: true, success:function(message){swal('success')}, }) }) Результат приходит как succes. Создал sendmail.php файл: <?php $message = $_POST['message']; $mail = new \Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo('[email protected]'); // Кому $mail->setFrom($this->config->get('config_email')); // От кого $mail->setSubject("Test mail"); // Тема $mail->setHtml($message); // Текст $mail->send(); ?> И тут у меня возникла мысль, что я вообще не той дорогой иду)) Уважаемые коллеги, направьте меня на правильный путь. Правильно ли я понял схему, сначала делаю форму, затем формирую ajax запрос в файл sendmail.php, а там ловлю json данные и произвожу отправку?
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.