- Не использовать Jquery ни в коем случае. Вообще никак. Если нравится AJAX, используйте Bitrix библиотеку. Не подключать Jquery!!!.
- Использовать по максимуму Bitrix D7 с ORM. В идеале отказываться от устаревшего метода GetList и использовать объект Query.
- Для работы с CSS скачивать весь пакет SCSS и перекомпилировать его заново. Для работы использовался Live Sass Compiler.
- Для работы с JS не ставить константы глобальной области видимости, и вообще помещать все в функции, используя блочность. Использовать ES6. Стараться типизировать работу, кастомить app.js лучше внутри объекта основного объекта app. То есть внутри объекта добавляем новую функцию и используем. Не городить тысячи кода снизу, особенно глобально.
- Если видите название класса, начинающегося не с /Bitrix/.../, то этот класс находится по пути /local/php_interface/classes/namespace класса
- При работе с CSS лучше скачивать все файлы SCSS с зависимостями.
- Сами файлы:
- _classes-generation.scss - тут генерируются колонки, контейнеры и т.д.
- _mixins.scss - тут находятся все миксины и функции
- _reboot.scss - тут переопределение глобальных браузерных стилей.
- _variables.scss - тут находятся все переменные (цвета, кол-во колонок, брейкпоинты и т.д.)
- _core.scss - тут общие стили всего сайта.
- Сложной логики не делал, на компоненты не разбивал, нет смысла, потому что по сути весь сайт и есть каталог товаров.
- По хорошему можно минифицировать и потом перекомпиливать с помощью SCSS.
- Архиректура проекта работает таким образом, что в объекте app файла app.js находятся все основные переиспользуемые функции, необходимые для правильной жизнеспособности сайта.
- Везде в проекте используется fetch. Лучше сохранять данную логику.
- Почти все функции основного объекта с комментариями, для упрощения работы.
Весь проект находится в папке /local/.
Файловая структура выглядит следующим образом:
- ajax - папка в которую идут AJAX запросы. (можно сделать роутинг, но для адекватного роутинга с внешним namespace нужно писать модуль).
- auth.php - обработчик аутентификации
- basket.php - обработчик корзины
- change_password.php - обработчик смены пароля
- favorites.php - обработчик избранных товаров
- register.php - обработчик регистрации
- forms
- form_return.php - обработчик формы возврата
- php_interface
- EventHandlerFunctions.php - отдельный файл для обработки Bitrix событий. Дабы не засорять привычный init.php
- init.php - дефолтный init, тут в основном стоят define и подключаются свои классы (т.к. без модуля)
- classes - в этой папке содержатся вынесенные в отдельный namespace классы для работы с проектом
- BasketHelper.php - класс для работы с корзиной
- CatalogHelper.php - класс для работы с каталогом
- Security.php - класс для работы с защитой
- SmsHelper.php - класс для работы с SMS
- templates - шаблон
Капча рендерится при помощи вызова функции captchaRender.
Функция captchaRender подтягивает объект CaptchaElements, в которой находится заранее подготовленный массив объектов селекторов капчи.
Далее для рендера используется обсервер видимости капчи.
Файл загружается только тогда, когда, когда попадает в область видимости. Соответственно скачивается файл -> рендерится капча. Снизу капчи создаются блоки для formControl.
В общем если долго не расписывать, то гайд по добавлению капчи в форму:
- Добавляем в шаблон какого-либо компонента или элемента div, с определенным классом.
- Добавляем в массив объектов Captcha.Elements этот селектор
- Вы молодец, капча срендерилась.
Для проверки капчи используется свой класс в namespace Security. Он отправляет POST запрос в google для верификации response.