Просмотров: 40007
Дата последнего изменения: 18.01.2021
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
4
5
Кодировки и языковые файлы
- Всегда выносите русский текст в языковые файлы, иначе в будущем возможны проблемы с кодировками.
Например, при установке модуля внутри него смена кодировки происходит только для языковых файлов. Таким образом, устанавливая сайт в utf-8 и оставив русский текст в файле
/install/components/пространство имен/имя компонента/templates/.default/template.php
вы в итоге получите набор иероглифов.
- При разработке/тестировании в Windows предварительно снимите флаг скрытости у всех файлов.
При копировании файлов, начинающихся с точки (такие файлы считаются скрытыми в Unix подобных ОС) с сетевого диска Windows ставит им флаг «скрытый». При наличии этого флага при установке сайта под Windows файлы не обрабатываются. Перед сборкой архива с дистрибутивом желательно также предварительно проверить файлы на флаг скрытости.
- При создании решения проверяйте соответствие кодировки файла .htaccess в вашем решении и в системе. При установке решения может произойти затирание этого файла, созданного системой. В результате этого могут не создаваться инфоблоки. Решения лучше создавать в Windows-1251, как и сам Bitrix Framework.
Ядро Bitrix
- При разработке решения для Bitrix Marketplace не оставляйте в публичной части системные файлы, которые могут перезаписать уже имеющиеся файлы у клиента. К ним относятся:
- файл urlrewrite.php;
- папка
/upload
;
- любые системные файлы из папки
/bitrix
, в том числе шаблон .default;
- Компоненты/гаджеты вне собственного пространства имен.
Если есть необходимость все же добавить что-либо в системную папку, то разместите эти файлы отдельно и делайте предварительно проверку на существование.
- При разработке самостоятельного решения с поддержкой многосайтовости выносите добавляемое в папку
/bitrix
в отдельную папку и копируйте вручную без перезаписи. Иначе при переносе публичной части при установке второго сайта у вас получится лишний набор файлов в /папка_сайта/bitrix/
.
- При разработке самостоятельного решения не добавляйте никаких файлов в ядро Bitrix Framework напрямую. Если все же необходимо внести дополнительные файлы в ядро (например, свой шаблон бизнес-процесса), то такой файл нужно поместить внутри мастера создания сайта и переносить через копирование. В противном случае при переносе решения на более новую редакцию Bitrix Framework есть вероятность потери добавленных файлов.
Инфоблоки, пользователи и свойства
- Никогда напрямую не используйте ID инфоблока (пользователя, группы, значения свойства типа «список») где-либо, кроме файлов публичной части.
В противном случае возможна ситуация, когда компонент/шаблон/метод класса обращается к данным по одному ID, а получает либо совершенно другие данные, либо их полное отсутствие.
Возможные варианты решения:
- Для компонентов и шаблонов передавать ID используемых инфоблоков/пользователей/групп/свойств через параметры вызова (описываются в файле .parameters.php)
- Для собственных классов передавать необходимые ID инфоблоков/пользователей/групп/свойств либо при создании объекта класса, либо в качестве параметров его методов.
- Если ID нигде не передается, то определять их по каким-либо признакам (обычно это символьный код (CODE) или внешний код (XML_ID)).
- Внутри мастера установки проверяйте, что все прямые использования ID инфоблоков (пользователей, групп, значений свойств типа «список») заменены макросами. Макросы имеют вид
#имя_макроса#
и должны заменяться на этапе установки инфоблоков.
- Убедитесь, что все макросы заменяются во время установки решения. Для замены можно использовать следующие функции:
CWizardUtil::ReplaceMacros(путь_к_файлу, Array("имя_макроса" => значение_для_замены));
WizardServices::ReplaceMacrosRecursive(путь_к_корневой_папке, Array("имя_макроса" =>значение_для_замены));
Многосайтовость
Если предполагается возможность установки вторым/N-ным сайтом, то в начале всех абсолютных путей необходимо либо подставлять системную константу SITE_DIR, либо макрос (например, #SITE_DIR#
), заменяемый в процессе установки решения.
Шаблоны
- Если решение включает несколько шаблонов, следите, чтобы названия шаблонов компонентов в них были одинаковыми. Публичная часть одна и не известно какой из шаблонов сайта выберет пользователь.
- Для уменьшения итогового размера решения выносите все одинаковые шаблоны компонентов в некоторую общую папку. В самостоятельном решении это может быть шаблон .default. В решении для Bitrix Marketplace — просто отдельная папка, из которой общие шаблоны компонентов должны быть скопированы на этапе установки шаблона сайта.
Шаблон Битрикс24 и фрейм
При разработке приложений на основе шаблона Битрикс24, учтите, что этот шаблон нельзя открывать во фрейме.