За последние 24 часа нас посетили 29837 программистов и 1759 роботов. Сейчас ищут 933 программиста ...

Как сделать так что бы переменную php в было видно в файле кеша Opencart?

Тема в разделе "PHP для новичков", создана пользователем Dron-Boy, 19 авг 2016.

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Как сделать так что бы переменную php было видно в файле кеша Opencart?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Прочитать API Opencart и найти там нужную функцию?
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    @Dron-Boy, какую-то фигню пишешь. Если ты снова VQMod (или родной OCMod) имеешь в виду, то смотри как там всё работает:
    1. У VQMod в папочке xml лежат файлы плагинов, которые через него ставятся
    2. В этих файлах идут команды типа: в файле движка таком-то найти строчку такую-то, вставить после неё такой-то код
    3. Когда OpenCart запрашивает какой-то файл, VQMod фактически перехватывает этот запрос, и если у него есть команда изменить этот файл, он выполняет изменения, записывает эти изменения к себе в кеш, и скармливает opencart-у вместо родного файлика этот переделанный файл
    4. Внутри переделанные файлы - те же php
    Во второй ветке появился OCMod, работает точно также, но теперь от разработчиков OpenCart-а. Используются в плагинах почему-то оба. Как они решают возможные конфликты - хрен его знает, не разбирался.

    В общем, если тебе надо свой код вставить в open cart, ты должен проследить, чтоб команды из xml-файликов его не затёрли. Формат там простой достаточно, вполне понятно, что делается:
    Код (Text):
    1.  
    2. <file path="catalog/controller/common/" name="column_left.php,column_right.php,content_top.php">
    3.     <operation error="skip">
    4.             <search position="replace"><![CDATA[if (isset($part[1]) && isset($setting[$part[1]])) {]]></search>
    5.             <add><![CDATA[
    6.                 if( $code == 'mega_filter' ) {
    7.                     $setting['_idx'] = $part[1];
    8.                     $setting['position'] = $module['position'];
    9.                
    10.                     $data['modules'][] = $this->load->controller('module/' . $code, $setting);
    11.                 } else if (isset($part[1]) && isset($setting[$part[1]])) {
    12.             ]]></add>
    13.     </operation>
    14. </file>
    Т.е. в файлах column_left.php и т.д. в папке catalog/controller/common/ надо найти код
    PHP:
    1. if (isset($part[1]) && isset($setting[$part[1]])) {
    и заменить его кодом:
    PHP:
    1. if( $code == 'mega_filter' ) {
    2.                     $setting['_idx'] = $part[1];
    3.                     $setting['position'] = $module['position'];
    4.                
    5.                     $data['modules'][] = $this->load->controller('module/' . $code, $setting);
    6.                 } else if (isset($part[1]) && isset($setting[$part[1]])) {
    --- Добавлено ---
    А переменные - всё также, глобальные, локальные - ну PHP же. Смотри, какая область видимости. Я, в принципе, редактировал эти xml-файлы VQMod, только после этого плагин нельзя обновлять.