Модификаторы и контроллер хедера

Тема в разделе "Общие вопросы", создана пользователем Neumann, 4 апр 2016.

  1. Neumann

    Neumann Пользователь

    Сообщения:
    35
    Симпатии:
    1
    Добрый день.

    Возможно, заголовок звучит странно, но он отражает всю суть)

    Возникла странная ситуация.
    После того, как я установил пару расширений (модификаторы/modifications) контроллер хедера (catalog/controller/common/header.php) стал зависеть от них таким образом:
    если этот контроллер изменить, то его изменения (хоть die() в самом начале) никак не отражаются, пока модификаторы не обновить (страница в админке route=extension/modification).
    после этого кэш где-то очищается.

    и так, я заметил, только с header.php. например с footer.php (или home.php) такого нет.
    и такого не было раньше - до того, как установил модификаторы.

    Какая между ними связь?

    p.s. заметил. кэшируется вот сюда
    www\system\storage\modification\catalog\controller\common\header.php
    и он заменяется оттуда сюда, когда Refresh в модификаторах
    но зачем?
     
    Последнее редактирование: 4 апр 2016
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    241
    Модификатор служит для изменений функционала файлов движка. Новая копия измененных файлов лежит в папке system\storage\modification. Модификатор нужен для того чтоб внесенные изменения не потерялись при последующих обновлениях версий движка. Движок сначала загружает именно эти копии и потом остальные файлы из своих папок если они отсутствуют в папке модификейшен. Так что если вы хоть удалите родной файл из своей папки, но его копия будет существовать в модификейшен, то будет работать последний.
    При обновлении Кеша модификаторов срабатывают модификаторы и создаются копии родных файлов на которые они влияют.
    Как то сумбурно объяснил, но надеюсь суть станет ясна...

    В интернете и на этом форуме есть инструкции по типу: открыть файл такой-то, найти такую-то строку, и добавить после или до или изменить такой-то код.
    Так вот хороший разработчик делает модификатор с этими инструкциями и не вносит изменения напрямую. Многие до сих пор сидят на старых версиях именно по этой причине так как лень в свое время было сделать файл модификатора. И теперь они заложники этих изменений, которые не были в свое время правильно оформлены.
     
    Последнее редактирование: 4 апр 2016
    Neumann и mars1an нравится это.
  3. Neumann

    Neumann Пользователь

    Сообщения:
    35
    Симпатии:
    1
    Спасибо.
    Я в целом понял.

    Но я не понял, как мне работать с ними самому.
    Ведь при обновлении (Refresh) в админке на странице модификаторов - файлы обновляются - переносятся допустим из catalog\controller\common\header.php в www\system\storage\modification\catalog\controller\common\header.php

    Как же я смогу сделать изменения таким образом, чтобы они не потерялись и при обновлении движка и при этом не терялись, когда делается refresh в админке на странице модификаторов?
     
  4. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    241
    Если бы вы поняли что такое модификатор и как он работает, не задавали бы этот вопрос.
    Прямой ответ: сделать изменения через модификатор
     
    Neumann нравится это.
  5. Neumann

    Neumann Пользователь

    Сообщения:
    35
    Симпатии:
    1
    Начинаю понимать))
    Еще уточнение: у меня изменения во многих контроллерах (по самым разным причинам).
    Мне все изменения всех контроллеров можно объединить в один модификатор?
     
  6. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    241
  7. Neumann

    Neumann Пользователь

    Сообщения:
    35
    Симпатии:
    1
    еще уточняющие вопросы)
    - туда нужно добавлять изменения контроллеров, модели и файлов system (если такие есть)?
    - обязательно ли использовать xml для замены отдельных строк. можно ли просто помещать целиком измененные файлы туда?