Индивидуальная доработка кода и дополнения

Изменение файлов проекта

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

Для работы с файлами шаблонов (php) доступно создание собственных тем. Кроме файлов шаблонов, также можно вносить изменения в javascript / css файлы и файлы изображений.

Для изменения и доработки функций (кода php) оптимально создать свой собственный плагин, который позволяет расширять имеющиеся функции при помощи системы хуков и фильтров, а также других инструментов.

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

Изменение файлов дополнений

В случае если требуется вносить изменения в уже существующие дополнения доступен механизм кастомизации файлов - возможность подмены файлов путем их копирования в специальную директорию /custom/ с последующим редактированием. Структура вложенности файлов при этом должна быть сохранена.

Пример кастомизации php файлов (кода и шаблонов) плагина:
Путь к исходному файлу плагина (в который требуется внести изменения) - /plugins/pluginDir/pluginFile.php
Путь к файлу копии для редактирования - /custom/plugins/pluginDir/pluginFile.php
Где видно, что вложенность директорий при копировании файла в директорию кастомизации осталась аналогичной исходному расположению файла.

Пример кастомизации файлов статики (js/css/изображений) плагина:
Путь к исходному файлу плагина (в который требуется внести изменения) - /public_html/plugins/pluginDir/static/file.js
Путь к файлу копии для редактирования - /public_html/custom/plugins/pluginDir/static/file.js

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

Системные настройки

Множество настроек проекта, таких как например количество записей в списках или же пре-/постмодерация настраиваются в разделе "Настройки сайта / Системные настройки", по коду они обычно выглядят подобным образом:

config::sysAdmin('contacts.captcha', true, TYPE_BOOL);
config::sys('contacts.captcha', true, TYPE_BOOL);

Где вторым параметром можно увидеть значение по-умолчанию, не меняйте его в коде, ищите соответствующую настройку в админ-панели, либо же если таковой нет, добавьте строку в файл системных настроек /config/sys.php. Для примера изменим значение на false:

'contacts.captcha' => false,

В большинстве форм при валидации входящих данных можно встретить ограничение по длине строки, например:

'name' => array(TYPE_NOTAGS, 'len' => 50, 'len.sys' => 'form.name.limit'),

В примере текст указанный в поле name будет урезан до 50 символов, параметр len.sys сообщает о том что это значение может быть переопределено при помощи системной настройки, например расширим его до 100 символов путем добавления следующей строки в файл системных настроек /config/sys.php:

'form.name.limit' => 100,

Значение найтроки получаемой посредством config::sys будет браться из файла системных настроек /config/sys.php, а вызов config::sysAdmin проверит в первую очередь не указывалось ли значение в админ. панели, в разделе "Настройки сайта / Системные настройки" и если нет, проверит файл системных настроек.

Подробнее о доступных типах настроек читайте в статье "Настройки приложения"

Локализация интерфейса

В случае если необходимо изменить некоторые фразы встречаемые в интерфейсе, как например названия кнопок, полей, заголовки форм и подобное, не вносите их в файлы, используйте для этого функцию Локализации, более подробную документацию вы найдете в разделе "Настройки сайта / Локализация" к продукту. Также не забывайте что большинство H1 заголовков на страницах редактируется в соответствующих настройках SEO. Локализация расширений выполняется посредством встроенных в дополнения функций lang и langAdmin, подробности читайте здесь.

Подробнее о локализации приложения читайте в разделе "Локализация приложения"