Модуль нашли ошибку

Любой администратор или владелец интернет-магазина, стараясь максимально заполнить свой сайт информацией, может допустить элементарную ошибку, и не важно, будет ли она синтаксическая или орфографическая — она в любом случае неприятна.
Еще более досадным, является тот факт, что Вы можете и не знать о её существовании, но вот посетители Вашего сайта её точно увидят (закон подлости).

Представьте: посетитель читает какой либо текст на сайте и натыкается на ошибку или опечатку. Что он может при этом чувствовать? Может ли это повлиять на мнение о сайте и людях, которые писали этот текст?

Многие посетители даже начинают машинально кликать или выделять слово с ошибкой, как бы пытаясь исправить её. И вот тут в дело вступает плагин «Нашли ошибку?»: пользователю достаточно выделить фрагмент текста с ошибкой и нажать сочетание клавиш CTRL+F1 (или кликнуть по иконке плагина), после чего пользователю отобразится окно предоставляющее возможность написать комментарий и отправить ошибку Вам на исправление. Данные об ошибке (фрагмент текста, адрес страницы и комментарий пользователя) немедленно будут отправлены на Ваш почтовый ящик.

Помимо всего:
— Вы всегда можете отслеживать историю ошибок в администраторской Вашего сайта (магазин-плагины-«Нашли ошибку?») и менять её статус на «выполнено» или просто удалить.
— Изменить оформление и содержимое элемнтов плагина

Позвольте посетителям Вашего сайта, помочь Вам исправить ошибки.

Отзывов: 0

Средняя оценка: 0

Нет отзывов об этом товаре.

Нет вопросов об этом товаре.

1. «Директория не доступна для записи!» или «Папка не разрешена для записи!»»

Решение проблемы:

Скачайте и установите дополнение Localcopy OCMOD для Opencart 3 или скачать модуль для Opencart 2 Фикс LocalCopy.ocmod.xml для Opencart 2.x скачать расширение

После установки этого дополнения нужно перейти в раздел Модификаторы и нажать кнопку «Обновить модификаторы». После этого можно устанавливать другие модули.

2. Модуль установился и работает в админке, но на сайте ничего не отображается

Возможно несколько проблем и вариантов их решения:

1. Не сброшен кеш шаблона  — нужно обновить кеш [скриншот]

2. Вы раньше редактировали файлы шаблона через админку в разделе «Редактор темы», тогда этот файл сохранился в базе данных и на него уже не влияют ocmod-модификаторы, это проблема Opencart 3. Вам нужно установить фикс [скачать] и обновить модификации в админке.

3. Ваш шаблон устроен на TPL-файлах (*.tpl), в то время, когда в Opencart 3 шаблоны должны быть в формате TWIG (*.twig). Проблема в том, что ocmod-модификаторы не влияют на TPL-файлы — все изменения нужно вносить в эти файлы вручную.

3. Ошибка 500 Internal Server Error

Нужно включить вывод всех ошибок php на экране — для этого в файле .htaccess в конце нужно добавить строки:

php_value display_errors 1

php_value display_startup_errors 1

php_value error_reporting E_ALL

Теперь вместо ошибки 500 должен отображаться код ошибки, который укажет на проблему.

4. Не работает модуль на Opencart 3.0.3.6

В официальных сборках Opencart 3.0.3.5 — 3.0.3.6 есть баг — там модификаторы не работают с twig-файлами из-за ошибки в стандартном модификаторе /system/modification.xml — вторая операция из этого модификатора не срабатывает.

Проблема есть на оф. гитхабе и предложено решение https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/modification.xml

Мы сделали фикс-модификатор по этим рекомендациям, он заменит файл /system/modification.xml на правильный.

Решение проблемы:

1. Сделайте резервную копию вашего файла /system/modification.xml

2. Скачайте фикс-модификатор по ссылке и установите его у себя в админке

3. Обновите кэш модификаторов

4. Обновите кэш twig-шаблонов

Модуль «Нашли ошибку — жмите CTRL+Enter» для Opencart 2.x — позволит принимать заявки об ошибках в тексте от пользователей сайта.

После выделения орфографической ошибки в тексте и нажатия CTRL + Enter — выплывает окно с возможностью оставить свой комментарий. Заявка отправляеться на email администратора сайта.

Установка модуля:
1. Установить модуль через админку (ctrl-enter.ocmod.zip)
2. Обновить модификации в админке

Оцените этот модуль

Рейтинг:
5 из
5   —  
1 голосов

1. Скачайте и установите фикс Localcopy
2. Обновите модификации в админке
3. Загрузите модуль наново

