Примеры и антипримеры для разработчиков

Примечание

Настоятельно рекомендуем вам следовать нижеизложенным правилам. Это сделает использование и обновление CS-Cart и Multi-Vendor более удобным.

Не изменяйте файлы ядра

CS-Cart и Multi-Vendor представляют собой программные средства с открытыми исходным кодом. Это означает, что после загрузки CS-Cart и распаковки архива вы можете открыть любой файл и посмотреть, что находится “под капотом”. Все файлы, которые передаются вам по умолчанию в комплекте CS-Cart или Multi-Vendor называются файлами ядра.

Поскольку исходный код открыт, предполагается, что вы можете адаптировать систему под свои потребности, изменяя файлы ядра, но мы не рекомендуем такой способ. Вместо этого мы предлагаем вносить изменения опосредованно (например, используя отдельные модули).

Важно

У этого правила есть несколько исключений. Например, мы рекомендуем переименовать admin.php в целях безопасности сразу после установки CS-Cart или Multi-Vendor.

Почему не следует изменять файлы ядра?

Примечание

Коротко: Изменение файлов ядра может вызвать проблемы с совместимостью модулей. Вы также можете потерять свои изменения, либо эти изменения могут привести к ошибкам после обновления. Отменить изменения и вернуться к исходным параметрам может быть таким же сложным, как и внести эти изменения.

Если вы все же решите обновить магазин с помощью измененного файла ядра до новой версии CS-Cart/Multi-Vendor, при обновлении может произойти следующее:

  • Файлы ядра переписываются, в результате вы теряете свои изменения.
  • Некоторые файлы изменяются, и эти изменения влияют на ваши изменения. Это может привести к ошибке, которую вы сможете исправить лишь отменив изменения и вернувшись с исходному состоянию файла ядра.

Проблемы могут возникнуть и без выполнения обновления. Предположим, что у вас имеется измененный файл ядра, и сторонний модуль не работает должным образом, хотя должен работать в вашей версии CS-Cart так, как нужно.

Обычно первый вариант решения этой проблемы, который приходит в голову,-отключить другие модули, чтобы убедиться, что проблема связана не с ними. Но если вы внесли изменения непосредственно в файлы ядра, вам на всякий случай все равно придется откатить их до исходного состояния. Это достаточно трудоемко, особенно если определенные элементы кода по умолчанию были изменены или заменены.

Как проверить, изменены ли файлы ядра?

В CS-Cart и Multi-Vendor имеется специальный инструмент— Детектор изменений ядра. Он позволяет отслеживать изменения и уведомлять об изменениях в файлах ядра. Посмотреть наличие изменений в файлах ядра можно в Панели администратора:

  1. Зайдите в Панель администратора → Настройки → Хранилище данных → Измененные файлы ядра.
  2. Нажмите Сканировать на наличие изменений ядра.

Вы также можете настроить магазин на автоматическую проверку изменений в файлах ядра при каждом входе в Панель администратора. Для этого:

  1. Зайдите в Настройки → Общие настройки.
  2. Убедитесь, что опция Отслеживать изменения в файлах ядра включена (галочка проставлена).
  3. Нажмите кнопку Сохранить в правом верхнем углу.

Теперь при обнаружении каких-либо изменений в файлах ядра по умолчанию система будет отображать следующее уведомление при открытии Панели администратора:

Важно

Некоторые файлы ядра были изменены вручную. Впоследствии это может привести к проблемам при обновлении до новой версии, так как ваши изменения в файлах могут быть утеряны.

Делайте изменения опосредованно

В CS-Cart и Multi-Vendor имеется несколько способов внесения изменений, не изменяя при этом файлы ядра:

  • Используйте хуки для создания собственных модулей, которые расширяют функциональность.
  • Вместо изменения тем по умолчанию используйте клонирование тем и редактируйте темы-клоны.

Используйте модули и хуки

Если вам нужно добавить или изменить определенную функциональность, вы можете сделать это в виде отдельного модуля. При создании модуля можно использовать хуки для добавления или изменения кода в файлах ядра опосредованно. Такой подход имеет следующие преимущества:

  • Все файлы модуля хранятся отдельно в папке с именем модуля. Таким образом отслеживать внесенные изменения проще, т.к. вы изменяете только те файлы, которые создали сами.
  • Изменения можн отменить и вернуть парой кликов, просто отключив или включив модуль. Это может быть полезно в случаях, когда вы предполагаете, что ваши изменения приводят к конфликту с другим модулем или при обновлении модуля.

Важно

Вы можете запросить новые хуки для следующих версий CS-Cart здесь. Перед этим ознакомьтесь с нашими правилами создания хуков - мы можем адаптировать ваш хук к этим требованиям.

Редактируйте только клонированные темы

Если вам нужно изменить внешний вид вашего магазина, не изменяйте тему по умолчанию. Вместо этого можно создать отдельную тему. Проще всего это сделать с помощью клонирования текущей активной темы. Для этого:

  • Введите следующую команду в консоли:

    php admin.php -p --dispatch=themes.clone --source=responsive --target=my_theme
    
  • Укажите имя и описание клонированной темы в файле manifest.json.

Папка с клонированной темой включает только файл manifest.json, логотипы и стиль по умолчанию. Остальные данные автоматически берутся из темы, которая указана в файле manifest.json в качестве родительской темы (parent_theme):

  • Папки css, media и templates будут объединены с папкой тема-клоны во время выполнения:
    • Файлы, отсутствующие в папке тема-клоны, будут взяты из папки родительской темы.
    • Файлы, которые имеются только в папке темы-клона, будут распознаны.
    • Если файл присутствует в обоих папках (темах), будет использоваться файл из темы-клона.
  • Папки layouts и styles не будут объединены. Если у клонированной темы имеются макеты или стили, они будут использованы в этой теме. В противном случае макеты или стили будут наследованы от родительской темы.

Для изменения файлов просто скопируйте их из папки с родительской темы в папку темы-клона и отредактируйте их.