Я следую этому ответу Проверьте положение модуля в OpenCart 2.0 и он работает нормально, когда добавить его код прямо в файл ядра.
Но, когда, этот же код (Шаг 3) добавить через Vqmod (без изменения основного файла). Итак, это не работа. Получить ошибку (Примечание: неопределенный индекс: позиция в ….)
Наш код Vqmod.
<file path="catalog/controller/common/" name="content_top.php,content_bottom.php,content_right.php,content_left.php">
<operation>
<search position="after">
<![CDATA[$setting_info = $this->model_extension_module->getModule($part[1]);]]>
</search>
<add>
<![CDATA[$setting_info['position'] = basename(__FILE__, '.php');]]>
</add>
</operation>
</file>
Я использую OpenCart версии 2.0.1.1
Как это исправить?
=== Обновление ===
изменен код в файле vqcache.
if (isset($part[1])) {
$setting_info = $this->model_extension_module->getModule($part[1]);if(!isset($setting_info['position'])){
$setting_info['position'] = basename(__FILE__, '.php');
}if ($setting_info && $setting_info['status']) {
$data['modules'][] = $this->load->controller('module/' . $part[0], $setting_info);
}
Когда модуль включен в левом / правом столбце. Итак, получите ниже ошибки.
Notice: Undefined index: position in C:\......\template\module\featured.tpl on line 1
Когда модуль включен в верхнем / нижнем столбце. Итак, ничего не отображать.
Ну, я уже давно не слежу за OpenCart, но думаю, что смогу помочь вам с вашим вопросом, поскольку, похоже, вспоминаю похожую ситуацию.
Прежде всего, я предлагаю вам всегда проверять vqcache папка для кода, который выводится, чтобы вы могли иметь более тщательный взгляд.
Во-вторых, проблема заключается в том, что добавление его через vqmod сначала вызывает проверку для переменной, что она на самом деле не инициализируется заранее, а в этот момент, и, таким образом, вы получаете ошибку «Неопределенный индекс». решение должно заменить:
<![CDATA[$setting_info['position'] = basename(__FILE__, '.php');]]>
с:
<![CDATA[
if(!isset($setting_info['position'])){
$setting_info['position'] = basename(__FILE__, '.php');
}
]]>
Общая идея — проверка переменной, если она существует до того, как решение должно быть принято. Если нет, то вы должны отладить сгенерированный файл в вашей папке vqcache и посмотреть, что представляет собой фактически обработанный код.
Хотелось бы помочь вам больше, но я давно не пользовался OpenCart (особенно в новых версиях).
Других решений пока нет …