Skip to content

Instantly share code, notes, and snippets.

@usstudio
Created October 28, 2021 19:12
Show Gist options
  • Select an option

  • Save usstudio/c0c30854d8725e3dff09e1ccc48bb108 to your computer and use it in GitHub Desktop.

Select an option

Save usstudio/c0c30854d8725e3dff09e1ccc48bb108 to your computer and use it in GitHub Desktop.
bitrix_def
<?
$PERM["personal"]["8"]="W";
$PERM["catalog"]["8"]="W";
$PERM["news"]["8"]="W";
$PERM["about"]["8"]="W";
$PERM["index.php"]["8"]="W";
$PERM["/"]["*"]="R";
?>
<?
$aMenuLinks = Array(
Array(
"Новости",
"news/",
Array(),
Array(),
""
),
Array(
"Как купить",
"about/howto/",
Array(),
Array(),
""
),
Array(
"Доставка",
"about/delivery/",
Array(),
Array(),
""
),
Array(
"О магазине",
"about/",
Array(),
Array(),
""
),
Array(
"Гарантия",
"about/guaranty/",
Array(),
Array(),
""
),
Array(
"Контакты",
"about/contacts/",
Array(),
Array(),
""
),
);
?>
# Исключаем настройки PHPStorm, мы в нём работаем
/.idea/
# Исключаем папку /bitrix кроме некоторых подпапок
!/bitrix
/bitrix/*
# оставляем печатные формы интернет-магазина
!/bitrix/admin/
/bitrix/admin/*
!/bitrix/admin/reports/
# оставляем нестандартные компоненты
!/bitrix/components/
/bitrix/components/bitrix/
# сохраняем весь php_interface за редкими исключениями
!/bitrix/php_interface/
/bitrix/php_interface/dbconn.ph*
/bitrix/php_interface/after_connect*
/bitrix/php_interface/logs/
# сохраняем шаблоны сайта
!/bitrix/templates/
# исключаем логи
/local/php_interface/logs/
/local/logs/
# исключаем загружаемые файлы
/upload/
# различные системные папки и файлы хостингов и операционных систем
/cgi-bin/
/awstats/
/webstat/
.DS_Store
.Spotlight-V100
.Trashes
Thumbs.db
ehthumbs.db
# исключаем все текстовые и подобные ресурсы (на нашей практике они всегда излишни)
*.xml
*.html
*.txt
*.log
*.css.map
/*.txt
/*.gif
/*.png
/*.jpg
/*.jpeg
/*.JPG
*.js.map
*.mp3
*.exe
*.db
*.csv
*.bak
*.mp4
*.[oa]
*~
# архивы, включая многотомные
*.gzip
*.gz.[0-9]
*.zip
*.zip*
*.tar
*.tar*
*.enc
*.enc*
*.gz
*.gz*
*.tgz
*.tgz*
*.sql
*.rar
.hg
.ftpconfig
*.doc
*.docx
*.pdf
*.rtf
*.xls
*.xlsx
*.ppt
*.pptx
*.psd
*.psb
*.sketch
core.*
# однако храним robots.txt — он нужен
!/robots.txt
# composer
composer.phar
/vendor/
# исключаем всякое от node.js
node_modules
bower_components
.grunt
.npm
.env
# и логи xhprof напоследок
/xhprof/logs
Options -Indexes
ErrorDocument 404 /404.php
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
RewriteRule ^(.*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.htm
</IfModule>
# gzip сжатие
<IfModule mod_deflate.c>
# Выставляем заголовок Content-Encoding: gzip.
AddEncoding gzip .gz
# Для favicon.ico
AddOutputFilterByType DEFLATE image/x-icon
# Для CSS-файлов.
AddOutputFilterByType DEFLATE text/css
# Для JavaScript-файлов.
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json
# Для остальных типов файлов.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/x-component
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE font/truetype
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
# Отключаем сжатие для тех браузеров, у которых проблемы
# с его распознаванием.
BrowserMatch "MSIE [456]" no_gzip dont-vary
BrowserMatch "SV1;" !no_gzip !dont-vary
BrowserMatch "Opera" !no_gzip !dont-vary
BrowserMatch "Firefox/[0-3]\." gzip-only-text/html
BrowserMatch "Firefox/3\.[1-9]" !gzip-only-text/html
BrowserMatch "Chrome/2" gzip-only-text/html
BrowserMatch "Safari" gzip-only-text/html
BrowserMatch "Konqueror" gzip-only-text/html
</IfModule>
<IfModule mod_headers.c>
# Указываем прокси-серверам передавать заголовок User-Agent
# для корректного распознавания сжатия.
Header append Vary User-Agent env=!dont-vary
# Запрещаем кэширование на уровне прокси-сервера для всех
# файлов, для которых у нас выставлено сжатие.
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
Header append Cache-Control: "private, must-revalidate"
</FilesMatch>
</IfModule>
<IfModule mod_headers.c>
Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
</IfModule>
# Заперещаем открытие сайта в iframe, на стороннем ресурсе. Тем самым предотвращаем clickjacking.
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
<FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
Header unset X-Frame-Options
</FilesMatch>
</IfModule>
# Запрещаем IE автоматически определять тип документа.
# Т.к. это потенциально может привести к проблемам с безопасностью.
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"
</IfModule>
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" />
</settings>
</component>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/bitrix_default.iml" filepath="$PROJECT_DIR$/.idea/bitrix_default.iml" />
</modules>
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/bitrix-blank" vcs="Git" />
<mapping directory="$PROJECT_DIR$/local/template/main/bitrixclear" vcs="Git" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="c0a44824-4c92-430e-9b40-2694ceb7b213" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ComposerSettings">
<execution />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/bitrix-blank" />
</component>
<component name="ProjectId" id="208X8EduH4bGIlBQrnkJO7d6KGh" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="true" />
<property name="WebServerToolWindowPanel.toolwindow.highlight.mappings" value="true" />
<property name="WebServerToolWindowPanel.toolwindow.highlight.symlinks" value="true" />
<property name="WebServerToolWindowPanel.toolwindow.show.date" value="false" />
<property name="WebServerToolWindowPanel.toolwindow.show.permissions" value="false" />
<property name="WebServerToolWindowPanel.toolwindow.show.size" value="false" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/local" />
<recent name="$PROJECT_DIR$/local/templates/main" />
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/local/template/main" />
</key>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="c0a44824-4c92-430e-9b40-2694ceb7b213" name="Default Changelist" comment="" />
<created>1635427026976</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1635427026976</updated>
<workItem from="1635427028240" duration="4648000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
</project>
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$aMenuLinks = Array(
Array(
"О компании",
"/about/",
Array(),
Array(),
""
),
);
?>
<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
define("HIDE_SIDEBAR", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
\Bitrix\Main\Page\Asset::getInstance()->addCss(
'/local/templates/main/assets/css/404/style.css'
);
$APPLICATION->SetTitle("Страница не найдена");?>
<section class="section_404">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="box-404">
<div class="picture-404" style="background-image: url(/local/templates/main/assets/images/other-pages/404.svg);"></div>
<div class="title-404 h3">Такой страницы не существует</div>
<div class="description-404 b1">К сожалению, страница, которую вы запросили, не была найдена.
Вы можете перейти на главную страницу или воспользоваться каталогом товаров.
Если эта ошибка будет повторяться, обратитесь, пожалуйста, в службу поддержки.</div>
<div class="controls-404">
<a href="/catalog/" class="button">Перейти в каталог</a>
<a href="<?=SITE_DIR?>" class="button button_secondary">Вернуться на главную</a>
</div>
</div>
</div>
</div>
</div>
</section>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<html>
<head>
<title>Service is temporarily unavailable</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<center>
<h1>Service is temporarily unavailable</h1>
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
<?
$sSectionName = "Каталог";
?>
<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
/**
* @var CMain $APPLICATION
*/
$APPLICATION->SetTitle("Каталог");
//Прячем товары с 0 ценой
global $arrFilter;
$arrFilter = [
'!CATALOG_PRICE_'.BASE_PRICE_ID => 0
];
?>
<?
$APPLICATION->IncludeComponent(
"bitrix:catalog",
"main",
array(
"ACTION_VARIABLE" => "action",
"ADD_ELEMENT_CHAIN" => "Y",
"ADD_PICT_PROP" => "-",
"ADD_PROPERTIES_TO_BASKET" => "Y",
"ADD_SECTIONS_CHAIN" => "Y",
"ADD_SECTION_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"ALSO_BUY_ELEMENT_COUNT" => "4",
"ALSO_BUY_MIN_BUYES" => "1",
"BASKET_URL" => "/personal/cart/",
"BIG_DATA_RCM_TYPE" => "personal",
"CACHE_FILTER" => "Y",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"COMMON_ADD_TO_BASKET_ACTION" => "ADD",
"COMMON_SHOW_CLOSE_POPUP" => "N",
"COMPATIBLE_MODE" => "N",
"CONVERT_CURRENCY" => "N",
"DETAIL_ADD_DETAIL_TO_SLIDER" => "N",
"DETAIL_ADD_TO_BASKET_ACTION" => array(
0 => "BUY",
),
"DETAIL_ADD_TO_BASKET_ACTION_PRIMARY" => array(
0 => "BUY",
),
"DETAIL_BACKGROUND_IMAGE" => "-",
"DETAIL_BLOG_EMAIL_NOTIFY" => "N",
"DETAIL_BLOG_URL" => "catalog_comments",
"DETAIL_BLOG_USE" => "Y",
"DETAIL_BRAND_PROP_CODE" => array(
0 => "",
),
"DETAIL_BRAND_USE" => "Y",
"DETAIL_BROWSER_TITLE" => "-",
"DETAIL_CHECK_SECTION_ID_VARIABLE" => "N",
"DETAIL_DETAIL_PICTURE_MODE" => array(
0 => "POPUP",
1 => "MAGNIFIER",
),
"DETAIL_DISPLAY_NAME" => "N",
"DETAIL_DISPLAY_PREVIEW_TEXT_MODE" => "E",
"DETAIL_FB_APP_ID" => "",
"DETAIL_FB_USE" => "Y",
"DETAIL_IMAGE_RESOLUTION" => "16by9",
"DETAIL_MAIN_BLOCK_OFFERS_PROPERTY_CODE" => "",
"DETAIL_MAIN_BLOCK_PROPERTY_CODE" => "",
"DETAIL_META_DESCRIPTION" => "-",
"DETAIL_META_KEYWORDS" => "-",
"DETAIL_OFFERS_FIELD_CODE" => array(
),
"DETAIL_OFFERS_PROPERTY_CODE" => array(
),
"DETAIL_PRODUCT_INFO_BLOCK_ORDER" => "sku,props",
"DETAIL_PRODUCT_PAY_BLOCK_ORDER" => "rating,price,priceRanges,quantityLimit,quantity,buttons",
"DETAIL_PROPERTY_CODE" => array(
),
"DETAIL_SET_CANONICAL_URL" => "N",
"DETAIL_SET_VIEWED_IN_COMPONENT" => "N",
"DETAIL_SHOW_POPULAR" => "Y",
"DETAIL_SHOW_SLIDER" => "N",
"DETAIL_SHOW_VIEWED" => "Y",
"DETAIL_STRICT_SECTION_CHECK" => "N",
"DETAIL_USE_COMMENTS" => "Y",
"DETAIL_USE_VOTE_RATING" => "Y",
"DETAIL_VK_USE" => "N",
"DETAIL_VOTE_DISPLAY_AS_RATING" => "rating",
"DISABLE_INIT_JS_IN_COMPONENT" => "N",
"DISCOUNT_PERCENT_POSITION" => "bottom-right",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"ELEMENT_SORT_FIELD" => 'SORT',
"ELEMENT_SORT_FIELD2" => 'CATALOG_PRICE_'.BASE_PRICE_ID,
"ELEMENT_SORT_ORDER" => "asc",
"ELEMENT_SORT_ORDER2" => "desc",
"FIELDS" => array(
),
"COMPARE_FIELD_CODE"=>[
],
"FILTER_HIDE_ON_MOBILE" => "N",
"FILTER_NAME" => "arrFilter",
"FILTER_VIEW_MODE" => "VERTICAL",
"GIFTS_DETAIL_BLOCK_TITLE" => "Выберите один из подарков",
"GIFTS_DETAIL_HIDE_BLOCK_TITLE" => "N",
"GIFTS_DETAIL_PAGE_ELEMENT_COUNT" => "4",
"GIFTS_DETAIL_TEXT_LABEL_GIFT" => "Подарок",
"GIFTS_MAIN_PRODUCT_DETAIL_BLOCK_TITLE" => "Выберите один из товаров, чтобы получить подарок",
"GIFTS_MAIN_PRODUCT_DETAIL_HIDE_BLOCK_TITLE" => "N",
"GIFTS_MAIN_PRODUCT_DETAIL_PAGE_ELEMENT_COUNT" => "4",
"GIFTS_MESS_BTN_BUY" => "Выбрать",
"GIFTS_SECTION_LIST_BLOCK_TITLE" => "Подарки к товарам этого раздела",
"GIFTS_SECTION_LIST_HIDE_BLOCK_TITLE" => "N",
"GIFTS_SECTION_LIST_PAGE_ELEMENT_COUNT" => "4",
"GIFTS_SECTION_LIST_TEXT_LABEL_GIFT" => "Подарок",
"GIFTS_SHOW_DISCOUNT_PERCENT" => "Y",
"GIFTS_SHOW_IMAGE" => "Y",
"GIFTS_SHOW_NAME" => "Y",
"GIFTS_SHOW_OLD_PRICE" => "Y",
"HIDE_NOT_AVAILABLE" => "L",
"HIDE_NOT_AVAILABLE_OFFERS" => "L",
"IBLOCK_ID" => IBLOCK_CATALOG,
"IBLOCK_TYPE" => IBLOCK_TYPE_CATALOG,
"INCLUDE_SUBSECTIONS" => "Y",
"INSTANT_RELOAD" => "N",
"LABEL_PROP" => array(),
"LABEL_PROP_MOBILE" => "",
"LABEL_PROP_POSITION" => "top-left",
"LAZY_LOAD" => "N",
"LINE_ELEMENT_COUNT" => "3",
"LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
"LINK_IBLOCK_ID" => "",
"LINK_IBLOCK_TYPE" => "",
"LINK_PROPERTY_SID" => "",
"LIST_BROWSER_TITLE" => "-",
"LIST_ENLARGE_PRODUCT" => "STRICT",
"LIST_META_DESCRIPTION" => "-",
"LIST_META_KEYWORDS" => "-",
"LIST_OFFERS_FIELD_CODE" => array(
),
"LIST_OFFERS_LIMIT" => "0",
"LIST_OFFERS_PROPERTY_CODE" => array(
),
"LIST_PRODUCT_BLOCKS_ORDER" => "price,props,sku,quantityLimit,quantity,buttons",
"LIST_PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]",
"LIST_PROPERTY_CODE" => array(
),
"COMPARE_PROPERTY_CODE" => array(
),
"LIST_PROPERTY_CODE_MOBILE" => "",
"LIST_SHOW_SLIDER" => "Y",
"LIST_SLIDER_INTERVAL" => "3000",
"LIST_SLIDER_PROGRESS" => "N",
"LOAD_ON_SCROLL" => "N",
"MAIN_TITLE" => "Наличие на складах",
"MESSAGE_404" => "",
"MESS_BTN_ADD_TO_BASKET" => "В корзину",
"MESS_BTN_BUY" => "Купить",
"MESS_BTN_COMPARE" => "Сравнение",
"MESS_BTN_DETAIL" => "Подробнее",
"MESS_BTN_SUBSCRIBE" => "Подписаться",
"MESS_COMMENTS_TAB" => "Комментарии",
"MESS_DESCRIPTION_TAB" => "Описание",
"MESS_NOT_AVAILABLE" => "Нет в наличии",
"MESS_PRICE_RANGES_TITLE" => "Цены",
"MESS_PROPERTIES_TAB" => "Характеристики",
"MIN_AMOUNT" => "10",
"OFFERS_CART_PROPERTIES" => array(
),
"OFFERS_SORT_FIELD" => 'CATALOG_PRICE_'.BASE_PRICE_ID,
"OFFERS_SORT_ORDER" => "asc",
"OFFER_ADD_PICT_PROP" => "-",
"OFFER_TREE_PROPS" => array(
),
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "nav",
"PAGER_TITLE" => "Товары",
"PAGE_ELEMENT_COUNT" => "9",
"PARTIAL_PRODUCT_PROPERTIES" => "N",
"PRICE_CODE" => array(
0 => "BASE",
),
"PRICE_VAT_INCLUDE" => "Y",
"PRICE_VAT_SHOW_VALUE" => "N",
"PRODUCT_DISPLAY_MODE" => "Y",
"PRODUCT_ID_VARIABLE" => "id",
"PRODUCT_PROPERTIES" => "",
"PRODUCT_PROPS_VARIABLE" => "prop",
"PRODUCT_QUANTITY_VARIABLE" => "quantity",
"PRODUCT_SUBSCRIPTION" => "Y",
"QUANTITY_FLOAT" => "N",
"SEARCH_CHECK_DATES" => "Y",
"SEARCH_NO_WORD_LOGIC" => "Y",
"SEARCH_PAGE_RESULT_COUNT" => "50",
"SEARCH_RESTART" => "N",
"SEARCH_USE_LANGUAGE_GUESS" => "Y",
"SECTIONS_HIDE_SECTION_NAME" => "N",
"SECTIONS_SHOW_PARENT_NAME" => "N",
"SECTIONS_VIEW_MODE" => "TILE",
"SECTION_ADD_TO_BASKET_ACTION" => "ADD",
"SECTION_BACKGROUND_IMAGE" => "-",
"SECTION_COUNT_ELEMENTS" => "N",
"SECTION_ID_VARIABLE" => "SECTION_ID",
"SECTION_TOP_DEPTH" => "1",
"SEF_FOLDER" => "/catalog/",
"SEF_MODE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_STATUS_404" => "Y",
"SET_TITLE" => "Y",
"SHOW_404" => "Y",
"SHOW_DEACTIVATED" => "N",
"SHOW_DISCOUNT_PERCENT" => "Y",
"SHOW_EMPTY_STORE" => "Y",
"SHOW_GENERAL_STORE_INFORMATION" => "N",
"SHOW_MAX_QUANTITY" => "N",
"SHOW_OLD_PRICE" => "Y",
"SHOW_PRICE_COUNT" => "1",
"SHOW_TOP_ELEMENTS" => "N",
"SIDEBAR_DETAIL_POSITION" => "right",
"SIDEBAR_DETAIL_SHOW" => "Y",
"SIDEBAR_PATH" => "/catalog/sidebar.php",
"SIDEBAR_SECTION_POSITION" => "right",
"SIDEBAR_SECTION_SHOW" => "Y",
"STORES" => array(
0 => "",
1 => "",
),
"STORE_PATH" => "/store/#store_id#",
"TEMPLATE_THEME" => "site",
"TOP_ADD_TO_BASKET_ACTION" => "ADD",
"USER_CONSENT" => "N",
"USER_CONSENT_ID" => "0",
"USER_CONSENT_IS_CHECKED" => "Y",
"USER_CONSENT_IS_LOADED" => "N",
"USER_FIELDS" => array(
0 => "",
1 => "",
),
"USE_ALSO_BUY" => "Y",
"USE_BIG_DATA" => "Y",
"USE_COMMON_SETTINGS_BASKET_POPUP" => "N",
"USE_COMPARE" => "Y",
"USE_ELEMENT_COUNTER" => "Y",
"USE_ENHANCED_ECOMMERCE" => "N",
"USE_FILTER" => "Y",
"USE_GIFTS_DETAIL" => "Y",
"USE_GIFTS_MAIN_PR_SECTION_LIST" => "Y",
"USE_GIFTS_SECTION" => "Y",
"USE_MAIN_ELEMENT_SECTION" => "N",
"USE_MIN_AMOUNT" => "N",
"USE_PRICE_COUNT" => "N",
"USE_PRODUCT_QUANTITY" => "Y",
"USE_SALE_BESTSELLERS" => "Y",
"USE_STORE" => "Y",
"COMPONENT_TEMPLATE" => "main",
"SEF_URL_TEMPLATES" => array(
"sections" => "",
"section" => "#SECTION_CODE_PATH#/",
"element" => "#ELEMENT_CODE#/",
"compare" => "compare/",
"smart_filter" => "#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/",
)
),
false
);
?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>
{
"require-dev": {
"kint-php/kint": "^3.3"
},
"require": {
"ext-mbstring": "*"
},
"autoload": {
"psr-4": {
"UsStudio\\": "lib/usstudio/"
}
}
}
<?php
$_SERVER['DOCUMENT_ROOT'] = __DIR__ . '/../../bitrix-blank';
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
define('STOP_STATISTICS', true);
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
define('BX_NO_ACCELERATOR_RESET', true);
define('PERFMON_STOP', true);
@set_time_limit(0);
@ignore_user_abort(true);
require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
<?php
require_once __DIR__ . '/_header.php';
CAgent::CheckAgents();
define('BX_CRONTAB_SUPPORT', true);
define('BX_CRONTAB', true);
CEvent::CheckEvents();
if (CModule::IncludeModule('subscribe'))
{
$cPosting = new CPosting;
$cPosting->AutoSend();
}
<?php
require_once __DIR__ . '/_header.php';
@mb_http_output('utf-8');
@mb_internal_encoding('utf-8');
@mb_regex_encoding('utf-8');
$DBDebug = true;
function optimaze($filter)
{
global $DB;
$res = $DB->Query("SHOW TABLES LIKE '$filter%'");
if ($row = $res->Fetch())
{
$keys = array_keys($row);
$col = $keys[0];
do
{
$tbl = $row[$col];
$DB->Query("CHECK TABLE `$tbl`");
$DB->Query("OPTIMIZE TABLE `$tbl`");
} while($row = $res->Fetch());
}
}
optimaze("b_");
\Bitrix\Main\Config\Option::set('main', 'LAST_DB_OPTIMIZATION_TIME', time());
<?php
define('SITE_MAIN_TEMPLATE_PATH', '/home/bitrix/ext_www/daichi.usdev.ru/local/templates/main');
/**
* Константы с идентификаторами инфоблов и их секций
*/
/**
* Инфоблок каталога
*/
define('IBLOCK_CATALOG', 17);
define('IBLOCK_TYPE_CATALOG', 'CRM_PRODUCT_CATALOG');
/**
* Google Recaptcha серверный ключ
*/
define('GOOGLE_RECAPTCHA_SERVER_KEY', '');
/**
* Placeholder для полей мобильного телефона
*/
define('MOBILE_PLACEHOLDER', '+7 ___ ___ __ __');
/**
* ID Базовой цены
*/
define('BASE_PRICE_ID', '1');
<?
use Bitrix\Main\Loader;
use Bitrix\Main\Diag\Debug;
use Bitrix\Main;
use Bitrix\Sale;
AddEventHandler("main", "OnBeforeUserAdd", Array("UserRegister", "OnBeforeUserRegisterHandler"));
class UserRegister
{
//для регистрации, когда фио в одном поле
function OnBeforeUserRegisterHandler(&$arFields)
{
$login = $arFields['LOGIN'];
$data = preg_split('/\s+/', $login);
$name = $data[1] ? $data[1] : '';
$surname = $data[0] ? $data[0] : '';
$secondName = $data[2] ? $data[2] : '';
$arFields['NAME'] = $name;
$arFields['LAST_NAME'] = $surname;
$arFields['SECOND_NAME'] = $secondName;
if(!empty($arFields['PERSONAL_PHONE']) && $arFields['LOGIN'] != $arFields['PERSONAL_PHONE']) {
$arFields['LOGIN'] = $arFields['PERSONAL_PHONE'];
}
return $arFields;
}
function OnAfterUserRegisterHandler(&$arFields)
{
if($arFields["USER_ID"]>0)
{
if(SITE_ID=="pb")
{
$login = $arFields['LOGIN'];
$data = preg_split('/\s+/', $login);
$name = $data[1] ? $data[1] : '';
$surname = $data[0] ? $data[0] : '';
$secondName = $data[2] ? $data[2] : '';
$arFields['NAME'] = $name;
$arFields['LAST_NAME'] = $surname;
$arFields['SECOND_NAME'] = $secondName;
}
}
return $arFields;
}
}
<?php
/**
* Вывод значения переменной любого типа (str|array) в консоль браузера
* @param $debug_data
*/
function console_log($debug_data)
{
$js = is_array($debug_data) ? json_encode($debug_data) : '"' . $debug_data . '"';
?>
<script type="text/javascript">console.log(<?php echo $js?>)</script><?php
}
/**
* print_r обёрнутая тегом pre
* @param $debug_data
*/
function pre($debug_data, $die = true)
{
global $USER;
if ($USER->IsAdmin()) {
$GLOBALS['APPLICATION']->RestartBuffer();
if ($die === true && ob_get_contents()) {
while (ob_get_contents()) {
ob_end_clean();
}
}
?><? d($debug_data) ?><?php
if ($die === true) {
die;
}
}
}
function getCache($cacheId)
{
$cache = Bitrix\Main\Data\Cache::createInstance();
if ($cache->initCache(72000, $cacheId))
return $result = $cache->getVars();
return false;
}
function addCache($cacheId, $array)
{
$cache = Bitrix\Main\Data\Cache::createInstance();
$cache->initCache(72000, $cacheId);
$cache->startDataCache();
$cache->endDataCache($array);
return true;
}
function clearCache($cacheId)
{
$cache = \Bitrix\Main\Application::getInstance()->getManagedCache();
$cache->clean($cacheId);
}
<?php
use Bitrix\Main\Diag\Debug;
//Подключаем модуль инфоблоков
if (\Bitrix\Main\Loader::includeModule('iblock'))
{
/**
* section max price
*/
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
"iblock",
"OnTemplateGetFunctionClass",
array("FunctionGetMaxPrice", "eventHandler")
);
class FunctionGetMaxPrice extends \Bitrix\Iblock\Template\Functions\FunctionBase
{
//Обработчик события на вход получает имя требуемой функции
//парсер её нашел в строке SEO
public static function eventHandler($event)
{
$parameters = $event->getParameters();
$functionName = $parameters[0];
if ($functionName === "get_max_price")
{
//обработчик должен вернуть SUCCESS и имя класса
//который будет отвечать за вычисления
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
"\\FunctionGetMaxPrice"
);
}
}
// Метод позволяет обработать параметры - а заодно перехватить данные Entity, в данном случае это может быть инфоблок, раздел или элемент
public function onPrepareParameters(\Bitrix\Iblock\Template\Entity\Base $entity, array $parameters)
{
$arguments = array();
// Перехватываем id элемента, чтобы можно было обращаться к его свойствам
$this->data['id'] = $entity->getId();
/** @var \Bitrix\Iblock\Template\NodeBase $parameter */
foreach ($parameters as $parameter)
{
$arguments[] = $parameter->process($entity);
}
return $arguments;
}
//собственно функция выполняющая "магию"
public function calculate($parameters)
{
$result = $this->parametersToArray($parameters);
/*$Sections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => IBLOCK_CATALOG, '=CODE' => $parameters[0]));
if ($arSection = $Sections->Fetch())
{
$id = $arSection['ID'];
}*/
$id = $this->data['id'];
$DBres = CIBlockElement::GetList(
array("CATALOG_PRICE_1" => "DESC"),
array("IBLOCK_ID" => IBLOCK_CATALOG, "SECTION_ID"=>$id, "ACTIVE"=>"Y", 'INCLUDE_SUBSECTIONS'=>'Y'),
false,
array(/*"nPageSize"=>1*/),
array()
);
while($ob_price_min = $DBres->GetNextElement())
{
$arPrices = $ob_price_min->GetFields();
$min_price = (int) $arPrices['CATALOG_PRICE_1'];
break;
}
unset($DBres);
return $min_price;
}
}
/**
* section min price
*/
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
"iblock",
"OnTemplateGetFunctionClass",
array("FunctionGetMinPrice", "eventHandler")
);
class FunctionGetMinPrice extends \Bitrix\Iblock\Template\Functions\FunctionBase
{
//Обработчик события на вход получает имя требуемой функции
//парсер её нашел в строке SEO
public static function eventHandler($event)
{
$parameters = $event->getParameters();
$functionName = $parameters[0];
if ($functionName === "get_min_price")
{
//обработчик должен вернуть SUCCESS и имя класса
//который будет отвечать за вычисления
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
"\\FunctionGetMinPrice"
);
}
}
// Метод позволяет обработать параметры - а заодно перехватить данные Entity, в данном случае это может быть инфоблок, раздел или элемент
public function onPrepareParameters(\Bitrix\Iblock\Template\Entity\Base $entity, array $parameters)
{
$arguments = array();
// Перехватываем id элемента, чтобы можно было обращаться к его свойствам
$this->data['id'] = $entity->getId();
/** @var \Bitrix\Iblock\Template\NodeBase $parameter */
foreach ($parameters as $parameter)
{
$arguments[] = $parameter->process($entity);
}
return $arguments;
}
//собственно функция выполняющая "магию"
public function calculate($parameters)
{
$result = $this->parametersToArray($parameters);
/*$Sections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => IBLOCK_CATALOG, '=CODE' => $parameters[0]));
if ($arSection = $Sections->Fetch())
{
$id = $arSection['ID'];
}*/
$id = $this->data['id'];
$DBres = CIBlockElement::GetList(
array("CATALOG_PRICE_1" => "ASC"),
array("IBLOCK_ID" => IBLOCK_CATALOG, "SECTION_ID"=>$id, "ACTIVE"=>"Y", 'INCLUDE_SUBSECTIONS'=>'Y'),
false,
array(/*"nPageSize"=>1*/),
array()
);
while($ob_price_min = $DBres->GetNextElement())
{
$arPrices = $ob_price_min->GetFields();
$min_price = (int) $arPrices['CATALOG_PRICE_1'];
if($min_price>0) break;
}
unset($DBres);
return $min_price;
}
}
/**
* get count
*/
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
"iblock",
"OnTemplateGetFunctionClass",
array("FunctionGetCount", "eventHandler")
);
class FunctionGetCount extends \Bitrix\Iblock\Template\Functions\FunctionBase
{
//Обработчик события на вход получает имя требуемой функции
//парсер её нашел в строке SEO
public static function eventHandler($event)
{
$parameters = $event->getParameters();
$functionName = $parameters[0];
if ($functionName === "get_count")
{
//обработчик должен вернуть SUCCESS и имя класса
//который будет отвечать за вычисления
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
"\\FunctionGetCount"
);
}
}
// Метод позволяет обработать параметры - а заодно перехватить данные Entity, в данном случае это может быть инфоблок, раздел или элемент
public function onPrepareParameters(\Bitrix\Iblock\Template\Entity\Base $entity, array $parameters)
{
$arguments = array();
// Перехватываем id элемента, чтобы можно было обращаться к его свойствам
$this->data['id'] = $entity->getId();
/** @var \Bitrix\Iblock\Template\NodeBase $parameter */
foreach ($parameters as $parameter)
{
$arguments[] = $parameter->process($entity);
}
return $arguments;
}
//собственно функция выполняющая "магию"
public function calculate($parameters)
{
$result = $this->parametersToArray($parameters);
/*$Sections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => IBLOCK_CATALOG, '=CODE' => $parameters[0]));
if ($arSection = $Sections->Fetch())
{
$id = $arSection['ID'];
}*/
$id = $this->data['id'];
$DBres = CIBlockElement::GetList(
array("CATALOG_PRICE_1" => "ASC"),
array("IBLOCK_ID" => IBLOCK_CATALOG, "SECTION_ID"=>$id, "ACTIVE"=>"Y", 'INCLUDE_SUBSECTIONS'=>'Y'),
false,
array(/*"nPageSize"=>1*/),
array()
);
$count = 0;
while($ob_price_min = $DBres->GetNextElement())
{
$count++;
}
unset($DBres);
return $count;
}
}
}
<?php
// composer
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/vendor/autoload.php';
include 'include/constants.php';
include 'include/functions.php';
include 'include/events.php';
include 'include/seoTemplates.php';
<?php
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Application;
use Bitrix\Main\Diag\Debug;
use Bitrix\Main\Web\Cookie;
global $APPLICATION;
global $USER;
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
$id = $request->getPost('id');
$domain = strtok($context->getServer()->getHttpHost(), ':');
if(!$USER->IsAuthorized()) {
$arFavorites = unserialize(CMain::get_cookie('favorites'));
if(!in_array($id, $arFavorites))
{
$arFavorites[] = $id;
$result = ['act' => 'add']; // Действие
}
else {
$key = array_search($id, $arFavorites);
unset($arFavorites[$key]);
$result = ['act' => 'delete']; // Действие
}
$cookie = new Cookie("favorites", serialize($arFavorites), time() + 60*60*24*60);
$cookie->setDomain($domain);
$cookie->setHttpOnly(false);
$context->getResponse()->addCookie($cookie);
$context->getResponse()->flush(json_encode($result));
} else {
$idUser = $USER->GetID();
$rsUser = CUser::GetByID($idUser);
$arUser = $rsUser->Fetch();
$arFavorites = $arUser['UF_FAVORITE'];
if(!in_array($id, $arFavorites))
{
$arFavorites[] = $id;
$result = ['act' => 'add']; // Действие
}
else {
$key = array_search($id, $arFavorites);
unset($arFavorites[$key]);
$result = ['act' => 'delete']; // Действие
}
$user = new CUser;
$fields = Array(
"UF_FAVORITE" => $arFavorites,
);
$user->Update($idUser, $fields);
$context->getResponse()->flush(json_encode($result));
}
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
die();
}
use Bitrix\Main\Localization\Loc;
Bitrix\Main\Localization\Loc::loadMessages(__FILE__);
$arTemplate = Array(
"NAME" => Loc::getMessage('T_DESC_NAME'),
"DESCRIPTION" => Loc::getMessage('T_DESC_DESC')
);
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
die();
}
/** @global $APPLICATION */
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Page\Asset;
Loc::loadMessages(__FILE__);
Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/custom.js');
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/css/main.css');
Asset::getInstance()->addString('<link rel="icon" type="image/x-icon" href="' . SITE_TEMPLATE_PATH . '/favicon.ico"/>');
Asset::getInstance()->addString('<meta name="viewport" content="width=device-width, initial-scale=1">');
?><!doctype html>
<html xml:lang="<?php echo LANGUAGE_ID ?>" lang="<?php echo LANGUAGE_ID ?>">
<head>
<meta charset="UTF-8"/>
<title><?php echo $APPLICATION->ShowTitle() ?></title>
<?php $APPLICATION->ShowHead(); ?>
<? $APPLICATION->ShowMeta("description");?>
</head>
<body>
<div id="panel"><?php $APPLICATION->ShowPanel() ?></div>
<?
// Меню
$APPLICATION->IncludeComponent(
"bitrix:menu",
"main",
array(
"ALLOW_MULTI_SELECT" => "N",
"CHILD_MENU_TYPE" => "top",
"DELAY" => "N",
"MAX_LEVEL" => "1",
"MENU_CACHE_GET_VARS" => array(""),
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_TYPE" => "N",
"MENU_CACHE_USE_GROUPS" => "Y",
"ROOT_MENU_TYPE" => "top",
"USE_EXT" => "Y"
)
); ?>
<?
//Лого
$APPLICATION->IncludeComponent("bitrix:main.include", "", array("AREA_FILE_SHOW" => "file", "PATH" => SITE_TEMPLATE_PATH."/include/header/logo.php"), false);?>
<?
//Корзина
$APPLICATION->IncludeComponent(
"bitrix:sale.basket.basket.small",
"",
array(
"HIDE_ON_BASKET_PAGES" => "Y",
"PATH_TO_AUTHORIZE" => "",
"PATH_TO_BASKET" => SITE_DIR . "personal/cart/",
"PATH_TO_ORDER" => SITE_DIR . "personal/order/make/",
"PATH_TO_PERSONAL" => SITE_DIR . "personal/",
"PATH_TO_PROFILE" => SITE_DIR . "personal/",
"PATH_TO_REGISTER" => SITE_DIR . "login/",
"POSITION_FIXED" => "N",
"SHOW_AUTHOR" => "N",
"SHOW_EMPTY_VALUES" => "Y",
"SHOW_NUM_PRODUCTS" => "Y",
"SHOW_PERSONAL_LINK" => "Y",
"SHOW_PRODUCTS" => "N",
"SHOW_REGISTRATION" => "Y",
"SHOW_TOTAL_PRICE" => "Y"
)
); ?>
<?
//Хлебные крошки
if(
$APPLICATION->GetCurPage(true) !== '/index.php'
&& $APPLICATION->GetCurPage(true) !== '/404.php'
&& !$APPLICATION->GetProperty("hideBreadCrumbs")){
$APPLICATION->IncludeComponent(
"bitrix:breadcrumb",
"main",
Array(
"PATH" => "",
"SITE_ID" => "pb",
"START_FROM" => "0"
)
);
}
?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
?>
<?
?>
<?
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
/* Addition of the goods in a basket at addition in a basket */
if($_POST["ajaxaddid"] && $_POST["ajaxaction"] == 'add'){
$quantity = 1;
if ($_POST["ajaxbasketcount"]) {
$quantity = $_POST["ajaxbasketcount"];
}
$weight;
if ($_POST["ajaxbasketweight"] && isset($_POST["ajaxbasketweight"])){
$weight = array(
array(
"NAME" => "Вес",
"CODE" => "WEIGHT",
"VALUE" => $_POST["ajaxbasketweight"],
)
);
} else {
$weight = array();
}
//$id_cart = Add2BasketByProductID($_POST["ajaxaddid"], $quantity, array(), array( $weight );
$id_cart = Add2BasketByProductID($_POST["ajaxaddid"], $quantity, array(), $weight);
if ($_POST["addtocart"] == 'true') {
echo $id_cart; exit;
}
}
//добавление подарка в корзину
if(isset($_POST["ajaxaddid"]) && isset($_POST["actiongift"]) && $_POST["actiongift"] == 'ADD2BASKET'){
$quantity = 1;
if ($_POST["ajaxbasketcount"]) {
$quantity = $_POST["ajaxbasketcount"];
}
$weight;
if ($_POST["ajaxbasketweight"] && isset($_POST["ajaxbasketweight"])){
$weight = array(
array(
"NAME" => "Вес",
"CODE" => "WEIGHT",
"VALUE" => $_POST["ajaxbasketweight"],
)
);
} else {
$weight = array();
}
//$id_cart = Add2BasketByProductID($_POST["ajaxaddid"], $quantity, array(), array( $weight );
$id_cart = Add2BasketByProductID($_POST["ajaxaddid"], $quantity, array(), $weight);
if ($_POST["addtocart"] == 'true') {
echo $id_cart; exit;
}
}
/* Goods removal at pressing on to remove in a small basket */
if($_POST["ajaxdeleteid"] && $_POST["ajaxaction"] == 'delete'){
CSaleBasket::Delete($_POST["ajaxdeleteid"]);
// $ex = $APPLICATION->GetException();
// echo $ex->GetString();
}
/* Changes of quantity of the goods after receipt of inquiry from a small basket */
if($_POST["ajaxbasketcountid"] && $_POST["ajaxbasketcount"] && $_POST["ajaxaction"] == 'update'){
$arFields = array(
"QUANTITY" => $_POST["ajaxbasketcount"]
);
CSaleBasket::Update($_POST["ajaxbasketcountid"], $arFields);
?><?
}
?>
<?/*Кнопка очистка корзины?>
<form action="" method="POST">
<input type="submit" value="Очистить корзину" name="BasketDelete">
</form>
<?*/?>
<?
$APPLICATION->IncludeComponent(
"bitrix:sale.basket.basket.small",
"smallbasker",
Array(
"PATH_TO_BASKET" => "/personal/cart/",
"PATH_TO_ORDER" => "/personal/order/",
"CACHE_TYPE" => "N",
)
);
?>
<?php
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
$curCityDB = \Bitrix\Iblock\Elements\ElementCityTable::getList([
'select' => ['ID', 'NAME', 'PHONE_'=>'PHONE', 'ADDRESS_'=>'ADDRESS','SCLAD'],
'filter' => [
'=ACTIVE' => 'Y',
'NAME'=>$_SESSION['city']
],
// "cache" => ["ttl" => 3600]
])->fetchAll();
if(empty($curCityDB))$curCityDB = \Bitrix\Iblock\Elements\ElementCityTable::getList([
'select' => ['ID', 'NAME', 'PHONE_'=>'PHONE', 'ADDRESS_'=>'ADDRESS','SCLAD'],
'filter' => [
'=ACTIVE' => 'Y',
'NAME'=>'Москва'
],
// "cache" => ["ttl" => 3600]
])->fetchAll();
global $curCity;
foreach ($curCityDB as $element) {
$curCity['NAME'] = $element['NAME'];
$curCity['PHONE'] = $element['PHONE_VALUE'];
$curCity['ADDRESS'] = $element['ADDRESS_VALUE'];
if($element['IBLOCK_ELEMENTS_ELEMENT_CITY_SCLAD_VALUE'])$curCity['STORE'][] = intval($element['IBLOCK_ELEMENTS_ELEMENT_CITY_SCLAD_VALUE']);
// $arCity[$element['NAME']] = $element['PHONE_VALUE'];
}
<?php
//include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Loader;
Loader::includeModule('sale');
$cartCount = CSaleBasket::GetList(
false,
array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID,"ORDER_ID" => "NULL"),
false,
false,
array("ID" ))->SelectedRowsCount();
<a href="/" class="logo">
<img class="logo_img" src="/local/templates/main/assets/images/icons/daichi-market-logo.svg" alt="logo">
</a>
В официальном интернет-магазине Daichi Market вы можете найти широкий ассортимент <a href="https://daichi.market/catalog/bytovye-split-sistemy/nastennye-split-sistemy/">настенных кондиционеров</a> для <a href="https://daichi.market/catalog/areas/">различных областей применения.</a><br>
Купить кондиционеры в Даичи Маркете - это покупка у официального поставщика оборудования в России известных торговых марок <a href="https://daichi.market/catalog/bytovye-split-sistemy/filter/brand_ib-is-daikin/apply/">Daikin</a>, Midea, Kentatsu, Bosch, <a href="https://daichi.market/catalog/bytovye-split-sistemy/filter/brand_ib-is-daichi/apply/">Daichi</a>, Axioma.&nbsp;
В официальном интернет-магазине Daichi Market вы можете найти широкий ассортимент <a href="https://daichi.market/catalog/bytovye-split-sistemy/nastennye-split-sistemy/">настенных кондиционеров</a> для <a href="https://daichi.market/catalog/areas/">различных областей применения.</a><br>
Купить кондиционеры в Даичи Маркете - это покупка у официального поставщика оборудования в России известных торговых марок <a href="https://daichi.market/catalog/bytovye-split-sistemy/filter/brand_ib-is-daikin/apply/">Daikin</a>, Midea, Kentatsu, Bosch, <a href="https://daichi.market/catalog/bytovye-split-sistemy/filter/brand_ib-is-daichi/apply/">Daichi</a>, Axioma.&nbsp;
Интернет-магазин Daichi Market занимается подбором, поставкой и установкой систем кондиционирования. Специалисты нашего инженерного центра имеют большой опыт монтажа и эксплуатации климатической техники, что обеспечит качество и гарантию на любые работы.&nbsp;<br>
Мы поможем Вам с решением любых задач по организации климата в вашем доме.&nbsp;
Установка (монтаж) кондиционера это один из важнейших этапов создания комфортного климата в вашем доме.&nbsp;По статистике более 80% неисправностей в первый год работы кондиционера&nbsp;возникает в связи с низким качеством материалов, использованных при монтаже, либо ошибками специалистов.&nbsp;<br>
<br>
Специалисты инженерного&nbsp;центра компании ДАИЧИ, благодаря более чем 20 летнему опыту работы, обеспечат качественное проведение работ при монтаже любого кондиционера. Самое главное, это заранее уточнить и определиться с типом монтажа и его стоимостью. Для этого вы можете заказать услугу Замера, благодаря которой специалист инженерного центра ДАИЧИ&nbsp; на месте ознакомиться с вашими пожеланиями, условиями, характеристиками помещения и произведет точный расчет стоимости монтажа.&nbsp;<br>
<br>
* Замер - услуга платная, но при заказе включается в стоимость монтажа.&nbsp;&nbsp;<br>
<?php
$MESS['T_DESC_NAME'] = 'Template name';
$MESS['T_DESC_DESC'] = 'Description template';
<?php
$MESS['T_DESC_NAME'] = 'Название шаблона';
$MESS['T_DESC_DESC'] = 'Описание шаблона';
<?php
$MESS['MODE'] = 'время работы';
<?
$sSectionName = "Моя корзина";
$arDirProperties = array(
);
?>
<?
define("HIDE_SIDEBAR", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Корзина");
?><?$APPLICATION->IncludeComponent("bitrix:sale.basket.basket", "bootstrap_v4", array(
"COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",
"COLUMNS_LIST" => array(
0 => "NAME",
1 => "DISCOUNT",
2 => "PRICE",
3 => "QUANTITY",
4 => "SUM",
5 => "PROPS",
6 => "DELETE",
7 => "DELAY",
),
"AJAX_MODE" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"PATH_TO_ORDER" => "/personal/order/make/",
"HIDE_COUPON" => "N",
"QUANTITY_FLOAT" => "N",
"PRICE_VAT_SHOW_VALUE" => "Y",
"TEMPLATE_THEME" => "site",
"SET_TITLE" => "Y",
"AJAX_OPTION_ADDITIONAL" => "",
"OFFERS_PROPS" => array(
0 => "SIZES_SHOES",
1 => "SIZES_CLOTHES",
2 => "COLOR_REF",
),
),
false
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Персональный раздел");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.personal.section",
"bootstrap_v4",
Array(
"ACCOUNT_PAYMENT_ELIMINATED_PAY_SYSTEMS" => array("0"),
"ACCOUNT_PAYMENT_PERSON_TYPE" => "1",
"ACCOUNT_PAYMENT_SELL_SHOW_FIXED_VALUES" => "Y",
"ACCOUNT_PAYMENT_SELL_TOTAL" => array("100","200","500","1000","5000",""),
"ACCOUNT_PAYMENT_SELL_USER_INPUT" => "Y",
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "3600",
"CACHE_TYPE" => "A",
"CHECK_RIGHTS_PRIVATE" => "N",
"COMPATIBLE_LOCATION_MODE_PROFILE" => "N",
"CUSTOM_PAGES" => "",
"CUSTOM_SELECT_PROPS" => array(""),
"NAV_TEMPLATE" => "",
"ORDER_HISTORIC_STATUSES" => array("F"),
"PATH_TO_BASKET" => "/personal/cart",
"PATH_TO_CATALOG" => "/catalog/",
"PATH_TO_CONTACT" => "/about/contacts",
"PATH_TO_PAYMENT" => "/personal/order/payment/",
"PER_PAGE" => "20",
"PROP_1" => array(),
"PROP_2" => array(),
"SAVE_IN_SESSION" => "Y",
"SEF_FOLDER" => "/personal/",
"SEF_MODE" => "Y",
"SEF_URL_TEMPLATES" => array(
"account"=>"account/",
"index"=>"index.php",
"order_cancel"=>"cancel/#ID#",
"order_detail"=>"orders/#ID#",
"orders"=>"orders/",
"private"=>"private/",
"profile"=>"profiles/",
"profile_detail"=>"profiles/#ID#",
"subscribe"=>"subscribe/"
),
"SEND_INFO_PRIVATE" => "N",
"SET_TITLE" => "Y",
"SHOW_ACCOUNT_COMPONENT" => "Y",
"SHOW_ACCOUNT_PAGE" => "Y",
"SHOW_ACCOUNT_PAY_COMPONENT" => "Y",
"SHOW_BASKET_PAGE" => "Y",
"SHOW_CONTACT_PAGE" => "Y",
"SHOW_ORDER_PAGE" => "Y",
"SHOW_PRIVATE_PAGE" => "Y",
"SHOW_PROFILE_PAGE" => "Y",
"ALLOW_INNER" => "N",
"ONLY_INNER_FULL" => "N",
"SHOW_SUBSCRIBE_PAGE" => "Y",
"USER_PROPERTY_PRIVATE" => array(),
"USE_AJAX_LOCATIONS_PROFILE" => "N"
)
);?><br>
<br><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<?
$sSectionName = "Мои заказы";
$arDirProperties = array(
);
?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Заказы");
?><?
LocalRedirect('/personal/');
?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<?
define("HIDE_SIDEBAR", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Заказы");
?><?$APPLICATION->IncludeComponent("bitrix:sale.order.ajax", "bootstrap_v4", array(
"PAY_FROM_ACCOUNT" => "Y",
"COUNT_DELIVERY_TAX" => "N",
"COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",
"ONLY_FULL_PAY_FROM_ACCOUNT" => "N",
"ALLOW_AUTO_REGISTER" => "Y",
"SEND_NEW_USER_NOTIFY" => "Y",
"DELIVERY_NO_AJAX" => "N",
"TEMPLATE_LOCATION" => "popup",
"PROP_1" => array(
),
"PATH_TO_BASKET" => "/personal/cart/",
"PATH_TO_PERSONAL" => "/personal/order/",
"PATH_TO_PAYMENT" => "/personal/order/payment/",
"PATH_TO_ORDER" => "/personal/order/make/",
"SET_TITLE" => "Y" ,
"SHOW_ACCOUNT_NUMBER" => "Y",
"DELIVERY_NO_SESSION" => "Y",
"COMPATIBLE_MODE" => "N",
"BASKET_POSITION" => "before",
"BASKET_IMAGES_SCALING" => "adaptive",
"SERVICES_IMAGES_SCALING" => "adaptive",
"USER_CONSENT" => "Y",
"USER_CONSENT_ID" => "1",
"USER_CONSENT_IS_CHECKED" => "Y",
"USER_CONSENT_IS_LOADED" => "Y"
),
false
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Оплата заказа");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment",
"",
Array(
)
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Результат оплаты");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment.receive",
"",
Array(
"PAY_SYSTEM_ID" => "",
"PERSON_TYPE_ID" => ""
),
false
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="bx-sidebar-block">
<?$APPLICATION->IncludeComponent("bitrix:menu", "personal_menu", array(
"ROOT_MENU_TYPE" => "personal",
"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
);?>
</div>
<div class="bx-sidebar-block">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",
"",
Array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/socnet_sidebar.php",
"AREA_FILE_RECURSIVE" => "N",
"EDIT_MODE" => "html",
),
false,
Array('HIDE_ICONS' => 'Y')
);?>
</div>
<div class="bx-sidebar-block hidden-xs">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",
"",
Array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/sender.php",
"AREA_FILE_RECURSIVE" => "N",
"EDIT_MODE" => "html",
),
false,
Array('HIDE_ICONS' => 'Y')
);?>
</div>
<div class="bx-sidebar-block">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",
"",
Array(
"AREA_FILE_SHOW" => "file",
"PATH" => SITE_DIR."include/about.php",
"AREA_FILE_RECURSIVE" => "N",
"EDIT_MODE" => "html",
),
false,
Array('HIDE_ICONS' => 'N')
);?>
</div>

