| Статья "Как установить Битрикс" Задача: На установленном ядре 1С-Битрикс создать сайт с нуля (есть верстка, есть ТЗ со структурой, с функционалом сайта) |
Создать пустой шаблон сайта
/bitrix/admin/template_admin.php

Создать сайт
/bitrix/admin/site_admin.php
| Туториалы по созданию сайта: Битрикса:
|

выбираем шаблон созданный
можно для одного сайта несколько шаблонов (для мобилки, для определенного раздела, файла и тд)

Добавить нужные типы меню для сайта
/bitrix/admin/settings.php?lang=ru&mid_menu=1&mid=fileman
Настройки > Настройки продукта > Настройки модулей > Управление структурой

Создать структуру через админку
чтобы автоматом были файлы с описанием раздела, с футером и хедером, добавлены в пункты в нужное меню
Контент > Структура сайта > Файлы и папки
| Важно. не делайте
|


Настройки для удобной разработки
| Важно! Перед сдачей проекта вернуть все обратно и протестировать |
1. Автокеширование отключаем
/bitrix/admin/cache.php?lang=ru

2. Убираем сжимание и объединение скриптов и стилей
Настройки > Настройки продукта > Настройки модулей > Главный модуль
/bitrix/admin/settings.php?lang=ru&mid=main&mid_menu=1

3. включаем вывод ошибок
/bitrix/.settings.php
в блоке exception_handling
'debug' => true, |
init.php - если нет, то создать
- или /bitrix/php_interface/init.php
- или /local/php_interface/init.php
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/log.txt");
//или
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/local/php_interface/log.txt"); |
echo LOG_FILENAME; |
AddMessage2Log(1); //можно число
AddMessage2Log("test"); //можно строку
AddMessage2Log(["test1","test2"]); //можно массив |
Начинаем менять шаблон сайта
шаблон сайта находится
/bitrix/templates/mytemplatename/
или
/local/templates/mytemplatename/
| статьи битрикса про папку local как система ищетшаблон |

- /component/ - там измененные шаблоны компонентов
- /css/,/js/,/img/,/fonts/ - assets (наборы файлов, которые используются на HTML-странице – это файлы стилей, скрипты, различные изображения и шрифты). Некоторые кладут эти папки в одну папку /assets/ (мне удобнее так)
- templates_styles.css - основной файл стилей шаблона сайта
- header.php, footer.php - шапка (хэдер) и подвал (футер) сайта, которые выводятся на всех страницах
header.php и footer.php c типовыми компонентами
header.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); //умирает. если не подключен пролог
IncludeTemplateLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/templates/".SITE_TEMPLATE_ID."/header.php"); //ланги, если надо
CJSCore::Init(array("fx")); //ядро битриксовской js библиотеки /bitrix/js/main/core/core_fx.js
\Bitrix\Main\UI\Extension::load(["ui.bootstrap4", "ui.fonts.opensans"]); // можно подключить бутстрап4 и шрифт опенсанс
$curPage = $APPLICATION->GetCurPage(true); // текущая страница для логики показа тех или иных блоков
?><!DOCTYPE html>
<html xml:lang="<?=LANGUAGE_ID?>" lang="<?=LANGUAGE_ID?>">
<head>
<title><?$APPLICATION->ShowTitle(); //заголовок окна браузера?> </title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width">
<link rel="shortcut icon" type="image/x-icon" href="<?=SITE_DIR?>favicon.ico" />
<? $APPLICATION->ShowHead(); //вывод подключенных css, js ?>
<?
// подключение каких-либо css (template_style.css не надо подключать, н автомато подключится)
Bitrix\Main\Page\Asset::getInstance()->addCss("/bitrix/css/main/bootstrap.min.css");
Bitrix\Main\Page\Asset::getInstance()->addCss(SITE_TEMPLATE_PATH."css/mycss.css");
// подключение скриптов
Bitrix\Main\Page\Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . "/js/myscripts.js");
Bitrix\Main\Page\Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . "/js/myscripts2.js");
// подключение мета тегов или сторонних файлов
Bitrix\Main\Page\Asset::getInstance()->addString("<link rel='shortcut icon' href='/local/images/favicon.ico' />");
?>
</head>
<body>
<div id="panel"><? $APPLICATION->ShowPanel(); //админ-панель битриксовская?></div>
<header>
<a href="<?=SITE_DIR?>">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include", //компонент включаемой области
"",
array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/company_logo.php"), //лого для компа
false
);?>
</a>
<a href="<?=SITE_DIR?>">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",//компонент включаемой области
"",
array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/company_logo_mobile.php" //лого для мобилки
),
false
);?>
</a>
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",//компонент включаемой области
"",
array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/telephone.php" //телефон
),
false
);?>
<?$APPLICATION->IncludeComponent(
"bitrix:sale.basket.basket.line", //корзина в шапке и авторизация
"bootstrap_v4",
array(
"PATH_TO_BASKET" => SITE_DIR."personal/cart/",
"PATH_TO_PERSONAL" => SITE_DIR."personal/",
"SHOW_PERSONAL_LINK" => "N",
"SHOW_NUM_PRODUCTS" => "Y",
"SHOW_TOTAL_PRICE" => "Y",
"SHOW_PRODUCTS" => "N",
"POSITION_FIXED" =>"N",
"SHOW_AUTHOR" => "Y",
"PATH_TO_REGISTER" => SITE_DIR."login/",
"PATH_TO_PROFILE" => SITE_DIR."personal/"
),
false,
array()
);?>
<?$APPLICATION->IncludeComponent(
"bitrix:search.title", //поиск по сайту (одно поле ввода)
"bootstrap_v4",
array(
"NUM_CATEGORIES" => "1",
"TOP_COUNT" => "5",
"CHECK_DATES" => "N",
"SHOW_OTHERS" => "N",
"PAGE" => SITE_DIR."catalog/",
"CATEGORY_0_TITLE" => GetMessage("SEARCH_GOODS") ,
"CATEGORY_0" => array(
0 => "iblock_catalog",
),
"CATEGORY_0_iblock_catalog" => array(
0 => "all",
),
"CATEGORY_OTHERS_TITLE" => GetMessage("SEARCH_OTHER"),
"SHOW_INPUT" => "Y",
"INPUT_ID" => "title-search-input",
"CONTAINER_ID" => "search",
"PRICE_CODE" => array(
0 => "BASE",
),
"SHOW_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "75",
"PREVIEW_HEIGHT" => "75",
"CONVERT_CURRENCY" => "Y"
),
false
);?>
<?$APPLICATION->IncludeComponent(
"bitrix:menu",
"bootstrap_v4",
array(
"ROOT_MENU_TYPE" => "left",
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "36000000",
"MENU_CACHE_USE_GROUPS" => "Y",
"MENU_THEME" => "site",
"CACHE_SELECTED_ITEMS" => "N",
"MENU_CACHE_GET_VARS" => array(),
"MAX_LEVEL" => "3",
"CHILD_MENU_TYPE" => "left",
"USE_EXT" => "Y",
"DELAY" => "N",
"ALLOW_MULTI_SELECT" => "N",
"COMPONENT_TEMPLATE" => "bootstrap_v4"
),
false
);?>
</header>
<main>
<?if($curPage != SITE_DIR."index.php"):?>
<?$APPLICATION->IncludeComponent(
"bitrix:breadcrumb", //хлебные крошки
"universal",
array(
"START_FROM" => "0",
"PATH" => "",
"SITE_ID" => "-"
),
false,
Array('HIDE_ICONS' => 'Y')
);?>
<h1><?$APPLICATION->ShowTitle(false);//заголовок h1?></h1>
<?endif;?> |
</main> <footer> <? $APPLICATION->IncludeComponent( "bitrix:menu", "bottom_menu", array( "ROOT_MENU_TYPE" => "bottom", "MAX_LEVEL" => "1", "MENU_CACHE_TYPE" => "A", "CACHE_SELECTED_ITEMS" => "N", "MENU_CACHE_TIME" => "36000000", "MENU_CACHE_USE_GROUPS" => "Y", "MENU_CACHE_GET_VARS" => array(), ), false );?> <?//ну и включаемые области обычно с контактами, Адресом и тд?> </footer> </body> </html> |
старым апи скрипты и стили подключали так:
// Для подключения скриптов
$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH."/js/myjs.js" );
// Подключение css
$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH."/css/mycss.css", true);
// Подключение мета тегов или сторонних файлов
$APPLICATION->AddHeadString("name='<meta name='yandex-verification' content='62be9ea1' />'"); |
Внедряем верстку
Как я делаю:
- накидываю через публичный раздел подходящий компонент с шаблоном битрикса на странице
- из публичного раздела в режиме правки копирую в свой шаблон сайта
- удаляю ненужные стили, скрипты, картинки в шаблоне компонента (мне нужные обычно находятся в папке шаблона сайта, уже подключенные)
- программирую нужную верстку
Важно!
|
array ( 'CONDITION' => '#^/catalog/#', 'RULE' => '', 'ID' => 'bitrix:catalog', 'PATH' => '/catalog/index.php', 'SORT' => 100, ) |
- если обращение идет до файла, которого физически на сайте не существует
- битрикс смотрит правила в /urlrewrite.php
- если адрес удовлетворяет CONDITION, то запускается файл из PATH
- если таких правил нет (которые удовлетворяют CONDITION), то выводит страницу 404
| Обработка адресов UrlRewrite - статья Битрикс Запрет на перетасовку правил в urlrewrite.php - Если много правил ЧПУ и важен порядок применения правил |
Создаем инфоблоки
| туториал Битрикса с видосиком про инфоблоки |
| Важно! при создании инфоблока важно включить генерацию символьного кода раздела и элемента, потому что они участвуют в генерации урлов |
ссылки меню частично сформировались, когда мы заводили разделы
формирование ссылок из инфоблоков (обычно это левое меню)
/.left.menu.php, /catalog/.left.menu.php
<? $aMenuLinks = Array( ); ?> |
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array(
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "4", //id инфоблока
"IS_SEF" => "Y",
"SEF_BASE_URL" => "/catalog/", //директория каталога
"SECTION_PAGE_URL" => "#SECTION_CODE#/",
"DETAIL_PAGE_URL" => "#SECTION_CODE#/#ELEMENT_CODE#/",
"DEPTH_LEVEL" => "2",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000"
),
false,
array("HIDE_ICONS"=>"Y")
);
$aMenuLinks = array_merge ($aMenuLinksExt, $aMenuLinks);
?> |

| компонент bitrix:menu.sections формирует ссылки только на разделы 2 кастомных компонента, которые формируют ссылки и на элементы: |
Каталог товаров
| Если у Вас планируется интеграция с 1С, то это можно пропустить, а просто выгрузить модулем обмена, он сам все создаст и все настройки проставит |
| статья Битрикса Отличия простых товаров и товаров с торг предложениями в 1С аналог торг предложений: учет по характеристикам |
Контент > Инфоблоки > Типы инфоблоков > [нужный тип инфоблока] > [нужный инфоблок]
вкладка "торговый каталог" > ставим галку "является торговым каталогом"
Если с торг предложениями, то создаете 2 инфоблока. В каталоге товаров указываете, что у него есть торг предложения

3. смотреть товары торгового каталога можно в админке в разделах
- Контент>Инфоблоки
- Магазин>[название инфоблока товаров]
делайте через мастер /bitrix/admin/storeassist.php?lang=ru
| Документация битрикс про настройку магазина если у Вас планируется интеграция с 1С, то сначала выгрузите товары (настройте интеграцию с 1С): типы цен, склады, ед измерения сами создадутся. Вам только подправить (названия, какая базовая цена и тд) потом доделайте через мастер |