Редактировать

Структура проекта на CMS Битрикс

/var/www/some-site #site root directory
├── /.git
├── /.idea
├── /public
│   ├── /... папки разделов сайта ...
│   ├── /bitrix
│   │   ├── /.git
│   │   ├── /php_interface
│   │   │   ├── dbconn.php
│   │   │   └── dbconn.example.php
│   │   ├── .gitignore
│   │   ├── .settings.php
│   │   ├── .settings.example.php
│   │   └── ... папки и страницы ядра ...
│   ├── /upload
│   │   └── .htaccess
│   ├── /local
│   │   ├── /activities
│   │   ├── /modules
│   │   │   └── /local.common
│   │   ├── /components
│   │   ├── /php_interface
│   │   │   ├── /include
│   │   │   │   ├── constants.php
│   │   │   │   ├── env_vars.php
│   │   │   │   ├── env_vars.example.php
│   │   │   │   ├── functions.php
│   │   │   │   ├── handlers.php
│   │   │   │   └── site_closed.php
│   │   │   ├── init.php
│   │   │   └── this_site_support.php
│   │   ├── /gadgets
│   │   ├── /logs
│   │   ├── /verstka
│   │   │   ├── /.git
│   │   │   └── /.gitignore
│   │   └── /templates
│   │       └── mainTpl
│   │           ├── /ajax
│   │           ├── /components
│   │           ├── /css
│   │           ├── /fonts
│   │           │   └── /font-family-name
│   │           ├── /favicon
│   │           ├── /img
│   │           ├── /include
│   │           ├── /page_templates
│   │           │   └── .content.php
│   │           ├── /sass
│   │           │   ├── /parts
│   │           │   │   ├── _mixins.scss
│   │           │   │   ├── _fonts.scss
│   │           │   │   ├── _common.scss
│   │           │   │   ├── _page-main.scss
│   │           │   │   └── _page-404.scss
│   │           │   └── style.scss
│   │           ├── /.sass-cache
│   │           ├── /js
│   │           │   ├── /vendors
│   │           │   ├── partCommon.js
│   │           │   └── partMain.js
│   │           ├── header.php
│   │           ├── footer.php
│   │           ├── template_styles.php
│   │           ├── styles.css
│   │           ├── .styles.php
│   │           └── description.php
│   ├── ... страницы сайта ...
│   ├── index.php
│   ├── urlrewrite.php
│   ├── .access.php
│   ├── .htaccess
│   ├── .menu-name.menu.php
│   ├── .menu-name.menu_ext.php
│   ├── robots.txt
│   ├── robots.example.txt
│   └── 404.php
├── .gitmodules
└── .gitignore

activities — действия БП; components — компоненты; gadgets — гаджеты рабочего стола; modules — модули; php_interface — init.php, папка user_lang; templates — шаблоны сайтов, шаблоны компонентов, шаблоны страниц.

Весь код, который пишется для проекта должен находиться в папке

/local

В папке

/bitrix

Находится ядро системы, которое изменяется средствами системы обновлений CMS. Никогда не правьте файлы ядра.

/.git

Основной репозиторий проекта, в нем содержится все, что относится к разработке проекта.

/.idea

Файлы относящиеся к IDE. Название папки зависит от используемой вами IDE, если отличается от указанного, то нужно включить вашу папку в исключения git.

/public

Корневая директория сайта, все файлы, доступные из сети находятся в ней.

/bitrix

Ядро систему 1С Битрикс, изменять файлы в этой директории категорически запрещается, исключением являются файлы, поддержка которых не реализована в папке локал, например файлы настроек БД.

/bitrix/.git

Репозиторий подмодуля ядра системы.

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

/bitrix/.gitignore

Файл исключений для репозитория ядра системы.

/bitrix/php_interface/dbconn.php

Файл конфигурации для старого ядра Битрикс. В целях повышения безопасности этот файл включен в исключения git, для настройки системы при переносе из репозитория присутствует пример файла настроек dbconn.example.php

