В предыдущих статьях я уже писал что такое vQmod, как установить vQmod и как создать свой vQmod файл.

В этой статье вы узнаете как исправить ошибки и конфликты vQmod. 

Как я уже упоминал ранее, vQmod является очень плохим инструментов для разработки из-за того, что он является причиной множества конфликтов. Если у вас есть всего 2 vQmod файла, которые изменяют один и тот же кусок кода в одном и том же файле, то с очень большой долей вероятности вы получите конфликт и минимум один из этих vQmod файлов у вас работать не будет, а возможно и весь OpenCart не загрузится. 

Что же делать в такой ситуации:

1. Зайти в каталог vqmod/logs, там должен быть log файл с информацией об ошибке, файл будет называться как-то так: "5_Fri.log"

В этом файле будет примерно такой текст:

// Дата ошибки

---------- Date: 2014-10-17 17:34:25 ~ IP : ::1 ----------

// Страница на которой произошла эта ошибка

REQUEST URI : /opencart/1564/index.php?route=product/search&search=apples
MOD DETAILS:
   // vQmod файл который вызвал ошибку
   modFile   : /var/www/html/opencart/1564/vqmod/xml/search_mr.xml
   // идентификатор, название модификации
   id        : Better Search
   // версия модификации
   version   : 1.0.0
   //  версия vQmod заданная в vQmod файле
   vqmver    : 1.0.9
   //  автор модификации
   author    : sv2109@gmail.com
 
// файл в котором произошла ошибка
File Name    : catalog/controller/product/search.php(0)
// Информация о самой ошибке, чаще всего это "SEARCH NOT FOUND"
VQModObject::applyMod - SEARCH NOT FOUND (ABORTING MOD): $product_total =  $this->model_catalog_product->getTotalProducts($data);

----------------------------------------------------------------------

Это значит, что когда пользователь зашел по адресу "/opencart/1564/index.php?route=product/search&search=apples" то vqmod файл "vqmod/xml/search_mr.xml" не смог в файле "catalog/controller/product/search.php" найти нужный для изменения код "$product_total =  $this->model_catalog_product->getTotalProducts($data);"

Как я уже упоминал раньше, код для замены должен быть точно таким, как оригинальном в файле, никаких лишних пробелов, табуляций итд. 

Теперь для поиска причины ошибки нам нужно открыть файл "catalog/controller/product/search.php" и найти там код, похожий на "$product_total =  $this->model_catalog_product->getTotalProducts($data);" Часто он незначительно отличается. После того, как мы нашли этот код, нам нужно скопировать его и вставить в проблемный vQmod файл "vqmod/xml/search_mr.xml", заменив им старый нерабочий код. После этого нужно очистить vQmod кеш (удалить файл "catalog/controller/product/search.php" из папки "vqmod/vqcache") и запустить сайт. Если вы все сделали правильно то ошибка должна исчезнуть. 

2. Если в файле "catalog/controller/product/search.php" все нормально, а vqmod все равно выдает ошибки. Тогда вам нужно открыть кешированную версию файла (в папке vqmod/vqcache) и посмотреть там, возможно этот файл был изменен другим vQmod файлом. Если этого так то вам нужно изучить измененный файл и изменить проблемный vQmod файл согласно этим изменениям. Тут универсального совета нету, нужно изучать код.

3. Если в папке vqmod/logs пусто. Попробуйте изменить права доступа к этой папке, дать права на запись.

4. Если все еще ничего не работает? Убедитесь, что vqmod на вашем сайте установлен и работает. Можете его переустановить, запустив файл адрес_сайта/vqmod/install 

Если ни один из выше описанных советов вам не помог - напишите о своей проблеме в коментариях.