Не работает OCMOD?
Иногда система OCMOD на OpenCart может перестать работать во фронтенде, и вы можете потратить какое-то время в поисках причины. Кажется, это довольно частая проблема, потому вот несколько советов по тому, как самостоятельно решить проблему, связанную с OCMOD.
Что вызывает эту проблему?
В 100% случаев, которые возникали у нас, проблема была вызвана присутствием константы DIR_CATALOG в файле config.php. Поскольку по умолчанию эта константа присутствует только в панели администратора, функция модификации проверяет, определена ли она и, если да, то ищет модификации в папке администратора. Таким образом, когда эта константа присутствует в части каталога, OpenCart путается и ищет модификации в папке администратора, но они обычно не присутствуют там, или эти модифицированные файлы имеют совершенно другую логику, и начинают возникать ошибки.
Как решить эту проблему?
Будет лучше, если вы знаете, какое расширение/настройка используют константу DIR_CATALOG в каталоге, и свяжетесь с его разработчиком и попросите их внести исправления в расширение и убрать параметр из файла config.php. Таким образом вы сохраните более чистую версию OpenCart, что поможет в будущем, когда вам нужно будет обновить систему.
Ваш второй вариант состоит в том, чтобы модифицировать файл system/startup.php. Откройте его и найдите функцию модификации. Она должна находиться где-то около середины файла и выглядит так:
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