Ошибка 500 после установки модуля означает, что случилась какая-то критическая ошибка в php.

Для определение проблемы можно:
1. Открыть файл logs/error.log на вашем сервере. В конце этого файла будут все последние критические ошибки.
2. Открыть в админке Инструменты > Логи ошибок — в этом месте отображаются ошибки, но не всегда.
3. Включить вывод ошибок php на экран — добавить следующий код в конец файла .htaccess:

php_value display_errors 1
php_value display_startup_errors 1
php_value error_reporting E_ALL

Возможные причины:

1. Если вы раньше не загружали модули в архиве через админку — вам нужно установить бесплатную модификацию localcopy.ocmod.xml согласно инструкции и после этого переустановить модуль

2. Возможно  в устанавливаемого модуля нет собственной страницы настроек и соответственно его не будет в списке Модулей

Два варианта решения:

1. Если при установке модуля из админки вылетает эта ошибка — вам нужно установить бесплатную FTP QuickFix модификацию localcopy.ocmod.xml. Она установиться без проблем через тот же установщик дополнений, только после установки не забудьте обновить модификации и затем можете приступать к установке любых модулей на Opencart 2.

2. Также решить эту ошибку можно по другому: прописать доступы к FTP в админке Система > Настройки > Магазин > вкладка FTP.

Если вы видите сообщение «Доступ запрещен!  У Вас нет прав для доступа к этой странице. Если она Вам нужна, обратитесь к администратору.» —  нужно дать права администраторам на управление модулем или страницей.

Решение: в админке Opencart 2 переходим в Система > Пользователи > Группы пользователей > Администраторы и здесь нажимаем «Выделить все» ниже обоих блоков, затем Сохранить.

Еще одной причиной появления этой ошибки может быть не правильная установка модуля — файлы не загрузились на свои места. Загрузите файлы модуля вручную на сервер или установите фикс localcopy и переустановите модуль.

Если модуль — это один XML файл,  то его расширение должно быть .ocmod.xml

Если модуль — это ocmod.zip архив, то его не нужно распаковывать, а устанавливать как есть. В таком архиве обязательно должна быть папка upload (может быть пустой), а также могут быть файлы модификаций: install.xml, install.php, install.sql. Никаких других файлов в корне архива быть не должно.

Читайте подробнее как устанавливать модули в Opencart 2

Решение: в админке Opencart 2 переходим в Система > Пользователи > Группы пользователей > Администраторы и здесь нажимаем «Выделить все» ниже обоих блоков, затем Сохранить.

Эта ошибка означает, что в загружаемом архиве отсутсвует папка upload. Даже если у модуля нет файлов, кроме модификаций — эта папка должна присутствовать в архиве модуля .ocmod.zip, тогда она должна оставаться пустой.

Эта ошибка означает, что вы пытаетесь установить модификатор, который уже установлен или, возможно, у какого-то вашего модуля такой же ID.

Для решения этой ошибки вам нужно перед установкой удалить старую версию модификации в разделе Модули > Модификации.

Если такого модуля у вас нет, но совпадает ID, тогда нужно поменять значение параметра <code> в устанавливаемом модификаторе XML, сделать этот параметр уникальным дописав несколько символов.

Эта ошибка означает, что вы пытаетесь установить слишком объемный xml-модификатор.

Количество символов в ocmod.xml файле не должно превышать 65535.

Для решения ошибки нужно разбить xml-файл модификации на несколько частей, главное — не забыть задавать каждой уникальное значение в <code>, можно добавлять к текущему значению цифры 1,2,3… как идентификаторы части.

Еще одним способом решения есть изменения типа в поля, где храняться модификации, в таблице ‘oc_modification’ базы данных. Нужно выполнить следующий SQL-запрос:
ALTER TABLE oc_modification CHANGE xml xml MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;

Похоже, вы установили на Opencart 2.3.x.x модуль для более старых версий этой системы, то есть не совместимый модуль. Нужно удалить все файлы этого модуля, иначе ошибка не исчезнет.

Для удаления файлов модулей из админкм в один клик можно использовать модуль 

Также данная ошибка может возникать, если скрипт обращается к несуществующей таблице в базе данных. То есть, таблица модуля не создалась при установке. Читайте инструкцию по установке и переустановите модуль.

Если модуль не реагирует на ваши действия, будь-то нажатие на кнопку или загрузка карты или выбор даты или на любое другое действие которое есть в функционале модуля — скорее всего произошел конфликт в JS-скриптах.

Нажмите F12 на проблемной странице в браузере — откроется панель вебмастера, где на вкладке Console можно увидеть конфликты в скриптах, если они есть. Данное действие доступно в браузерах Chrome, Opera, Firefox.