/bitrix/php_interface/dbconn.example.php

Пример файла настроек.

/bitrix/.settings.php

Файл конфигурации для нового ядра Битрикс. В целях повышения безопасности этот файл включен в исключения git, для настройки системы при переносе из репозитория присутствует пример файла настроек .settings.example.php

/public/bitrix/.settings.example.php

Пример файла настроек.

/upload

Папка с файлами, загруженными пользователями или обменом с 1С. Добавлена в исключения git.

/upload/.htaccess

Стандартный код от битрикса не отключает обработку PHP, когда оно в режиме FastCGI (специфика режима). Для отключения обработки PHP в режиме FastCGI нужно сперва аннулировать типы, т.е. правильно файл должен содержать следующий код:

<IfModule mod_mime.c>
   RemoveHandler .php .php3 .php4 .php5 .php6 .phtml .pl .asp .aspx .cgi .exe .ico
   AddType text/plain .php .php3 .php4 .php5 .php6 .phtml .pl .asp .aspx .cgi .exe .ico
</IfModule> 

/local

Основная папка для размещения кода проекта.

/local/activities

/local/modules

/local/modules/local.common

/local/components

/local/php_interface

/local/php_interface/include

Содержит файлы для подключения в init.php

/local/php_interface/init.php

<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

// Подключение констант
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/constants.php')) {
    require_once($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/constants.php');
}

// Подключение обработчиков событий
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/handlers.php')) {
    require_once($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/handlers.php');
}

// Подключение глобальных функций (чаще всего используется для переноса кода сторонних разработчиков
// при получении проекта на доработку)
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/functions.php')) {
    require_once($_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/include/functions.php');
}

/local/php_interface/include/constants.php

<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

/**
 * IBlocks IDS
 * template: IBID_<IBLOCK_CODE> = int
 */

const IBID_CATALOG = 12;
const IBID_SKU = 14;

/**
 * IBlocks TYPES
 * template: IBTYPE_<IBLOCK_TYPE_CODE> = string
 */

const IBTYPE_CATALOG = '1c_catalog';

/**
 * PRICES
 * template for IDs: PRICE_<CODE>_ID
 * template for CODEs: PRICE_<CODE>_CODE
 */
const PRICE_MAIN_ID = 2;
const PRICE_MAIN_CODE = 'Типовое соглашение с клиентами';

const PRICE_CODES = [
    PRICE_MAIN_CODE,
];

const PRICE_IDS = [
    PRICE_MAIN_ID,
];

/**
 * Other consts
 */
 

/local/php_interface/include/handlers.php

<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

use \Bitrix\Main\Loader;

$eventManager = \Bitrix\Main\EventManager::getInstance();

/**
 * load common module
 */
AddEventHandler("main", "OnPageStart", "loadLocalModule", 1);
function loadLocalModule() {
    Loader::includeModule("local.common");
}

/**
 * Loading composer
 */
//if (file_exists($_SERVER['DOCUMENT_ROOT'].'/../vendor/autoload.php')) {
//    require_once $_SERVER['DOCUMENT_ROOT'].'/../vendor/autoload.php';
//}

/**
 * part for event handlers
 */

// USER
// $eventManager->addEventHandler("main", "OnBeforeUserRegister", ["\\Local\\Common\\Handlers\\User", "beforeRegister"]);
// $eventManager->addEventHandler("main", "OnBeforeUserAdd", ["\\Local\\Common\\Handlers\\User", "beforeAdd"]);
// $eventManager->addEventHandler("main", "OnBeforeUserLogin", ["\\Local\\Common\\Handlers\\User", "beforeLogin"]);

//$eventManager->addEventHandler("main", "OnEpilog", ["CDecPage", "handlerOnEpilog"]);

/local/php_interface/functions.php

<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

function d($var, $die = false)
{
    \Bitrix\Main\Diag\Debug::dump($var);
    !$die ?: exit;
}

