Не работает OCMOD?

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

Что вызывает эту проблему?

В 100% случаев, которые возникали у нас, проблема была вызвана присутствием константы DIR_CATALOG в файле config.php. Поскольку по умолчанию эта константа присутствует только в панели администратора, функция модификации проверяет, определена ли она и, если да, то ищет модификации в папке администратора. Таким образом, когда эта константа присутствует в части каталога, OpenCart путается и ищет модификации в папке администратора, но они обычно не присутствуют там, или эти модифицированные файлы имеют совершенно другую логику, и начинают возникать ошибки.

Как решить эту проблему?

Будет лучше, если вы знаете, какое расширение/настройка используют константу DIR_CATALOG в каталоге, и свяжетесь с его разработчиком и попросите их внести исправления в расширение и убрать параметр из файла config.php. Таким образом вы сохраните более чистую версию OpenCart, что поможет в будущем, когда вам нужно будет обновить систему.

Ваш второй вариант состоит в том, чтобы модифицировать файл system/startup.php. Откройте его и найдите функцию модификации. Она должна находиться где-то около середины файла и выглядит так:

function modification($filename) {
if (!defined('DIR_CATALOG')) {
$file = DIR_MODIFICATION . 'catalog/' . substr($filename, strlen(DIR_APPLICATION));
} else {
$file = DIR_MODIFICATION . 'admin/' . substr($filename, strlen(DIR_APPLICATION));
}
if (substr($filename, 0, strlen(DIR_SYSTEM)) == DIR_SYSTEM) {
$file = DIR_MODIFICATION . 'system/' . substr($filename, strlen(DIR_SYSTEM));
}
if (is_file($file)) {
return $file;
}
return $filename;
}

Измените следующую строку:

if (!defined('DIR_CATALOG')) {

на

if (basename(DIR_APPLICATION) == ‘catalog’) {

и это должно решить проблему.

Если у вас есть какие-либо дополнительные вопросы, разместите их в разделе комментариев ниже.

Источник isenselabs