Нашли ошибку? Нажмите Ctrl-Enter OpenCart 3 — данный модуль решает задачу самым простым и эффективным способом. Прежде всего, небрежная опечатка или орфографическая ошибка могут оставить плохое впечатление у ваших клиентов. Вы можете использовать инструменты и разрешить пользователям уведомлять вас об ошибках на вашем сайте. Быстрая и простая установка, в несколько кликов, и он уже готов быть вашим помощником в работе над ошибками. 

Принцип работы, очень простой и позволяет посетителям сайта сообщать об ошибке или текстовой опечатке, воспользовавшись сочетанием клавиш Ctrl+Enter.

Модуль полностью показал свою эффективность в борьбе с ошибками на сайте.

Возможности расширения

  • Возможность сообщать пользователям об ошибке на сайте.

  • Отправлять уведомления об ошибке администратору на Email.

  • Быстрая установка.

  • Не требует настроек.

  • Поддержка OCMOD.

Основные характеристики
Информация

Работоспособность в вашей версии вы можете уточнить по электронной почте: version@oc3x.ru.

Совместимость

OpenCart 3.0.3.x — ocStore 3.0.3.x
OpenCart 3.0.2.x — ocStore 3.0.2.x
OpenCart 3.0.1.x
OpenCart 3.0.0.0

Язык: Русский, Английский
Версия: 3.0

Инструкция по установке:

  1. Перейдите в раздел “Установка дополнений/расширений” и нажмите кнопку “Загрузить”; 

  2. Выберите скачанный файл, и дождитесь появления текста “Дополнение успешно установлено”; 

  3. Затем перейдите в “Менеджер дополнений”, и нажмите кнопку “Обновить”.

После этих действий расширение будет установлено, и вы сможете приступить к его использованию!

Всем привет! Давно не писал потому, что уже наступило жаркое лето, и я старался поменьше сидеть за компом, занимался спортом и принимал солнечные ванны. Сегодняшняя статья посвящена модулю: «Заметили Ошибку? — нажимай Ctrl + Q». Мне пришлось ввести данный модуль в связи с критикой моих посетителей, в частности Николая, за многочисленные ошибки по русскому языку. И этот модуль себя хорошо зарекомендовал. Уже множество ошибок исправлено благодаря нему и вам, неравнодушным читателям. Думаю, и Вам он может пригодится на вашем сайте. Также сегодня посоветовался с одним ГУРУ веб-программирования, который помог избавится от некрасивых мест в коде.

Так что, поехали!

Формулируем задачу: При обнаружении пользователем ошибки он выделяет данный текст и нажимает CTRL + Q. Всплывает модальное окно с текстовым полем, где уже находится выделенный текст, и кнопкой отправить. Пользователь поправляет ошибку в тексте и нажимает отправить. Нам на почту приходит: адрес страницы с которой произошла отправка формы, выделенный текст и поправленный вариант. Можно и не на почту сделать, а в админку CMS. Но у меня пока админка CMS не доделана, поэтому будем пока отсылать на почту.

Скрипт использует библиотеку jquery-1.9.0.min.js

Отслеживаем нажатие CTRL+Q

var isCtrl = false;

$(document).keyup(function (e) {
  if(e.which == 17) isCtrl=false;
}).keydown(function (e) {

  if(e.which == 17) isCtrl=true;
  if(e.which == 81 && isCtrl == true) {

      // Здесь можем писать действия, которые необходимы при нажатии CTRL+Q
  }

});

Далее необходимо, чтобы у нас всплывало модальное окно. Поискав немного в интернете, нашёлся отличный вариант. В него сразу прописываем форму с текстовым полем и кнопкой отправить.

Вставляем перед закрывающимся тегом </body>.

<div id="modal_form"> <!-- Сaмo oкнo --> 
      <span id="modal_close">X</span> <!-- Кнoпкa зaкрыть --> 
      <!-- Тут любoе сoдержимoе -->
      <div id='content_modal_error'>
      <h2 align='center' style='color:#490301;'>Опишите, пожалуйста, ошибку</h2>
	  
      <form name='from_error' id='from_error'>
      <textarea id='modal_form_text' align='left' maxlength="500">
      </textarea>
      <br><br>
      <input type='submit' value='Отправить' class='button13' name='sub_from_error' style='margin-left:260px;'>
      </form>
      </div>
</div>
<div id="overlay">
</div><!-- Пoдлoжкa -->

При закрытии необходимо с помощью innerHTML в модальное окно вписать то, что было в первоначальном положении (т.е. нашу форму), иначе при повтором запуске у пользователя могут остаться предыдущие сообщения, например, об успешной отправке формы.