/local/php_interface/include/env_vars.php

Константы специфичные для окружения. Файл добавлен в исключения git.

Пример: константа, отвечающая за определения типа окружения IS_PRODUCTION

/local/php_interface/include/env_vars.example.php

Пример файла констант окружения.

/local/php_interface/include/site_closed.php

/local/php_interface/this_site_support.php

/local/gadgets

/local/logs

/local/verstka

/local/verstka/.git

/local/verstka/.gitignore

/local/templates

/local/templates/mainTpl

/local/templates/mainTpl/ajax

/local/templates/mainTpl/components

/local/templates/mainTpl/css

/local/templates/mainTpl/fonts

/local/templates/mainTpl/fonts/font-family-name

/local/templates/mainTpl/favicon

/local/templates/mainTpl/img

/local/templates/mainTpl/include

/local/templates/mainTpl/page_templates

/local/templates/mainTpl/page_templates/.content.php

/local/templates/mainTpl/sass

/local/templates/mainTpl/sass/parts

/local/templates/mainTpl/sass/parts_mixins.scss

/local/templates/mainTpl/sass/parts_fonts.scss

/local/templates/mainTpl/sass/parts_common.scss

/local/templates/mainTpl/sass/parts_page-main.scss

/local/templates/mainTpl/sass/parts_page-404.scss

/local/templates/mainTpl/sass/style.scss

/local/templates/mainTpl/.sass-cache

/local/templates/mainTpl/js

/local/templates/mainTpl/js/vendors

/local/templates/mainTpl/js/partCommon.js

/local/templates/mainTpl/js/partMain.js

/local/templates/mainTpl/header.php

/local/templates/mainTpl/footer.php

/local/templates/mainTpl/template_styles.php

/local/templates/mainTpl/styles.css

/local/templates/mainTpl/.styles.php

/local/templates/mainTpl/description.php

index.php

urlrewrite.php

.access.php

.htaccess

robots.txt

robots.example.txt

404.php

.gitignore

### общие исключения
# IDE
.idea/
node_modules/

# OS
.DS_Store
Thumbs.db

# dev backups
*bak20*
*bak-20*

# cache
.sass-cache/

## если гит выше корня сайта
/public/upload/
/public/.Trash*/
/public/yml-catalogs/*.yml
/public/robots.txt
/public/sitemap*.xml
/public/local/vendor/
/public/local/php_interface/include/env_vars.php

## если гит в корне сайта
/upload/
/.Trash*/
/yml-catalogs/*.yml
/robots.txt
/sitemap*.xml
/local/vendor/
/local/php_interface/include/env_vars.php


### Битрикс
## если гит в корне сайта

# configs
/bitrix/php_interface/dbconn.php
/bitrix/.settings.php

# backups
/bitrix/backup/*
!/bitrix/backup/index.php

# logs
/bitrix/*.log
/bitrix/modules/updater.log
/bitrix/modules/updater_partner.log

# cache
/bitrix/cache/*
/bitrix/managed_cache/*
/bitrix/stack_cache/*
/bitrix/html_pages/

## если гит выше корня сайта
# configs
/public/bitrix/php_interface/dbconn.php
/public/bitrix/.settings.php

# backups
/public/bitrix/backup/*
!/public/bitrix/backup/index.php

# logs
/public/bitrix/*.log
/public/bitrix/modules/updater.log
/public/bitrix/modules/updater_partner.log
/*.log

# cache
/public/bitrix/cache/*
/public/bitrix/managed_cache/*
/public/bitrix/stack_cache/*
/public/bitrix/html_pages/

### исключения для конкретного проекта
/bitrix/modules/iarga.exchange/
!/bitrix/modules/iarga.exchange/install/
!/bitrix/modules/iarga.exchange/lang/

.gitmodules

[submodule "bitrix"]
	path = bitrix
	url = <ссылка на репозиторий подмодуля>