Шаблон нового проекта 1С-Битрикс

Данный шаблон представляет из себя хороший пример структурирования файлов проекта на битрикс.

В шаблоне сразу подключен дебагер kint, он работает через команду pre(), работает только под админом

При разворачивании шаблона делаем composer update в папке local

local/lib

Здесь размещаем свои классы, если пишем их с 0

templates

Шаблон сайта. Содержит шаблон сайта с хедерем и футерем, в котором использованы часто применяемые методы: работа с языковыми файлами, подключение стилей, скриптом и так далее. Накиданы наиболее часто встречающиеся компоненты в шапке Папка ajax содержит все файлы, которые отрабатывают по ajax Папка include содержит включаемые области

php_interface

Содержит пару шпаргалок и фич, несколько скриптов запускаемых кроном. Предлагает структуру подключаемых файлов с обработкой событий, пользовательских функций и настроек. Как начинаем работать с проектом заводим константы local/php_interface/include/constants.php local/php_interface/include/seoTemplates.php - содержит seo шаблоны, которые используются для генерации в вкладке seo в инфоблоках

local/php_interface/cron/cron_events.php - поставить на cron, будет оптимизировать БД и выполнять агенты на cron

В есть кеш, его использовать при GetList в result_modif, если это не постоянно обновляемые данные

//заготовка $cacheId = 'catalog_product_list'; $arProducts = getCache($cacheId); if(!is_array($arProducts)){ // какой-то запрос в бд $arProducts = \Bitrix\Iblock\ElementTable::getList(array( 'select' => array('ID', 'IBLOCK_ID', 'NAME'), 'filter' => array('IBLOCK_ID' => CATALOG_IBLOCK_ID), 'limit' => 100, 'order' => array('TIMESTAMP_X' => 'ASC') ))->fetchAll(); //добавляем кеш addCache($cacheId,$arProducts); }

<?php
$arUrlRewrite = array(
0 =>
array(
'CONDITION' => '#^/catalog/#',
'RULE' => '',
'ID' => 'bitrix:catalog',
'PATH' => '/catalog/index.php',
'SORT' => 100,
),
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment