Получить ошибку при добавлении кода через vqmod

Я следую этому ответу Проверьте положение модуля в 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

Когда модуль включен в верхнем / нижнем столбце. Итак, ничего не отображать.

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 (особенно в новых версиях).

Другие вопросы по тегам