Скрипт для модального окна + делаем в фокусе текстовое поле.

...
$('#overlay').fadeIn(400, // снaчaлa плaвнo пoкaзывaем темную пoдлoжку 
   function(){ // пoсле выпoлнения предыдущей aнимaции
			
			
   $('#modal_form') 
	.css('display', 'block') // убирaем у мoдaльнoгo oкнa display: none;	
	.animate({opacity: 1, top: '50%'}, 200); // плaвнo прибaвляем прoзрaчнoсть oднoвременнo сo съезжaнием вниз
				 
    // Делаем текстовое поле в фокусе.
    var modal_form_text = document.getElementById("modal_form_text"); 			
    modal_form_text.focus();
			
});

/* Зaкрытие мoдaльнoгo oкнa, тут делaем тo же сaмoе нo в oбрaтнoм пoрядке */
$('#modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке
  $('#modal_form')
	.animate({opacity: 0, top: '45%'}, 200,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
	      function(){ // пoсле aнимaции
		    $(this).css('display', 'none'); // делaем ему display: none;
		    $('#overlay').fadeOut(400); // скрывaем пoдлoжку
               }
         );
			
			
  var content_modal = document.getElementById("content_modal_error");
			
  content_modal.innerHTML = "<h2 align='center' style='color:#490301;'>Опишите, пожалуйста, ошибку</h2><form name='from_error' id='from_error'><textarea id='modal_form_text' align='left' maxlength='500'></textarea><br><br><input type='submit' value='Отправить' class='button13' name='sub_from_error' style='margin-left:260px;'></form>";
			
});
...

Стили (Также прикладываю стили для кнопки):

#modal_form {
  width: 700px; 
  height: 300px; /* Рaзмеры дoлжны быть фиксирoвaны */
  border-radius: 5px;
  border: 3px #000 solid;
  background: #fff;
  position: fixed; /* чтoбы oкнo былo в видимoй зoне в любoм месте */
  top: 45%; /* oтступaем сверху 45%, oстaльные 5% пoдвинет скрипт */
  left: 50%; /* пoлoвинa экрaнa слевa */
  margin-top: -150px;
  margin-left: -350px; /* тут вся мaгия центрoвки css, oтступaем влевo и вверх минус пoлoвину ширины и высoты сooтветственнo =) */
  display: none; /* в oбычнoм сoстoянии oкнa не дoлжнo быть */
  opacity: 0; /* пoлнoстью прoзрaчнo для aнимирoвaния */
  z-index: 9999; /* oкнo дoлжнo быть нaибoлее бoльшем слoе */
  padding: 20px 10px;
}
/* Кнoпкa зaкрыть  */
#modal_form #modal_close {
  width: 21px;
  height: 21px;
  position: absolute;
  top: 10px;
  right: 10px;
  cursor: pointer;
  display: block;
}
/* Пoдлoжкa */
#overlay {
  z-index:9998; /* пoдлoжкa дoлжнa быть выше слoев элементoв сaйтa, нo ниже слoя мoдaльнoгo oкнa */
  position:fixed; /* всегдa перекрывaет весь сaйт */
  background-color:#000; /* чернaя */
  opacity:0.8; /* нo немнoгo прoзрaчнa */
  -moz-opacity:0.8; /* фикс прозрачности для старых браузеров */
  filter:alpha(opacity=80);
  width:100%; 
  height:100%; /* рaзмерoм вo весь экрaн */
  top:0; /* сверху и слевa 0, oбязaтельные свoйствa! */
  left:0;
  cursor:pointer;
  display:none; /* в oбычнoм сoстoянии её нет) */
}

#modal_form_text {
  margin-top:20px;
  margin-left:50px;
  width:600px;
  height:150px;
  border:1px solid gray;
  resize: none;
  padding:5px;
	
}
input.button13 {
  display: inline-block;
  width: 15em;
  font-size: 80%;
  color: rgba(255,255,255,.8);
  text-shadow: #543e3c 0 1px 2px;
  text-decoration: none;
  text-align: center;
  line-height: 1.1;
  white-space: pre-line;
  padding: .7em 0;
  border: 1px solid;
  border-color: #72140c #72140c #72140c #72140c;
  border-radius: 6px;
  outline: none;
  background: #60a3d8 linear-gradient(#3c0b06, #580f08 50%, #72140c);
  box-shadow: inset rgba(255,255,255,.5) 1px 1px;
  height:40px;
}
input.button13:first-line{
  font-size: 140%;
  font-weight: 700;
}
input.button13:hover {
  color: rgb(255,255,255);
  background-image: linear-gradient(#3c0b06, #580f08 50%, #72140c);
}
input.button13:active {
  color: rgb(255,255,255);
  border-color: #2970a9;
  background-image: linear-gradient(#a40d00, #a40d00);
  box-shadow: none;
}

Отлично! Будем использовать для получении информации о выделенном тексте пользователя функцию:

function getSelectedText() 
{
    var text = "";
    if (window.getSelection) {
        text = window.getSelection().toString();
    }else if (document.getSelection) {
        text = document.getSelection().toString();
    }else if (document.selection) {
        text = document.selection.createRange().text.toString();
    }
    return text;
}

Таким образом, помещаем в текстовое поле то, что именно выделил пользователь:

...
 if(e.which == 17) isCtrl= true;
 if(e.which == 81 && isCtrl ==  true) {
		
  TextSelect = getSelectedText();		
  $( '#modal_form_text').val(TextSelect);
 
   ...

}
...

Пишем обработчик события отправки формы. С помощью ajax отправляем три параметра: Выделенный текст, исправленный вариант с текстового поля модального окна и URL страницы (с которой отослали сообщение).

Как только отправили, если сервер немного тормозит — ставим гиф-картинку с крутящимся колёсиком.

$('#from_error').submit( function(){
			
    var url = window.location.pathname;
    var modal_form_text = $('#modal_form_text').val();
			
    $.post('/ajax/detect_error.php', {TextSelect: TextSelect, url: url, modal_form_text: modal_form_text}, detect_func);			
    var content_modal = document.getElementById("content_modal_error");			
    content_modal.innerHTML = "<br><br><br><center><img src='/images/ajax_loader_red_512.gif' width='150' height='150'></center>";
    
    // Функция, которая запускается при ответе сервера при ajax запросе.
    function detect_func(data) {
        var data_str = "";
	if(data == "") {
         data_str = "<center><br><br><br><Br><span style='color:red;'>Идут технические работы - попробуйте позже</span>  </center>";
        }
	else {	
	 data_str = data.toString();		
	}	
	var content_modal = document.getElementById("content_modal_error");
	content_modal.innerHTML = data_str;		
   } 
			
  return false;
			
});

Ловим с помощью php скрипта ajax запрос:

if(isset($_POST['TextSelect']) && isset($_POST['url']) && isset($_POST['modal_form_text'])) {
		
  $_POST['TextSelect'] = trim($_POST['TextSelect']);
  $_POST['url'] = trim($_POST['url']);
  $_POST['modal_form_text'] = trim($_POST['modal_form_text']);
		
  $_POST['TextSelect'] = strip_tags($_POST['TextSelect']);
  $_POST['url'] =strip_tags($_POST['url']);
  $_POST['modal_form_text'] = strip_tags($_POST['modal_form_text']);
		
  $_POST['TextSelect'] = substr($_POST['TextSelect'], 0, 500);
  $_POST['url'] = substr($_POST['url'], 0, 255);
  $_POST['modal_form_text']  = substr($_POST['modal_form_text'], 0, 500);
		
		
  $from = "Content-type: text/plain; charset=utf-8"."rn";
  $from = $from.'From: xxx@gmail.com';
		
  $subject = "Сайт yyy Присалил ошибку" ;
  $message = "nn URL:".$_POST['url'] ;
  $message = $message."nn Выделенный текст:".$_POST['TextSelect'];
  $message = $message."nn Описание ошибки:".$_POST['modal_form_text'];
		
  if (!mail( "zzz@yandex.ru", $subject, $message,  $from)) {
          
      echo "Письмо не отправлено. Ошибка 1. Сообщите Администратору.";
      exit;
  }
  else {
				
      echo "<br><Br><br><Br><br><h2 align='center' style='color:#742c2c;'>Спасибо за ваше замечание! В ближайшее время я его рассмотрю.</h2>";
				
  }
		
}

Именно он и отсылает данные на E-mail: zzz@yandex.ru

Вы должны сами проверить БЕЗОПАСНОСТЬ данного скрипта. В статье показаны лишь идеи.

Можно вместо отправки email добавлять сообщения в БАЗУ ДАННЫХ.

Файлы для данного скрипта:

Скачать модуль «Нашли ошибку — нажимай Ctrl + Q»

Счастливого программирования!

Понравилась статья? Поделить с друзьями:
  • Модуль кузовостр даф 105 ошибка
  • Модуль кузова даф 105 ошибка
  • Модуль контроля двигателя ошибка бмв
  • Модуль для чтения ошибок автомобиля
  • Модуль для считывания ошибок автомобиля