Разное

Bitrix server name: Специальные константы

Содержание

Главный модуль:Настройки

Список настроек
Детальное описание настроек
Заголовок:Позволять ли пользователям регистрироваться самостоятельно?
Идентификатор:new_user_registration
Описание:Если данный параметр установлен (равен «Y»), то в стандартных компонентах

/main/auth/authorize.php,

/main/auth/authorize_registration.php


будет доступна ссылка «Регистрация».
По умолчанию:Y
Заголовок:При регистрации добавлять в группу.
Идентификатор:new_user_registration_def_group
Описание:В данном параметре можно указать группы к которым будет автоматически приписываться новый пользователь при его регистрации (при вызове функций CUser::Register, CUser::SimpleRegister).
По умолчанию:2 (группа Everyone)
Заголовок:Разрешить запоминание авторизации.
Идентификатор:store_password
Описание:Если данный параметр установлен (равен «Y»), то авторизация пользователя будет сохраняться в его cookie файлах, при установке флага «Запомнить меня на этом компьютере» в момент авторизации. Данный параметр также используется в стандартных компонентах

/main/auth/authorize.php,

/main/auth/auth_form.php,

/main/auth/authorize_registration.php


для показа/скрытия флага «Запомнить меня на этом компьютере».
По умолчанию:Y
Заголовок:Использовать защищенное хранение авторизации в cookies
Идентификатор:use_secure_password_cookies
Описание:Если параметр «Разрешить запоминание авторизации» установлен (равен «Y»), то данный параметр будет управлять типом cookie переменной в которой будет храниться информация необходимая для авторизации. Если значение данного параметра равно «Y», то cookie авторизации будут устанавливаться с флагом secure, это означает что пользователь сможет автоматически авторизовываться на сайте только если он заходит на него по защищенному протоколу HTTPS.
По умолчанию:N
Заголовок:E-Mail адрес или список адресов через запятую на который будут дублироваться все исходящие сообщения.
Идентификатор:all_bcc
Описание:E-Mail адрес или список адресов через запятую на который будут дублироваться все исходящие сообщения.
По умолчанию:
Заголовок:Отправлять в письме идентификаторы почтового события и шаблона.
Идентификатор:send_mid
Описание:Если данный параметр установлен (равен «Y»), то к телу письма снизу будет добавлено:

MID: EVENT_ID.TEMPLATE_ID (DATE_EVENT)


Где:

  • EVENT_ID — ID почтового события

  • TEMPLATE_ID — ID почтового шаблона

  • DATE_EVENT — дата создания почтового события
По умолчанию:N
Заголовок:Дублировать E-Mail адрес в заголовок.
Идентификатор:fill_to_mail
Описание:Если данный параметр установлен (равен «Y»), то заголовок письма будет дополнительно продублировано поле «To».
По умолчанию:N
Заголовок:E-Mail администратора сайта (отправитель по умолчанию)
Идентификатор:email_from
Описание:В данном параметре как правило хранят EMail администратора сайта. Этот EMail будет доступен при редактировании почтовых шаблонов в поле #DEFAULT_EMAIL_FROM#.
По умолчанию:«admin@».$_SERVER[«SERVER_NAME»]
Заголовок:Конвертировать символы новой строки Unix формата в Windows формат при отправке email
Идентификатор:CONVERT_UNIX_NEWLINE_2_WINDOWS
Описание:Если значение данного параметра «Y», то в теле сообщения все символы «новая строка» (\n) будут заменены парой символов «перевод каретки»+»новая строка» (\r\n).


Зачастую это необходимо в ситуации, когда сайт был собран изначально на Unix хостинге (где во всех почтовых шаблонах в теле сообщения новая строка обозначалась символом \n), а затем перенесен на Windows хостинг (где новая строка обозначается уже парой символов \r\n). А так как в соответствии со стандартом RFC 2822 (стандарт формирования почтовых сообщений) в теле сообщения недопустимо использование по отдельности символов \n (или \r), то при разборе сообщения почтовым сервером могут быть ошибки.

Зачастую символ «новая строка» обозначают как LF (line feed), а символ «перевод каретки» обозначают как CR (carriage return).

По умолчанию:N (не конвертировать)
Заголовок:Конвертировать 8-битные символы в заголовке письма.
Идентификатор:convert_mail_header
Описание:В соответствии с стандартом RFC 2822 в заголовке письма (в полях «To», «From», «Subject», «CC», «BCC» и т.п.) допустимо использование только символов с кодами от 33 (100001) до 126 (1111110) (это латинские символы, цифры, знаки препинания), данные символы называют 7-битными. Символы, коды которых лежат выше данного диапазона (начиная с кода 128), называют 8-ми и более битными символами, их использование в заголовках писем по стандарту RFC 2822 недопустимо и многие почтовые сервера не поддерживают 8-битные символы в заголовках писем в соответствии с этим стандартом.


Поэтому, если вы например, используете кириллические символы (русские) в заголовке своих писем, то вам необходимо установить данный параметр в значение «Y», что позволит сконвертировать 8-битные символы в формат «MIME base64», используемый для передачи бинарных данных в системах не поддерживающих 8-битные символы.
По умолчанию:Y (конвертировать)
Заголовок:Название сайта.
Идентификатор:site_name
Описание:В данном параметре можно задать значение по умолчанию для названия сайта (поле «Название сайта» в настройках сайта). Использует как правило в почтовых шаблонах в поле #SITE_NAME#.
По умолчанию:равен значению стандартной PHP переменной $_SERVER[«SITE_NAME»]
Заголовок:URL сайта (без http://). Например: www.mysite.com
Идентификатор:server_name
Описание:В данном параметре можно задать значение по умолчанию для адреса сайта (поле «URL сервера» в настройках сайта). Использует как правило в почтовых шаблонах в поле #SERVER_NAME#.
По умолчанию:равен значению стандартной PHP переменной $_SERVER[«SERVER_NAME»]
Заголовок:Имя сервера, содержащего обновления.
Идентификатор:update_site
Описание:URL сервера содержащего обновления.
По умолчанию:www.bitrixsoft.ru
Заголовок:Имя префикса для названия cookies
Идентификатор:cookie_name
Описание:Префикс имен cookie переменных устанавливаемых данным порталом.
По умолчанию:BITRIX_SM
Заголовок:Папка по умолчанию для загрузки файлов.
Идентификатор:upload_dir
Описание:Любой подкаталог каталога DocumentRoot в котором будут храниться все файлы загружаемые на сервер и сохраняемые функцией CFile::SaveFile. Данный параметр широко используется в функциях класса CFile. Под термином «загруженные файлы» понимаются как правило все файлы загружаемые через HTML формы, за исключением файлов которые могут быть загружены в любой каталог через меню «Структура сайта» -> «Управление» -> «Загрузить файл».
По умолчанию:upload
Заголовок:Посылать в заголовке статус 200 на 404 ошибку.
Идентификатор:header_200
Описание:Если данный параметр установлен (равен «Y»), то при возникновении 404 ошибки на сервере (страница не найдена) будет отсылаться статус 200 (страница найдена). Как правило данный параметр устанавливают для индексирующих роботов поисковых систем при создании каких либо сервисов на сайте на базе 404 ошибки. Например, для создания «красивых адресов» без параметров (например, /news/345.php), это также называют ЧПУ (человеко-понятные URL’ы).
По умолчанию:Y
Заголовок:Тип меню для нулевого уровня карты сайта.
Идентификатор:map_top_menu_type
Описание:Данный параметр используется стандартным компонентом /main/map/default.php выводящим карту сайта. В нем хранится тип меню с которого будет построен начальный уровень карты сайта.
По умолчанию:top
Заголовок:Тип меню для остальных уровней карты сайта.
Идентификатор:map_left_menu_type
Описание:Данный параметр используется стандартным компонентом /main/map/default.php выводящим карту сайта. В нем хранится тип меню с которого будет построены последующие уровни карты сайта (после начального уровня).
По умолчанию:left
Заголовок:Режим вывода ошибок (error_reporting)
Идентификатор:error_reporting
Описание:Данный параметр используется в служебной части пролога для установки уровня сообщений об ошибках (error) и предупреждениях (warning) PHP.
По умолчанию:Только ошибки (E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR|E_PARSE)
Заголовок:Распространять авторизацию на все домены.
Идентификатор:auth_multisite
Описание:Если данный параметр установлен (равен «Y»), то авторизация пользователя (хранимая в cookie или текущая сессионная) будет распространяться на все домены всех сайтов портала.
По умолчанию:N
Заголовок:Сохранять исходные имена загружаемых файлов.
Идентификатор:save_original_file_name
Описание:Если данный параметр установлен (равен «Y»), то все имена всех загружаемых файлов будут сохранены в исходном виде. В противном случае, эти имена будут преобразованы в уникальные с помощью хэш функции MD5.
По умолчанию:N
Заголовок:Автоматически заменять невалидные символы в именах загружаемых файлов.
Идентификатор:convert_original_file_name
Описание:Если данный параметр установлен (равен «Y»), то в именах загружаемых файлов все невалидные символы не являющиеся символами латинского алфавита, цифрами, тире (-), подчеркиванием (_), точкой (.) будут преобразованы в произвольные валидные символы.
По умолчанию:Y
Заголовок:Закрытие публичной части
Идентификатор:site_stopped
Описание:Позволяет закрыть публичную часть сайта. Возможные значения: «Y» (публичная часть закрыта) и «N» (публичная часть открыта).
По умолчанию:N

© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020

Наверх

Имя сайта в тексте страниц – как избежать проблем в 1С-Битрикс

Иногда встречается задача на статических страницах сайта указать адрес сайта. Обычно эту задачу решают контент-менеджеры при наполнении, и действуют, что называется «в лоб». Т.е. прямо в тексте создают конструкцию типа http://site_name.ru или www.site.com. Так же часто доменное имя сайта возникает на статических страницах в случае возникновения необходимости создания ссылок на другие разделы сайта из текста.

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

<a href=”http://www.site.org”>текст_ссылки</a>

А эта конструкция в свою очередь зачастую оказывается обёрнутой различными стилями, серьёзно мешающими обнаружению ссылок как в визуальном редакторе (а большинство контент-менеджеров предпочитают пользоваться подобным средством упрощения работы), так и в тексте страницы.

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

Как решать данную проблему?

Относительная адресация страниц решит проблему ссылок!

Большинство систем управления контентом (в т.ч. 1С-Битрикс) позволяют использовать относительную адресацию на страницах вместо абсолютной. В частности это позволяет решить описанную выше проблему следующим образом:

<a href=»/about/delivery.php» >доставкой</a>

В случае, если необходимо создать ссылку на корневой раздел нам поможет следующая конструкция:

<a href=»/ » >Сайт</a>

Помимо ссылок аналогичным образом следует поступать с адресами для картинок.

Пример правильно описанного фона таблицы:

<table background=»/images/TableBG.jpg»>

Пример правильно описанной картинки:

<img src=»/upload/medialibrary/2bf/2bf2d3587c3cdcc0d3a8ce15a775dbab.png»/>

Обратите внимание! Мы не прописываем никаких параметров кроме адреса изображения в этих примерах! За примерами возможных параметров обратитесь к пособию по HTML.

Отлично, теперь все изображения и ссылки имеют относительные пути. Что дальше?

Переменная с именем сайта на 1С-Битрикс!

То, что я сейчас опишу в некоторой мере крамола. Так делать неправильно. Но иногда можно и нужно.

Суть заключается в том, что согласно идеологии 1С-Битрикс считается неправильным совершать прямые обращения к базе данных из кода страницы и минимизировать php код в теле, стараясь по максимуму использовать встроенное API. Так уменьшается риск появления ошибок и уязвимостей, поскольку код CMS уже проверен тысячами разработчиков и десятками тысяч реально работающих проектов. К тому же, так вы остаётесь в рамках общепринятого стандарта, и вашим коллегам будет проще принять у вас сайт.  

Однако иногда имя сайта всё же необходимо написать в тексте страницы. Например, для того, чтобы объяснить пользователю, где он находится и как сюда вновь попасть. Причин может быть масса. Важно, что при смене доменного имени или переносе проекта (а так же при заимствовании файлов одного проекта для работы над другим) перенесётся и это неверно указанное доменное имя! Опечатка будет вводить пользователей в заблуждение, а некоторые и вовсе решат, что сайт сделан слишком безответственно и от его посещения следует отказаться.

Для решения этой проблемы следует использовать константу API 1С-Битрикс SITE_SERVER_NAME, вызов которой производится следующим образом в тексте страницы (это относится только в страницам с расширением php, поскольку на статических .html страницах по умолчанию выполнение PHP кода невозможно!):

<?=SITE_SERVER_NAME?>

Хинт


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

Будьте максимально аккуратны с подобными переменными и константами!

Это очень удобных инструмент для больших сайтов, но старайтесь не слишком злоупотреблять им, вполне возможно, что для наведения порядка на 10 статических страницах вашего сайта просто достаточно грамотного контент-менеджера…

И конечно не забывайте, что имя сайта задаётся как в настройках конкретного сайта (Настройки – Настройки продукта – Сайты – Список сайтов), так и в настройках главного модуля 1С-Битрикс. Будьте осторожны с редактированием этих полей, поскольку это повлияет и на другие части сайта! Лучше, если подобные манипуляции будет осуществлять опытный администратор 1С-Битрикс. 

Настройка серверов для обеспечения многосайтовости на виртуальная машине «Битрикс»

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

1. Первая настройка Nginx. Изменения настроек в файле s1.conf

Перейдя к файлу s1.conf по пути /etc/nginx/bx/site_avaliable/s1.conf

Найдем в нем фрагмент кода

server {



server_name _;



set $proxyserver   «http://127.0.0.1:8888»;

set $docroot      «/home/bitrix/www»;

index index.php;

root /home/bitrix/www;

}

И заменим параметр «server_name», указав вместо него домен в зоне RU

server {



server_name *.sitename.ru sitename.ru;



set $proxyserver   «http://127.0.0.1:8888»;

set $docroot      «/home/bitrix/www»;

index index.php;

root /home/bitrix/www;

}

2. Вторая настройка Nginx. Настройки файла для другой доменной зоны

В нашем примере рассматривается доменная зона UA. Перейдем к файлу bx_ext_sitename.com.ua.conf по адресу /etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf

Найдем фрагмент кода

server {

listen 80 ;

server_name sitename.com.ua www.sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;

error_log  /var/log/nginx/sitename_error.log warn;



set $proxyserver  «http://127.0.0.1:8887»;

set $imcontenttype «text/html; charset=utf-8»;

set $docroot      «/home/bitrix/ext_www/sitename.com.ua»;

index index.php;

root «/home/bitrix/ext_www/sitename.com.ua»;

# Redirect to ssl if need

if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }



}

И отредактируем его, также заменив параметр server_name

server{

listen 80 ;

server_name *.sitename.com.ua sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;

error_log  /var/log/nginx/sitename_error.log warn;



set $proxyserver  «http://127.0.0.1:8887»;

set $imcontenttype «text/html; charset=utf-8»;

set $docroot      «/home/bitrix/ext_www/sitename.com.ua»;

index index.php;

root «/home/bitrix/ext_www/sitename.com.ua»;

# Redirect to ssl if need

if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }



}

3. Первая настройка Apache. Файл default.conf

Перейдя к файлу default.conf по адресу /etc/httpd/bx/conf/default.conf

Добавляем в начало файла фрагмент кода

Listen 127.0.0.1:8888

<VirtualHost 127.0.0.1:8888>

ServerName sitename.ru

ServerAlias *.sitename.ru

4. Вторая настройка Apache. Файл bx_ext_sitename.com.ua.conf

Найдя строку

ServerAlias www.sitename.com.ua

Заменяем ее другой

ServerAlias *.sitename.com.ua

5. Перезагрузка Nginx и Apache

Готово!

——————————-

Спасибо за внимание!

Читайте свежий выпуск «Кладовки программиста» каждый день!

 

 

Источник: 

Назад в раздел

BitrixVM и многосайтовость на доменах, да еще и с алиасами доменов | Битрикс-веб-мастер


Возникла тут интересная задача реализации многосайтововости на доменах. 

Есть сайт на домене .ru, контент сайта фильтруется по регионам, т.е. имеются сайты вида: moscow.sitename.ru, piter.sitename.ru, kiev.sitename.ru, kharkov.sitename.ru …. и так все регионы (как вы понимаете, список регионов постоянно расширяется…). Возникла необходимость в вынесении украинских регионов на украинский домен sitename.com.ua.


продолжаю перенос со своего блога …


Доброго здоровья!


Возникла тут интересная задача реализации многосайтовости на доменах.


Есть сайт на домене .ru, контент сайта фильтруется по регионам, т.е. имеются сайты вида: moscow.sitename.ru,
piter.sitename.ru, kiev.sitename.ru, kharkov.sitename.ru …. и так все регионы (как вы понимаете, список регионов
постоянно расширяется…). Возникла необходимость в вынесении украинских регионов на украинский домен
sitename.com.ua.


ru-сайт был поднят на BitrixVM, как сайт по умолчанию (до меня), ДНС-ы самого домена и всех его алиасов были
настроены на IP сервера. Все алиасы обрабатываются на стороне сайта так что для сервера никаких проблем с обработкой
поддоменов и разбросом их по различным папкам тут нет. Точнее не было, пока не было необходимости выделения
украинской части сайта в отдельный сайт.


Как-то скомкано получается изложить всю проблему, но, надеюсь, кому нужно — поймут.


И вот начал я настройку многосайтовости. В админке битрикса вторую лицензию занял новым укр. сайтом. В админке
виртуальной машины завел дополнительный сайт для .com.ua. Настроил днс-ы украинского домена и его алиасов аналогично
значениям ру-домена.


Открываю сайт sitename.com.ua — попадаю в верную папку. Радуюсь. А вот дальше начинается счастье… Т.к. в
настройках серверов я чуть сильнее чайника, то посмотрев на файлы конфигурации nginx, впал в ступор — понимаю, где
править нужно, но не понимаю, что. Пришлось обращаться к знакомому
сервернику. За что ему как всегда, огромное спасибо! Кому нужен специалист такого профиля — переходите по
ссылке:)


Итак, решение задачи заключалось в правке всего 4-х файлов:

  • /etc/nginx/bx/site_avaliable/s1.conf
  • /etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf
  • /etc/httpd/bx/conf/bx_ext_sitename.com.ua.conf
  • /etc/httpd/bx/conf/default.conf


По очереди.

/etc/nginx/bx/site_avaliable/s1.conf


В данном файле было так:

server {
...
server_name _;
...
set $proxyserver   "http://127.0.0.1:8888";
set $docroot      "/home/bitrix/www";

index index.php;
root /home/bitrix/www;
}


подменяем параметр «server_name», прописывая сюда ру-домен с алиасами:

server {

...
server_name *.sitename.ru sitename.ru;
...
set $proxyserver   "http://127.0.0.1:8888";
set $docroot      "/home/bitrix/www";

index index.php;
root /home/bitrix/www;
}

/etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf


было так:

server {
listen 80 ;

server_name sitename.com.ua www.sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;
error_log  /var/log/nginx/sitename_error.log warn;

...
set $proxyserver  "http://127.0.0.1:8887";

set $imcontenttype "text/html; charset=utf-8";
set $docroot      "/home/bitrix/ext_www/sitename.com.ua";

index index.php;
root "/home/bitrix/ext_www/sitename.com.ua";

# Redirect to ssl if need
if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
...
}


стало так:

server{
listen 80 ;

server_name *.sitename.com.ua sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;
error_log  /var/log/nginx/sitename_error.log warn;

...
set $proxyserver  "http://127.0.0.1:8887";

set $imcontenttype "text/html; charset=utf-8";
set $docroot      "/home/bitrix/ext_www/sitename.com.ua";

index index.php;
root "/home/bitrix/ext_www/sitename.com.ua";

# Redirect to ssl if need
if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
...
}


т.е. тоже меняем параметр server_name.


На этом с nginx готово. Правим настройки апача

/etc/httpd/bx/conf/default.conf


в данном файле в самом начале прописываем:

Listen 127.0.0.1:8888
    <VirtualHost 127.0.0.1:8888>
    ServerName sitename.ru
    ServerAlias *.sitename.ru


Т.е. добавляем ServerName и ServerAlias для ру-сайта. В остальном — файл остается без изменений


Дальше — по файлу

/etc/httpd/bx/conf/bx_ext_sitename.com.ua.conf


В нем вносим всего одну правку — вместо

ServerAlias www.sitename.com.ua


вписываем

ServerAlias *.sitename.com.ua


Все! Перезагружаем апач и nginx.


Простите за разжевывание, возможно простых истин, но пост скорее для себя, вдруг пригодится еще.

Специальные переменные

Имя переменнойТипОписание
APPLICATIONГГлобальный объект класса CMain, предназначен для выполнения большинства общих стандартных операций (вывод заголовка, навигационной цепочки, меню и т.д.).
USERГГлобальный объект класса CUser, хранит в себе данные авторизации текущего пользователя, предназначен для манипуляции параметрами текущего пользователя.
DBГГлобальный объект класса CDataBase, предназначен для работы с базой данных.
DBTypeСТип базы: «mysql», «mssql» или «oracle».

Пример:

$DBType = "mysql";
DBHostСДля следующих типов базы данных:

  • MySQL — адрес сервера базы данных, например, — «localhost»
  • Oracle — не используется

Пример:

$DBHost = "localhost";
$DBHost = "localhost:3307";
DBNameСДля следующих типов базы данных:

  • MySQL — имя базы
  • Oracle — строка соединения

Пример для MySQL:

$DBName = "bitrix";

Пример для Oracle:

$DBName = "
    (DESCRIPTION = 
        (ADDRESS_LIST = 
            (ADDRESS = 
                (PROTOCOL = TCP)
                (HOST = 192.168.0.1)
                (PORT = 1521)
            )
        )
        (CONNECT_DATA = 
            (SERVICE_NAME = BX)
        )
    )
";
DBLoginСЛогин пользователя для доступа в базу данных.

Пример:

$DBLogin = "root";
DBPasswordСПароль пользователя для доступа в базу данных.

Пример:

$DBPassword = "123456";
DBDebugС
И
Если данная переменная будет равна «true», то в случае ошибки при создании соединения с базой или в любом SQL запросе, сообщение об ошибке и полный текст этой ошибки будет отображаться в браузере. В противном случае — полный текст ошибки будет показан только администратору сайта.

Пример:

$DBDebug = true;
DBDebugToFileС
И
Если данная переменная будет равна «true», то все SQL запросы к базе данных и время их выполнения будут записываться в лог-файл /mysql_debug.sql (или /oracle_debug.sql). Данная возможность
используется как правило для получения данных о скорости выполнения SQL запросов к базе данных.

Ведение подобного лога может серьезно замедлить работу сайта, поэтому пользоваться этим стоит кратковременно.


Пример:

$DBDebugToFile = true;
clear_cacheТЕсли значение данной переменной — «Y», то это отключает кеширование на текущей странице.

Примечание. Только для пользователей авторизованных с административными правами.


Пример:

http://www.site.ru/?clear_cache=Y
clear_cache_sessionТЕсли значение данной переменной — «Y», то это отключает кеширование в рамках сессии. Для включения кэширования — достаточно один раз присвоить этой переменной значение «N».

Примечание. Только для пользователей авторизованных с административными правами.



Пример:

http://site.ru/?clear_cache_session=Y
http://site.ru/?clear_cache_session=N
compressТЕсли значение данной переменной — «Y», то внизу страницы в рамках сессии будет выведена рамка показывающая информацию по сжатию данной страницы модулем «Компрессия»: размер страницы до сжатия, размер страницы после сжатия, коэфициент сжатия. Для отключения вывода данной информации — достаточно один раз присвоить этой переменной значение «N».

Пример:

http://www.site.ru/?compress=Y
http://www.site.ru/?compress=N
show_page_exec_timeТЕсли значение данной переменной — «Y», то внизу страницы будет выводиться время выполнения данной страницы на сервере. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N».

Данная переменная позволяет получить объективную информацию о скорости работы сайта.


Пример:

http://site.ru/?show_page_exec_time=Y
http://site.ru/?show_page_exec_time=N
show_include_exec_timeТЕсли значение данной переменной — «Y», то на странице будет показано время выполнения всех функций CMain::IncludeFile, подключающей как компоненты так и обычные файлы. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N».

Примечание. Только для пользователей авторизованных с административными правами.


Пример:

http://site.ru/?show_include_exec_time=Y
http://site.ru/?show_include_exec_time=N
show_lang_filesТЕсли значение данной переменной — «Y», то внизу страницы будет выводиться список используемых на данной странице языковых файлов с возможностью поиска по ним. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N».

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


Пример:

http://www.site.ru/?show_lang_files=Y
http://www.site.ru/?show_lang_files=N
no_keep_statistic_KEYТЕсли значение данной переменной — «Y», то это позволит отключить сбор статистики в рамках сессии. Для включения сбора статистики — достаточно один раз присвоить этой переменной значение «N». Как правило данную переменную используют для отключения сбора статистики в момент захода на сайт администратора.

KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php


Пример:

http://site.ru/?no_keep_statistic_SM4-ML-PZDIO7TUMT3WP7H=Y
http://site.ru/?no_keep_statistic_SM4-ML-PZDIO7TUMT3WP7H=N
no_agent_statistic_KEYТЕсли значение данной переменной — «Y», то это позволит отключить отработку агентов статистики в рамках сессии. Для включения отработки агентов в данной сесси — достаточно один раз присвоить этой переменной значение «N».

KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php


Пример:

http://site.ru/?no_agent_statistic_SM4-ML-PZDIO7TUMT3WP7H=Y
http://site.ru/?no_agent_statistic_SM4-ML-PZDIO7TUMT3WP7H=N
key Данную переменную можно использовать только при вызове скрипта /bitrix/admin/phpinfo.php. Если ее значение будет равным лицензионному ключу, то вышеупомянутый скрипт отрабатает без подключения
административного пролога.

Пример:

http://site.ru/bitrix/admin/phpinfo.php?key=SM4-ML-PZDIRTH

Обозначения типов переменных:

  • Г (глобальная) — переменная автоматически создаётся в служебной части пролога
  • С (соединение с базой) — переменную можно определить только в файле хранящим параметры соединения к базе: /bitrix/php_interface/dbconn.php
  • И (инициализация) — переменную можно определить в одном из следующих файлов:
    • /bitrix/php_interface/init.php — дополнительные параметры портала
    • /bitrix/php_interface/ID сайта/init.php — дополнительные параметры сайта
  • Ттраница) — переменную можно задать в параметрах страницы при открытии ее в браузере

© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020

Наверх

Битрикс. Регистрация и авторизация. Часть 2. Категория: Web-разработка • CMS Битрикс


Возможности системного компонента регистрации довольно скромные: нет возможности добавить свои поля, сделать их обязательными для заполнения. Для реализации таких возможностей есть компонент «Настраиваемая регистрация», который позволяет настроить и разместить на сайте свою форму регистрации. В визуальном редакторе компонент расположен по пути: «Служебные • Пользователь • Настраиваемая регистрация».


Пример вызова компонента

<?php
$APPLICATION->IncludeComponent(     // Настраиваемая регистрация
    "bitrix:main.register",
    "",
    Array(
        "AUTH" => "Y",              // Автоматически авторизовать пользователей
        "REQUIRED_FIELDS" => array( // Поля, обязательные для заполнения
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
        ),
        "SET_TITLE" => "Y",         // Устанавливать заголовок страницы
        "SHOW_FIELDS" => array(     // Поля, которые показывать в форме
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
        ),
        "SUCCESS_PAGE" => "",       // Страница окончания регистрации
        "USER_PROPERTY" => "",      // Показывать дополнительные свойства
        "USER_PROPERTY_NAME" => "", // Название блока пользовательских свойств
        "USE_BACKURL" => "N",       // Отправлять пользователя по обратной ссылке
    ),
    false
);
?>


Создадим страницу /auth/register.php, разместим на ней вызов компонента «Настраиваемая регистрация». В настройках компонента выберем поля, которые надо показывать:

  • [EMAIL] E-mail
  • [NAME] Имя
  • [LAST_NAME] Фамилия
  • [PERSONAL_PHONE] Телефон
  • [WORK_COMPANY] Наименование компании
  • [WORK_PHONE] Телефон (рабочий)


И укажем поля, обязательные для заполнения:

  • [EMAIL] E-mail
  • [NAME] Имя
  • [LAST_NAME] Фамилия
  • [PERSONAL_PHONE] Телефон



После этого страница /auth/register.php содержит следующий код:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Регистрация");
?>

<?php
$APPLICATION->IncludeComponent(
    "bitrix:main.register",
    ".default",
    Array(
        "AUTH" => "N",
        "COMPONENT_TEMPLATE" => ".default",
        "REQUIRED_FIELDS" => array(
            0=>"EMAIL",
            1=>"NAME",
            2=>"LAST_NAME",
            3=>"PERSONAL_PHONE",
        ),
        "SET_TITLE" => "Y",
        "SHOW_FIELDS" => array(
            0=>"EMAIL",
            1=>"NAME",
            2=>"LAST_NAME",
            3=>"PERSONAL_PHONE",
            4=>"WORK_COMPANY",
            5=>"WORK_PHONE",
        ),
        "SUCCESS_PAGE" => "/auth/",
        "USER_PROPERTY" => array(),
        "USER_PROPERTY_NAME" => "",
        "USE_BACKURL" => "N"
    )
);
?>

<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>


И имеет такой вид:



Теперь нам надо кастомизировать форму регистрации под наш дизайн. Для этого копируем шаблон компонента:

  • откуда: bitrix/components/bitrix/main.register/templates/.default
  • куда: local/templates/.default/components/bitrix/main.register/.default


После внесения изменений получилось так:

<?
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован */ ?>
    <p><?= GetMessage('MAIN_REGISTER_REG_AUTH'); /* Вы зарегистрированы и авторизованы */ ?></p>
    <?php return ?>
<?php endif; ?>

<div>

    <h3><?= GetMessage('MAIN_REGISTER_FORM_TITLE'); /* заголовок формы */ ?></h3>

    <?php if (count($arResult["ERRORS"]) > 0): /* сообщения об ошибках при заполнении формы */ ?>
        <?php
            foreach ($arResult["ERRORS"] as $key => $error) {
                if (intval($key) == 0 && $key !== 0) {
                    $arResult["ERRORS"][$key] = str_replace(
                        "#FIELD_NAME#",
                        '«'.GetMessage('MAIN_REGISTER_'.$key).'»',
                        $error
                    );
                }
            }
            ShowError(implode("<br />", $arResult["ERRORS"]));
        ?>
    <?php elseif ($arResult["USE_EMAIL_CONFIRMATION"] === "Y"): ?>
        <p><?= GetMessage('MAIN_REGISTER_EMAIL_HELP'); /* будет отправлено письмо для подтверждения */ ?></p>
    <?php endif; ?>

    <form method="post" action="<?= POST_FORM_ACTION_URI; ?>" name="regform" enctype="multipart/form-data">

        <?php if ($arResult["BACKURL"] <> ''): ?>
            <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
        <?php endif; ?>

        <?php foreach ($arResult["SHOW_FIELDS"] as $FIELD): ?>
            <?php if ($FIELD == "AUTO_TIME_ZONE" && $arResult["TIME_ZONE_ENABLED"]): /* часовой пояс */ ?>
                <!-- код удален -->
                <?php continue; ?>
            <?php endif; ?>

            <div>
                <span>
                    <?= GetMessage('MAIN_REGISTER_'.$FIELD); /* очередное поле */ ?>
                    <?php if ($arResult["REQUIRED_FIELDS_FLAGS"][$FIELD] == "Y"): ?>
                        <i>*</i> <!-- поле обязательно для заполнения -->
                    <?php endif; ?>
                </span>
                <span>
                    <?php if ($FIELD == "PASSWORD"): /* пароль */ ?>
                        <input type="password" name="REGISTER[<?= $FIELD; ?>]" value="<?= $arResult["VALUES"][$FIELD]; ?>"
                               autocomplete="off" />
                        <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация */ ?>
                            <!-- код удален -->
                        <?php endif; ?>
                    <?php elseif ($FIELD == "CONFIRM_PASSWORD"): /* подтверждение пароля */ ?>
                        <input type="password" name="REGISTER[<?= $FIELD; ?>]" value="<?= $arResult["VALUES"][$FIELD]; ?>"
                               autocomplete="off" />
                    <?php elseif ($FIELD == "PERSONAL_GENDER"): /* пол: мужской, женский */ ?>
                        <select name="REGISTER[<?= $FIELD; ?>]">
                            <option value="">
                                <?= GetMessage('MAIN_REGISTER_USER_UNKNOWN'); ?>
                            </option>
                            <option value="M"<?= $arResult["VALUES"][$FIELD] == 'M' ? ' selected="selected"' : ''; ?>>
                                <?= GetMessage('MAIN_REGISTER_USER_MALE'); ?>
                            </option>
                            <option value="F"<?= $arResult["VALUES"][$FIELD] == 'F' ? ' selected="selected"' : ''; ?>>
                                <?= GetMessage('MAIN_REGISTER_USER_FEMALE'); ?>
                            </option>
                        </select>
                    <?php elseif (in_array($FIELD, array("PERSONAL_COUNTRY", "WORK_COUNTRY"))): /* страна проживания или работы */ ?>
                        <select name="REGISTER[<?= $FIELD; ?>]">
                        <?php foreach ($arResult["COUNTRIES"]["reference_id"] as $key => $value): ?>
                            <?php
                            $selected = ($value == $arResult["VALUES"][$FIELD]) ? ' selected="selected"' : '';
                            ?>
                            <option value="<?= $value; ?>"<?= $selected; ?>>
                                <?= $arResult["COUNTRIES"]["reference"][$key]; ?>
                            </option>
                        <?php endforeach; ?>
                        </select>
                    <?php elseif (in_array($FIELD, array("PERSONAL_PHOTO", "WORK_LOGO"))): /* личное фото */ ?>
                        <input type="file" name="REGISTER_FILES_<?= $FIELD; ?>" />
                    <?php elseif (in_array($FIELD, array("PERSONAL_NOTES", "WORK_NOTES"))): ?>
                        <textarea name="REGISTER[<?= $FIELD; ?>]">
                            <?= $arResult["VALUES"][$FIELD]; ?>
                        </textarea>
                    <?php elseif ($FIELD == "PERSONAL_BIRTHDAY"): /* дата рождения */ ?>
                        <small><?= $arResult["DATE_FORMAT"]; ?></small><br />
                        <input size="30" type="text" name="REGISTER[<?= $FIELD; ?>]"
                               value="<?= $arResult["VALUES"][$FIELD]; ?>" />
                        <?php
                        $APPLICATION->IncludeComponent(
                            'bitrix:main.calendar',
                            '',
                            array(
                                'SHOW_INPUT' => 'N',
                                'FORM_NAME' => 'regform',
                                'INPUT_NAME' => 'REGISTER[PERSONAL_BIRTHDAY]',
                                'SHOW_TIME' => 'N'
                            ),
                            null,
                            array("HIDE_ICONS"=>"Y")
                        );
                        ?>
                    <?php else: ?>
                        <input type="text" name="REGISTER[<?= $FIELD; ?>]"
                               value="<?= $arResult["VALUES"][$FIELD]; ?>" />
                    <?php endif; ?>
                </span>
            </div>
        <?php endforeach; ?>

        <?php /***** User properties *****/ ?>
        <?php if($arResult["USER_PROPERTIES"]["SHOW"] == "Y"): ?>
            <h4>
            <?=
            empty($arParams["USER_PROPERTY_NAME"]) ? GetMessage("USER_TYPE_EDIT_TAB") : $arParams["USER_PROPERTY_NAME"];
            ?>
            </h4>
            <?php foreach ($arResult["USER_PROPERTIES"]["DATA"] as $FIELD_NAME => $arUserField): ?>
                <div>
                    <span>
                        <?= $arUserField["EDIT_FORM_LABEL"]; ?>
                        <?php if ($arUserField["MANDATORY"]=="Y"): ?>
                            <i>*</i> <!-- поле обязательно для заполнения -->
                        <?php endif; ?>
                    </span>
                    <span>
                        <?php
                        $APPLICATION->IncludeComponent(
                            "bitrix:system.field.edit",
                            $arUserField["USER_TYPE"]["USER_TYPE_ID"],
                            array(
                                "bVarsFromForm" => $arResult["bVarsFromForm"],
                                "arUserField" => $arUserField,
                                "form_name" => "regform"
                                ),
                                null,
                                array("HIDE_ICONS"=>"Y")
                        );
                        ?>
                    </span>
                </div>
            <?php endforeach; ?>
        <?php endif; ?>
        <?php /***** User properties *****/ ?>

        <?php if ($arResult["USE_CAPTCHA"] == "Y"): /* использовать CAPTCHA? */ ?>
            <div>
                <h4><?= GetMessage('MAIN_REGISTER_CAPTCHA_TITLE'); ?></h4>
                <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
                <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                         alt="CAPTCHA" />
                <span>
                    <?= GetMessage('MAIN_REGISTER_CAPTCHA_HELP'); ?>
                    <i>*</i>
                </span>
                <span>
                    <input type="text" name="captcha_word" maxlength="50" value="" />
                </span>
            </div>
        <?php endif; ?>

        <div>
            <input type="submit" name="register_submit_button"
                   value="<?= GetMessage('MAIN_REGISTER_FORM_SUBMIT'); /* кнопка отправки формы */ ?>" />
        </div>

    </form>

    <p>
        <?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* предупреждение о min длине пароля */?>
    </p>
    <p>
        <i>*</i> <?= GetMessage('MAIN_REGISTER_REQUIRED'); /* Эти поля обязательны для заполнения */ ?>
    </p>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/lang/ru/template.php
 */
$MESS['MAIN_REGISTER_FORM_TITLE']          = 'Регистрация';
$MESS['MAIN_REGISTER_REG_AUTH']            = 'Вы зарегистрированы и успешно авторизованы.';
$MESS['MAIN_REGISTER_EMAIL_HELP']          = 'На указанный в форме e-mail придет запрос на подтверждение регистрации.';

$MESS['MAIN_REGISTER_LOGIN']               = 'Логин';
$MESS['MAIN_REGISTER_EMAIL']               = 'E-mail';
$MESS['MAIN_REGISTER_PASSWORD']            = 'Пароль';
$MESS['MAIN_REGISTER_CONFIRM_PASSWORD']    = 'Подтверждение пароля';

$MESS['MAIN_REGISTER_NAME']                = 'Имя';
$MESS['MAIN_REGISTER_SECOND_NAME']         = 'Отчество';
$MESS['MAIN_REGISTER_LAST_NAME']           = 'Фамилия';

$MESS['MAIN_REGISTER_TITLE']               = 'Обращение';

$MESS['MAIN_REGISTER_USER_UNKNOWN']        = 'Нет данных';
$MESS['MAIN_REGISTER_USER_MALE']           = 'Мужской';
$MESS['MAIN_REGISTER_USER_FEMALE']         = 'Женский';

$MESS['MAIN_REGISTER_PERSONAL_PROFESSION'] = 'Профессия';
$MESS['MAIN_REGISTER_PERSONAL_WWW']        = 'WWW-страница';
$MESS['MAIN_REGISTER_PERSONAL_ICQ']        = 'ICQ';
$MESS['MAIN_REGISTER_PERSONAL_GENDER']     = 'Пол';
$MESS['MAIN_REGISTER_PERSONAL_BIRTHDAY']   = 'Дата рождения';
$MESS['MAIN_REGISTER_PERSONAL_PHOTO']      = 'Фотография';
$MESS['MAIN_REGISTER_PERSONAL_PHONE']      = 'Телефон';
$MESS['MAIN_REGISTER_PERSONAL_FAX']        = 'Факс';
$MESS['MAIN_REGISTER_PERSONAL_MOBILE']     = 'Мобильный';
$MESS['MAIN_REGISTER_PERSONAL_PAGER']      = 'Пейджер';
$MESS['MAIN_REGISTER_PERSONAL_STREET']     = 'Улица, дом';
$MESS['MAIN_REGISTER_PERSONAL_MAILBOX']    = 'Почтовый ящик';
$MESS['MAIN_REGISTER_PERSONAL_CITY']       = 'Город';
$MESS['MAIN_REGISTER_PERSONAL_STATE']      = 'Область / край';
$MESS['MAIN_REGISTER_PERSONAL_ZIP']        = 'Почтовый индекс';
$MESS['MAIN_REGISTER_PERSONAL_COUNTRY']    = 'Страна';
$MESS['MAIN_REGISTER_PERSONAL_NOTES']      = 'Дополнительные заметки';

$MESS['MAIN_REGISTER_WORK_COMPANY']        = 'Наименование компании';
$MESS['MAIN_REGISTER_WORK_DEPARTMENT']     = 'Департамент / Отдел';
$MESS['MAIN_REGISTER_WORK_POSITION']       = 'Должность';
$MESS['MAIN_REGISTER_WORK_WWW']            = 'WWW-страница (работа)';
$MESS['MAIN_REGISTER_WORK_PHONE']          = 'Телефон (работа)';
$MESS['MAIN_REGISTER_WORK_FAX']            = 'Факс (работа)';
$MESS['MAIN_REGISTER_WORK_PAGER']          = 'Пейджер (работа)';
$MESS['MAIN_REGISTER_WORK_STREET']         = 'Улица, дом (работа)';
$MESS['MAIN_REGISTER_WORK_MAILBOX']        = 'Почтовый ящик (работа)';
$MESS['MAIN_REGISTER_WORK_CITY']           = 'Город (работа)';
$MESS['MAIN_REGISTER_WORK_STATE']          = 'Область / край (работа)';
$MESS['MAIN_REGISTER_WORK_ZIP']            = 'Почтовый индекс (работа)';
$MESS['MAIN_REGISTER_WORK_COUNTRY']        = 'Страна (работа)';
$MESS['MAIN_REGISTER_WORK_PROFILE']        = 'Направления деятельности';
$MESS['MAIN_REGISTER_WORK_LOGO']           = 'Логотип компании';
$MESS['MAIN_REGISTER_WORK_NOTES']          = 'Дополнительные заметки (работа)';

$MESS['MAIN_REGISTER_FORM_SUBMIT']         = 'Зарегистрироваться';
$MESS['MAIN_REGISTER_CAPTCHA_TITLE']       = 'Защита от автоматической регистрации';
$MESS['MAIN_REGISTER_CAPTCHA_HELP']        = 'Введите символы с картинки';
$MESS['MAIN_REGISTER_REQUIRED']            = 'Эти поля обязательны для заполнения';
<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/lang/ru/component.php
 */
$MESS['REGISTER_WRONG_CAPTCHA']         = 'Неверно введено слово с картинки';
$MESS['REGISTER_FIELD_REQUIRED']        = 'Поле #FIELD_NAME# обязательно для заполнения';
$MESS['REGISTER_DEFAULT_TITLE']         = 'Регистрация нового пользователя';
$MESS['REGISTER_USER_WITH_EMAIL_EXIST'] = 'Пользователь с таким e-mail (#EMAIL#) уже существует';
$MESS['main_register_sess_expired']     = 'Ваша сессия истекла, повторите попытку регистрации';
$MESS['main_register_decode_err']       = 'Ошибка при дешифровании пароля (#ERRCODE#)';
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/style.css
 */
.bitrix-main-register {

}
    .bitrix-main-register > p {
        margin: 1em 0;
    }
        .bitrix-main-register > p > a {
            text-decoration: underline;
        }
    .bitrix-main-register > form {
        overflow: hidden;
    }
        .bitrix-main-register > form > div {
            width: 50%;
            margin-bottom: 15px;
            float: left;
            box-sizing: border-box;
        }
        .bitrix-main-register > form > div.captcha {
            border: 1px solid #ccc;
            padding: 20px 15px 15px 15px;
            position: relative;
            margin-top: 15px;
            width: 49%;
            clear: both;
        }
            .bitrix-main-register > form > div.captcha > h4 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .bitrix-main-register > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
        .bitrix-main-register > form > div:nth-of-type(even) {
            padding-left: 1%;
        }
        .bitrix-main-register > form > div:nth-of-type(odd) {
            padding-right: 1%;
        }
            .bitrix-main-register > form > div > span {
                display: block;
            }
            .bitrix-main-register > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .bitrix-main-register > form > div > span > input[type="text"],
                .bitrix-main-register > form > div > span > input[type="password"],
                .bitrix-main-register > form > div > span > select,
                .bitrix-main-register > form > div > span > textarea {
                    width: 100%;
                    padding: 5px;
                    border:1px solid #ccc;
                }
            .bitrix-main-register > form > div.submit {
                float: none;
                padding-left: 0;
            }
            .bitrix-main-register > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
                margin-top: 10px;
            }
    .bitrix-main-register i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }


И вот что получилось в итоге:



Тут есть еще один важный момент. Что будет, если на эту страницу попадает авторизованный пользователь? Ему показывается малоинформативное сообщение, что он зарегистрирован и авторизован.

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован */ ?>
    <p><?= GetMessage('MAIN_REGISTER_REG_AUTH'); /* Вы зарегистрированы и авторизованы */ ?></p>
    <?php return ?>
<?php endif; ?>


Есть смысл перенаправить его на страницу личного кабинета или на страницу профиля:

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован, ему здесь делать нечего */ ?>
    <?php LocalRedirect('/auth/profile.php'); ?>
<?php endif; ?>

Пользовательские поля


Хотя Битрикс предлагает большой набор предопределенных полей, их все-таки может не хватить. Тогда остается только создавать свои поля. Это можно сделать в панели управления: «Настройки • Настройки продукта • Пользовательские поля»:



Я добавил поле «Мое поле», тип «Строка», в настройках компонента указал, что это поле надо показывать:



Теперь форма регистрации имеет вид:


Порядок полей


Для настройки порядка следования полей в форме, создадим файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php:

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
// меняем порядок следования полей
$arResult['SHOW_FIELDS'] = array(
    'NAME',
    'LAST_NAME',
    'LOGIN',
    'EMAIL',
    'PASSWORD',
    'CONFIRM_PASSWORD',
    'WORK_COMPANY',
    'WORK_PHONE',
    'PERSONAL_PHONE',
);
?>


В результате чего форма примет вид:


Авторизация по E-mail


Давайте уберем поле LOGIN, как отживший свое пережиток прошлого. Без этого поля регистрацию пользователь не пройдет, поэтому будем создавать LOGIN из EMAIL. Добавляем в init.php следующий код:

AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields) {
    $arFields["LOGIN"] = $arFields["EMAIL"];
    return $arFields;
}


Чтобы форма регистрации не выдавала ошибок «Не заполнено обязательное поле логин», внесем изменение в шаблон компонента:

<?php if ($FIELD == 'LOGIN'): /* логин */ ?>
    <input type="text" name="REGISTER[<?= $FIELD; ?>]"
           value="<?= uniqid('user_'); ?>" />
<?php elseif ($FIELD == "PASSWORD"): /* пароль */ ?>
    <!-- код пропущен -->
<?php elseif ($FIELD == "CONFIRM_PASSWORD"): /* подтверждение пароля */ ?>
    <!-- код пропущен -->
<?php endif; ?>


Еще раз изменим порядок следования полей в форме и сделаем поле LOGIN первым, чтобы можно было его скрыть, обратившись с помощью :first-of-type:

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
// меняем порядок следования полей
$arResult['SHOW_FIELDS'] = array(
    'LOGIN',
    'NAME',
    'LAST_NAME',
    'EMAIL',
    'PERSONAL_PHONE',
    'PASSWORD',
    'CONFIRM_PASSWORD',
    'WORK_COMPANY',
    'WORK_PHONE',
);
?>



Теперь скроем поле LOGIN:

/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/style.css
 */
.bitrix-main-register {

}
/* код пропущен */
        .bitrix-main-register > form > div:first-of-type {
            display: none;
        }
/* код пропущен */
        .bitrix-main-register > form > div:nth-of-type(even) {
            padding-right: 1%;
        }
        .bitrix-main-register > form > div:nth-of-type(odd) {
            padding-left: 1%;
        }
/* код пропущен */



Но есть еще одна проблема — у нас теперь две формы регистрации с разным составом полей:

  • первая формируется системным компонентом system.auth.registration и доступна по адресу /auth/?register=yes
  • вторая формируется компонентом bitrix:main.register и доступна по адресу /auth/register.php


Давайте это исправим. Удалим весь код из шаблона компонента system.auth.registration, и поместим в него вызов компонента bitrix:main.register из файла /auth/register.php:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.registration/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$APPLICATION->IncludeComponent(
    "bitrix:main.register",
    ".default",
    array(
        "AUTH" => "N",
        "REQUIRED_FIELDS" => array(
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
            3 => "PERSONAL_PHONE",
        ),
        "SET_TITLE" => "Y",
        "SHOW_FIELDS" => array(
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
            3 => "PERSONAL_PHONE",
            4 => "WORK_COMPANY",
            5 => "WORK_PHONE",
        ),
        "SUCCESS_PAGE" => "/auth/",
        "USER_PROPERTY" => array(
        ),
        "USER_PROPERTY_NAME" => "",
        "USE_BACKURL" => "N",
        "COMPONENT_TEMPLATE" => ".default"
    ),
    false
);


А файл /auth/register.php просто удалим. Можно еще удалить лишний код из шаблона компонента bitrix:main.register, который никогда не будет выполнен. Системный компонент system.auth.registration вызывается где-то глубоко в недрах Битрикс только в том случае, если пользователь не авторизован. И еще одна проверка в шаблоне «Пользователь авторизован?» просто не нужна.

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
<!-- следующие три строчки можно удалить -->
<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован, ему здесь делать нечего */ ?>
    <?php LocalRedirect('/auth/profile.php'); ?>
<?php endif; ?>


Не забываем изменить другие системные компоненты:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.authorize/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_AUTHORIZE_TITLE']         = 'Авторизация';
// теперь e-mail используется как логин
$MESS['SYS_AUTH_AUTHORIZE_LOGIN']         = 'E-mail';
$MESS['SYS_AUTH_AUTHORIZE_PASSWORD']      = 'Пароль';
$MESS['SYS_AUTH_AUTHORIZE_REMEMBER']      = 'Запомнить меня';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_AUTHORIZE_SUBMIT']        = 'Войти';
$MESS['SYS_AUTH_AUTHORIZE_REG_USER']      = 'Зарегистрироваться';
$MESS['SYS_AUTH_AUTHORIZE_FORGOT']        = 'Забыли пароль?';
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_FORGOT_TITLE']        = 'Восстановление пароля';
// теперь восстановление пароля только по e-mail
$MESS['SYS_AUTH_FORGOT_HELP']         = 'Введите Ваш E-mail: инструкция по смене пароля будет отправлена на этот почтовый адрес.';
$MESS['SYS_AUTH_FORGOT_LOGIN']        = 'Логин';
$MESS['SYS_AUTH_FORGOT_EMAIL']        = 'E-mail';
$MESS['SYS_AUTH_FORGOT_CAPTHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_FORGOT_CAPTHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_FORGOT_SUBMIT']       = 'Отправить';
$MESS['SYS_AUTH_FORGOT_AUTH']         = 'Авторизация';
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
    <!-- логин больше не нужен, удаляем или комментируем код ниже -->
    <!--
    <div>
        <span>
            <?= GetMessage('SYS_AUTH_FORGOT_LOGIN'); /* логин пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_LOGIN" maxlength="50" value="<?= $arResult["LAST_LOGIN"]; ?>" />
        </span>
    </div>
    -->
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_CHANGE_TITLE']         = 'Смена пароля';
// теперь e-mail используется как логин
$MESS['SYS_AUTH_CHANGE_LOGIN']         = 'E-mail';
$MESS['SYS_AUTH_CHANGE_CHECK']         = 'Контрольная строка';
$MESS['SYS_AUTH_CHANGE_PASSWORD']      = 'Новый пароль';
$MESS['SYS_AUTH_CHANGE_CONFIRM']       = 'Подтверждение пароля';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_CHANGE_SUBMIT']        = 'Изменить пароль';
$MESS['SYS_AUTH_CHANGE_AUTH']          = 'Авторизация';
$MESS['SYS_AUTH_CHANGE_REQUIRED']      = 'Эти поля обязательны для заполнения';


Есть еще один момент, о котором есть смысл упомянуть. Если при изменении пароля не заполнить поле «E-mail», появляется сообщение об ошибке «Логин должен быть не менее 3 символов». Где это изменить, я не нашел, видимо где-то в недрах ядра Битрикс. Поэтому небольшой хак:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div>

<h3><?= GetMessage('SYS_AUTH_CHANGE_TITLE'); /* заголовок формы */ ?></h3>

<?php
// небольшй хак, который убирает сообщение о длине логина
if (isset($arParams['AUTH_RESULT']['TYPE'])
    && $arParams['AUTH_RESULT']['TYPE'] == 'ERROR'
    && false !== iconv_strpos($arParams['AUTH_RESULT']['MESSAGE'], 'Логин должен быть')) {
    $arParams['~AUTH_RESULT']['MESSAGE'] = 'Недопустимое значение поля «E-mail»';
}
?>

<p><?php ShowMessage($arParams["~AUTH_RESULT"]); /* сообщение о результате смены пароля */ ?></p>

Поиск:
CMS • Web-разработка • Авторизация • Битрикс • Компонент • Регистрация • Форма • Шаблон компонента

Bitrix- Кастомизация админки- статьи разных вариантов. Но почти все через обработчики.

function ChangeMyContent(&$strContent) {

    global $APPLICATION;

 

    //echo $_SERVER[«PHP_SELF»];

 

    if ($_SERVER[«PHP_SELF»] == ‘/bitrix/admin/dealer_reserve_list.php’)

    {

        if (preg_match_all(‘#<tr (.*?)>#ims’, $strContent, $arTrMatch))

        {

            foreach ($arTrMatch[0] as $strTrHtml)

            {

                if (strpos($strTrHtml, «title») !== false)

                {

                    if (preg_match(‘#ondblclick=».*?» title=»Двойной щелчок — (.*?)»#ims’, $strTrHtml, $arClassMatch))

                    {

                        $strNewTrHtml = str_replace(array($arClassMatch[0], «adm-list-table-row»), array(

                          »,

                          «adm-list-table-row » . $arClassMatch[1],

                            ), $strTrHtml);

                        $strContent = str_replace($strTrHtml, $strNewTrHtml, $strContent);

                    }

                }

            }

        }

    }

    elseif ($_SERVER[«PHP_SELF»] == «/bitrix/admin/get_search.php» && preg_match(«#^\d+$#», $_POST[«q»]))

    {

        //

 

        if (CModule::IncludeModule(«sale»))

        {

            $arOrder = CSaleOrder::GetByID($_POST[«q»]);

            if ($arOrder[«ID»] > 0)

            {

                $strURL = ‘/bitrix/admin/sale_order_detail.php?ID=’ . $arOrder[«ID»] . ‘&filter=Y&set_filter=Y&lang=ru’;

                $strAddon = ‘

 

<table>

<tr>

<th>&nbsp;Заказы</th>

<td>

<a href=»‘ . $strURL . ‘»><spanID»] . ‘»>Заказ ‘ . $arOrder[«ID»] . ‘</span></a>

</td>

</tr>’;

 

                if (strpos(‘<table>’, $strContent) !== false)

                    $strContent = str_replace(‘<table>’, $strAddon, $strContent);

                else

                    echo $strAddon . ‘</table>

<script type=»text/javascript»>

if (obSearch = document.getElementById(«bx-search-input»))

{

obSearch.onkeydown = function(evt)

{

var code = evt ? evt.which : window.event.keyCode;

if (code == 13) {

if(document.getElementById(«search-order-«+obSearch.value))

document.location = «/bitrix/admin/sale_order_detail.php?ID=»+obSearch.value+»&filter=Y&set_filter=Y&lang=ru»;

}

}

}

</script>’;

            }

        }

    } elseif ($_SERVER[«PHP_SELF»] == «/bitrix/admin/search_sitemap.php» && stripos($strContent, «sitemap_index.xml»))

    {

        include($_SERVER[«DOCUMENT_ROOT»] . ‘/system/admin/sitemap_addon.php’);

    }

    elseif ($_SERVER[«PHP_SELF»] == «/bitrix/admin/iblock_element_edit.php» && $_REQUEST[«IBLOCK_ID»] == 51)

    {

        if (preg_match(‘#<input name=»PROP\[341\].*?>#ims’, $strContent, $arM))

        {

            $strAddon = ‘ <input type=»file» name=»dealer_source_file»>’;

            $strContent = str_replace($arM[0], $arM[0] . $strAddon, $strContent);

        }

    }

    elseif ($_SERVER[«PHP_SELF»] == «/index.php»)

    {

        $strContent = str_replace(‘<link href=»/bitrix/templates/nametemplate/styles.css’, ‘<link href=»/bitrix/templates/nametemplate/styles_index.css’, $strContent);

    }

    elseif (strpos($APPLICATION->GetCurPage(), «/bitrix/admin/sale_order.php») === 0)

    {

        // Подсвечивать текст красным , если добавлены комментарий клиента или менеджера

        if (strpos($strContent, «Комментарии») !== false)

        {

            preg_match_all(«#/bitrix/admin/sale_order_detail\.php\?ID=(\d+)#», $strContent, $arM);

            if (!empty($arM[1]))

            {

                $arSearchReplace = array();

                $rsOrder = CSaleOrder::GetList(array(), array(«ID» => $arM[1]));

                while ($arOrder = $rsOrder->Fetch()) {

                    if (!empty($arOrder[«COMMENTS»]))

                        $arSearchReplace[‘<td>’ . $arOrder[«COMMENTS»]] = ‘<td><span>’ . $arOrder[«COMMENTS»] . ‘</span>’;

 

                    if (!empty($arOrder[«USER_DESCRIPTION»]))

                    {

                        $arSearchReplace[‘<td>’ . $arOrder[«USER_DESCRIPTION»]] = ‘<td><span>’ . $arOrder[«USER_DESCRIPTION»] . ‘</span>’;

                    }

                }

            }

 

            $strContent = str_replace(array_keys($arSearchReplace), array_values($arSearchReplace), $strContent);

        }

 

// if(!empty($arOrder[«USER_DESCRIPTION»]) || !empty($arOrder[«COMMENTS»]))

// $arResult[$arOrder[«ID»]] =’tr-red-bg’;

 

        $strAddContent = »;

 

        if ($_REQUEST[«mode»] == «frame»)

        {

            $strAddContent .= ‘<script type=»text/javascript»> if(typeof colorizeOrderList == «function») colorizeOrderList(); </script>’;

        }

        else

            $strAddContent .= ‘<script type=»text/javascript»> $(document).ready(function() { colorizeOrderList(); }); </script>’;

 

        $strContent .= $strAddContent;

    } elseif (strpos($APPLICATION->GetCurPage(), «/bitrix/admin/sale_order_detail.php») === 0)

    {

        if ($_REQUEST[«ID»] > 0)

            $arOrder = CSaleOrder::GetByID($_REQUEST[«ID»]);

// 12/01/2017

// Выведем все заказы текущего пользователя, отсортированные по дате заказа

     $arFilter = Array(

         «USER_ID» => $arOrder[‘USER_ID’],

      );

        $vypolnen=0;

        $work=0;

        $canseled=0;

 

         $db_sales = CSaleOrder::GetList(array(«DATE_INSERT» => «ASC»), $arFilter);

             while ($ar_sales = $db_sales->Fetch())

                 {

                   if ($ar_sales[‘STATUS_ID’]==’F’){

                      $vypolnen++;

                   } elseif($ar_sales[‘STATUS_ID’]==’N’){

                    $work++;

                   } elseif($ar_sales[‘STATUS_ID’]==’C’){

                    $canseled++;

                   }else {

                     $work++;

                   }

                 }

if ($vypolnen==0){$vypolnen=’ ‘;}

if ($work==0){$work=’ ‘;}

if ($canseled==0){$canseled=’ ‘;}

 

$rsUser = CUser::GetByID($arOrder[‘USER_ID’]);

$arUser = $rsUser->Fetch();

// изменил 09.2017

//$email_user = $arUser[«EMAIL»];

$email_user = $arUser[«LOGIN»];

 

        $strContent = str_replace($email_user.'</a>’, $email_user.»</a><span> | <span> <b>».$canseled.» </b></span> | <span><b> «.$vypolnen.»</b> </span> | <span> <b>».$work.»</b></span> |<span>», $strContent);

 

 

        if (preg_match(«#<td valign=\»top\»>Оператор перезвонит.*?</tr>#ims», $strContent, $arM))

        {

            $strTr = $arM[0];

            preg_match_all(«#<td(.*?)</td>#ims», $strTr, $arTD);

            if (strpos($arTD[1][1], «Да») > 0)

                $strContent = str_replace(«Оператор перезвонит (доступно пн-пт 10-18):», «<span>Оператор перезвонит (доступно пн-пт 10-18):</span>», $strContent);

        }

 

        if (preg_match(‘#<td valign=»top»>Покупатель:</td>\s+<td valign=»middle»>(.+?)</td>#’, $strContent, $arM))

        {

            $strUserComment = trim($arM[1]);

            if (!empty($strUserComment))

            {

                $strContent = str_replace(«Покупатель:», «<span>Покупатель:</span>», $strContent);

            }

        }

 

        if (preg_match(‘#id=»manager-comment-text».*?>(.*?)</textarea>#’, $strContent, $arM))

        {

            $strAdminComment = trim($arM[1]);

            if (!empty($strAdminComment))

            {

                $strContent = str_replace(«Комментарий менеджера:», «<span>Комментарий менеджера:</span>», $strContent);

            }

        }

 

        // Сделать название СД  ссылкой. При клике переход в новом окне вот сюда http://site/bitrix/admin/iblock_element_edit.php?WF=Y&ID=13133&type=system&lang=ru&IBLOCK_ID=29&find_section_section=-1

        if (preg_match(‘#<span>(.*?)</span>#ims’, $strContent, $arM))

        {

            if ($arOrder[«DELIVERY_ID»] > 0 && CModule::IncludeModule(«iblock»))

            {

                $dbOrderProps = CSaleOrderPropsValue::GetList(

                        array(«SORT» => «ASC»), array(«ORDER_ID» => $arOrder[«ID»], «CODE» => array(«LOCATION»))

                );

                if ($arOrderProps = $dbOrderProps->GetNext())

                    $intLocationID = $arOrderProps[«VALUE»];

 

                // выбор ИД самовывоза при нескольких

                $dbOrderProps_1 = CSaleOrderPropsValue::GetList(

                        array(«SORT» => «ASC»), array(«ORDER_ID» => $arOrder[«ID»], «CODE» => array(«PVZ_ID»))

                );

                if ($arOrderProps_1 = $dbOrderProps_1->GetNext())

                    $int_ID_PVZ = $arOrderProps_1[«VALUE»];

 

                if (!$int_ID_PVZ){

                    $ar_filter_id=array(

                      «ACTIVE» => «Y»,

                      «IBLOCK_ID» => 29,

                      «PROPERTY_LOCATION» => array($intLocationID, false),

                      array(

                        «LOGIC» => «OR»,

                        «PROPERTY_DELIVERY» => $arOrder[«DELIVERY_ID»],

                        «PROPERTY_DELIVERY_IDS» => $arOrder[«DELIVERY_ID»]

                      )

                     );

                 } else {

                    $ar_filter_id=array(

                       «ACTIVE» => «Y»,

                       «IBLOCK_ID» => 29,

                       «ID» =>$int_ID_PVZ,

                      );

                 }

                $rsI = CIBlockElement::GetList(Array(«SORT» => «ASC»), $ar_filter_id, false, false, array(«ID», «IBLOCK_ID», «NAME», «IBLOCK_SECTION_ID»));

                if ($arI = $rsI->GetNext())

                {

                    $strNewDeliverySign = ‘<span><a target=»_blank» href=»http://’ . $_SERVER[«HTTP_HOST»] . ‘/bitrix/admin/iblock_element_edit.php?WF=Y&ID=’ . $arI[«ID»] . ‘&type=system&lang=ru&IBLOCK_ID=’ . $arI[«IBLOCK_ID»] . ‘&find_section_section=-1″>’ . $arM[1] . ‘</a></span>’;

                    $strContent = str_replace($arM[0], $strNewDeliverySign, $strContent);

                }

            }

        }

    }

 

    if (strpos($APPLICATION->GetCurPage(), «/bitrix/admin/sale_order_detail.php») === 0 || strpos($APPLICATION->GetCurPage(), «/bitrix/admin/sale_order_new.php») === 0)

    {

        $isEditPage = strpos($APPLICATION->GetCurPage(), «/bitrix/admin/sale_order_new.php») === 0;

 

        // titles

        $arTmpSearch = array(«Дата рождения», «Служебные поля»);

        if ($isEditPage)

        {

            $arTmpSearch[] = ‘Покупатель’;

            $arTmpSearch[] = ‘Параметры заказа’;

            $arTmpSearch[] = ‘Отгрузка товаров в заказе’;

        }

 

        $arSearchReplace = array();

        foreach ($arTmpSearch as $strTmp)

            $arSearchReplace[«>» . $strTmp . ‘<‘] = ‘ data-type=»js-hidden-parent»>’ . $strTmp . ‘<‘;

        $strContent = str_replace(array_keys($arSearchReplace), array_values($arSearchReplace), $strContent);

 

 

        $arTmpSearch = array(«Последнее изменение», «Тип плательщика», «E-Mail», «Фамилия», «Отчество», «Имя», «Оператор перезвонит (доступно пн-пт 10-18)», «День рождения», «Месяц», «Год», «Страховка доставки»);

        if ($isEditPage)

            $arTmpSearch = array_merge($arTmpSearch, array(«Покупатель», «Купон на скидку», «Страховка доставки», «Номер документа отгрузки», «Дата документа отгрузки», «Номер платежного документа», «Дата платежного документа», «Статус заказа», ‘Заказ отменен’, ‘Причина отмены’, ‘Индекс почтовый’, ‘Служба доставки в регион’, ‘Трекинг код доставки’, ‘Тип доставки ШЛ’, ‘Цена отмены’, ‘Проблема с заказом’, ‘Отгрузить заказ’));

 

        $arTmpFound = array();

        if ($isEditPage)

        {

            preg_match_all(‘#width=»40%».*?>(\s*?)(.*?):(\s*?)<#s’, $strContent, $arM);

            foreach ($arM[2] as $intCnt => $strTdTitle)

            {

                $strReadyTdTitle = trim($strTdTitle);

 

                if (in_array($strReadyTdTitle, $arTmpSearch))

                {

                    $arTmpFound[] = $arM[1][$intCnt] . $strTdTitle . «:» . $arM[3][$intCnt];

                }

            }

        }

        else

        {

            if (preg_match(‘#id=»edit1_edit_table»>.*?Состав заказа#ims’, $strContent, $arM))

            {

                preg_match_all(‘#<tr.*?>\s*<td.*?>(\s*?.*?:{0,1}\s*?)</td>#s’, $arM[0], $arM);

                foreach ($arM[1] as $intCnt => $strTdTitle)

                {

                    $strReadyTdTitle = trim(str_replace(«:», «», $strTdTitle));

 

                    if (in_array($strReadyTdTitle, $arTmpSearch))

                    {

                        $arTmpFound[] = $strTdTitle;

                    }

                }

            }

        }

 

 

        $arSearchReplace = array();

        foreach ($arTmpFound as $strTmp)

            $arSearchReplace[«>» . $strTmp] = ‘ data-type=»js-hidden»>’ . $strTmp;

 

        $strContent = str_replace(array_keys($arSearchReplace), array_values($arSearchReplace), $strContent);

 

        $strContent = str_replace(«Служебные поля», «<span></span>Служебные поля», $strContent);

    }

}

Главный модуль: Настройки

Список настроек
Детальное описание настроек
Заголовок: Позволять ли пользователям регистрироваться самостоятельно?
Идентификатор: new_user_registration
Описание: Если данный параметр установлен (равенство «Y»), то в стандартном компоненте

/ основной / авторизация / авторизация.php ,

/main/auth/authorize_registration.php

будет доступна ссылка «Регистрация».
По умолчанию: Y
Заголовок: При регистрации добавок в группу.
Идентификатор: new_user_registration_def_group
Описание: В данном параметре можно указать группу к которому будет автоматически приписываться новый пользователь при его регистрации (при вызове функций CUser :: Register, CUser :: SimpleRegister).
По умолчанию: 2 (группа Все)
Заголовок: Разрешить запоминание авторизации.
Идентификатор: store_password
Описание: Если данный параметр установлен (равенство «Y»), то авторизация пользователя будет сохраняться в его cookie файлах, при установке флага «Запомнить меня на этом компьютере» в момент авторизации.Данный параметр также используется в стандартных компонентах

/main/auth/authorize.php ,

/main/auth/auth_form.php ,

/main/auth/authorize_registration.php

для показа / скрытия флага «Запомнить меня на этом компьютере».
По умолчанию: Y

68

Заголовок: Использовать защищенное хранение авторизации в cookie-файлах
Идентификатор: use_secure_password_cookies

Описание параметра: Авторизация «установлен (равенство» Y «), то данный параметр будет управлять типом файла cookie, который будет храниться информация необходимая для авторизации.Если значение данного параметра равно «Y», то авторизации cookie будут устанавливаться с флагом безопасности, это означает, что пользователь будет автоматически авторизован на сайте только если он заходит на него по защищенному протоколу HTTPS.
По умолчанию: N
Заголовок: Адрес электронной почты или список адресов через запятую на который будут дублироваться все исходящие сообщения.
Идентификатор: all_bcc
Описание: Адрес электронной почты или список адресов через запятую на которые будут дублироваться все исходящие сообщения.
По умолчанию:
Заголовок: Отправлять в письме системы почтового события и шаблона.
Идентификатор: send_mid
Описание: Если установлен данный параметр (равенство «Y»), то к телу письма снизу будет добавлено:

  MID:   EVENT_ID  .   TEMPLATE_ID   (  DATE_EVENT  )  

Где:

  • EVENT_ID — ID почтового события
  • TEMPLATE_ID — ID почтового шаблона
  • DATE_EVENT — дата создания почтового события
По умолчанию: N
Заголовок: Дублировать E-Mail адрес в заголовок.
Идентификатор: fill_to_mail
Описание: Если установлен данный параметр (равенство «Y»), то заголовок письма будет дополнительно продублировано поле «To».
По умолчанию: N
Заголовок: Электронная почта администратора сайта (отправитель по умолчанию)
Идентификатор: email_от
Описание: В данный параметр как правило хранят EMail администратора сайта.Этот адрес электронной почты доступен при редактировании почтовых шаблонов в поле # DEFAULT_EMAIL_FROM #.
По умолчанию: «admin @». $ _ SERVER [«SERVER_NAME»]
Заголовок: Конвертировать символы новой строки формата Unix в Windows формат при отправке электронной почты
Идентификатор : CONVERT_UNIX_NEWLINE_2_WINDOWS
Описание: Если значение данного параметра «Y», то в теле сообщения все символы «новая строка» (\ n) будут заменены парой символов «перевод каретки» + «новая строка» (\ r \ п).
Когда сайт был изначально создан на хостинге Unix (где во всех почтовых шаблонах в теле сообщения новая строка обозначалась символом \ n), а затем перенесен на хостинг Windows (где новая строка обозначается уже парой символов \ r \ n) . А так как в соответствии со стандартом RFC 2822 (стандарт формирования почтовых сообщений) в теле сообщения недопустимо использование по отдельным символам \ n (или \ r), то при разборе сообщения ошибки почтовым сервером могут быть.

За перевод символа «новая строка» обозначают как LF (перевод строки), а символ «каретки» обозначают как CR (возврат каретки).

По умолчанию: N (не конвертировать)
Заголовок: Конвертировать 8-битные символы в заголовке письма.
Идентификатор: convert_mail_header
Описание: В соответствии со стандартом RFC 2822 в заголовке письма (в полях «Кому», «От», «Тема», «CC», «BCC» и т. .п.) допустимо использование только символов с кодами от 33 (100001) до 126 (1111110) (это латинские символы, цифры, знаки препинания), данные символы называют 7-битными. Символы, коды которых лежат в указанном диапазоне данного (начиная с кода 128), называют 8-ми и более битными символами, их использование в заголовках писем по стандарту RFC 2822 недопустимо и многие почтовые сервера не указана 8-битные символы в заголовках писем в соответствии с этим стандартом.

Поэтому, если вы, например, используете кириллические символы в заголовке своих писем, то вам необходимо установить данный параметр в значение «Y», что позволит сконвертировать 8-битные символы в формате «MIME base64», используя для передачи бинарных данных в системе не поддерживающих 8-битные символы.
По умолчанию: Y (конвертировать)
Заголовок: Название сайта.
Идентификатор: имя_сайта
Описание: В данном параметре можно задать по умолчанию для названия сайта (поле «Название сайта» в настройках сайта). Используется как правило в почтовых шаблонах в поле # SITE_NAME #.
По умолчанию: равен значению стандартного PHP $ _SERVER [«ИМЯ САЙТА»]
Заголовок: URL сайта (без http: //).Например: www.mysite.com
Идентификатор: имя_сервера
Описание: В данном параметре можно задать значение по умолчанию для адреса сайта (поле «URL сервера» в настройках сайта). Используется как правило в почтовых шаблонах в поле # SERVER_NAME #.
По умолчанию: равен значению стандартного PHP $ _SERVER [«SERVER_NAME»]
Заголовок: Имя сервера, содержащего обновления.
Идентификатор: update_site
Описание: URL сервера хранего обновления.
По умолчанию: www.bitrixsoft.ru
Заголовок: Имя префикса для названия cookies
Идентиатор: cookie_name
Описание: Префикс Имя cookie установленных данным порталом.
По умолчанию: BITRIX_SM
Заголовок: Папка по умолчанию для загрузки файлов.
Идентификатор: upload_dir
Описание: Любой подкаталог каталога DocumentRoot, в котором будут храниться все файлы загружаемые на сервере и сохраняемые файлы CFile :: SaveFile. Данный параметр широко используется в функциях класса CFile.Под термином «загружаются файлы» как правило загружаются все файлы, загружаемые через HTML-формы, за исключением файлов, которые могут быть загружены в любой каталог через меню «Структура сайта» -> «Управление» -> «Загрузить файл».
По умолчанию: загрузить
Заголовок: Посылать в заголовке статус 200 на 404 ошибку.
Идентификатор: header_200
Описание: Если данный параметр установлен (равенство «Y»), то при возникновении 404 ошибки на сервере (страница не найдена) будет отсылаться статус 200 (страница найдена).Как правило устанавливает данный параметр для индексирующих роботов-систем при создании каких-либо сервисов на сайте на базе 404 ошибки. Например, для создания «красивых адресов» без параметров (например, /news/345.php), это также называют ЧПУ (человеко-понятные URL’ы).
По умолчанию: Y
Заголовок: Тип меню для нулевого уровня карты сайта.
Идентификатор: map_top_menu_type
Описание: Данный параметр используется стандартным компонентом / main / map / default.php выводящим карту сайта. В нем хранится тип меню с которым будет построен начальный уровень карты сайта.
По умолчанию: верх
Заголовок: Тип меню для остальных уровней карты сайта.
Идентификатор: map_left_menu_type
Описание: Данный параметр используется стандартным компонентом / main / map / default.php выводящим карту сайта. В нем хранится тип меню которого будут построены последующие уровни карты сайта (после начального уровня).
По умолчанию: слева

служебной

Заголовок: Режим используется вывода (error_reporting)
Идентификатор: error_reporting
Описание: Данный параметр части пролога для установки уровня сообщений об ошибках (ошибке) и предупреждениях (предупреждении) PHP.
По умолчанию: Только ошибки (E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_PARSE)
Заголовок: Распространять авторизацию на все домены.
Идентификатор: auth_multisite
Описание: Если данный параметр установлен (равенство «Y»), то авторизация пользователя (хранимая в cookie или текущая сессия) будет распространяться на все домены всех сайтов портала.
По умолчанию: N
Заголовок: Сохранять исходные имена загружаемых файлов.
Идентификатор: save_original_file_name
Описание: Если данный параметр установлен (равенство «Y»), то все имена всех загружаемых файлов будут сохранены в исходном виде. В противном случае эти имена будут преобразованы в уникальные с помощью хэш функции функции MD5.
По умолчанию: N
Заголовок: Автоматически заменять невалидные символы в именах загружаемых файлов.
Идентификатор: convert_original_file_name
Описание: Если данный параметр установлен (равенство «Y»), то в именах загружаемых файлов все невалидные символы являются символами латинского алфавита, цифрами, тире (-), подчеркиванием (_), точка (.) будут преобразованы в произвольные валидные символы.
По умолчанию: Y

закрыть закрыть

Заголовок: Закрытие публичной части
Идентификатор: site_stopped
Описание: Позветолять публичную часть сайта. Возможные значения: «Y» (публичная часть закрыта) и «N» (публичная часть открыта).
По умолчанию: N

© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020

Наверх

.

Имя сайта в тексте страниц — как избежать проблем в 1С-Битрикс

Иногда встречается задача на статических страницах указать адрес сайта. Обычно эту задачу решают контент-менеджеры при наполнении, и, что называется «в лоб». Т.е. прямо в тексте показать конструкцию типа http://site_name.ru или www.site.com. Так же часто доменное имя сайта на статических страницах в случае возникновения необходимости ссылки на другие разделы сайта из текста.

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

текст_ссылки

Эта конструкция в большинстве случаев оказывается обёрнутыми различными стилями, серьёзно мешающими обнаружению средств в визуальном редакторе (большинство материалов-менеджеров предпочитают пользоваться подобными средствами упрощения работы), так и в тексте страницы.

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

Как решать проблему?

Относительная адресация страниц решит проблему ссылок!

Большинство систем управления контентом (в т.ч. 1С-Битрикс) позволяют использовать относительную адресацию на страницах вместо абсолютной.В частности, это позволяет описать вышеупомянутую проблему следующим образом:

доставкой

В случае, если необходимо создать ссылку в разделе нам поможет следующая конструкция:

Сайт

Альтернативным образом следует поступать с адресами для картинок.

Пример правильно описанного фона таблицы:

Пример правильно описанной картинки:

Обратите внимание! Мы не прописываем никаких параметров кроме адресов в этих примерах! За примерами обратитесь к пособию по HTML.

Отлично, теперь все изображения и ссылки имеют относительные пути. Что дальше?

Переменная с именем сайта на 1С-Битрикс!

То, что я сейчас опишу в некоторой мере крамола. Так делать неправильно. Но иногда можно и нужно.

Суть заключается в том, что согласно идеологии 1С-Битрикс считается неправильным совершать прямые обращения к базе данных из кода страницы и минимизировать php код в теле, стараясь по максимуму использовать встроенное API. Так шанс риск появления ошибок и уязвимостей, поскольку код CMS уже проверен тысячами разработчиков и десятками тысяч работающих проектов.К тому же, так вы остаётесь в рамках общепринятого стандарта, и вашим коллегам будет проще принять у вас сайт.

Однако иногда имя сайта всё же необходимо написать в тексте. Например, для того, чтобы объяснить пользователю, где он находится и как сюда вновь попасть. Причин может быть масса. Важно, что при смене файлов одного проекта для работы над другим перенесено и это неверно указанное доменное имя! Опечатка будет вводить пользователей в заблуждение, некоторые и вовсе решены, что сайт сделан слишком безответственно.

Для решения этой проблемы следует использовать константу API 1С-Битрикс SITE_SERVER_NAME, вызов которого создается следующим образом в тексте страницы (это относится только к страницам с расширением php, поскольку на статических .html страницах по умолчанию выполнение PHP кода невозможно!):

Хинт

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

Будьте максимально аккуратны с подобными переменными и константами!

Это очень удобные инструменты для больших сайтов, но старайтесь не слишком использовать их, вполне возможно, что для наведения порядка на 10 статических страниц вашего сайта достаточно грамотного контент-менеджера…

И конечно не забывайте, что имя сайта задаётся как настройках конкретного сайта (Настройки — Настройки продукта — Сайты — Список сайтов), так и в настройках главного модуля 1С-Битрикс.Будьте осторожны с редактированием этих полей, поскольку это повлияет и на другие части сайта! Лучше, если манипуляции будут осуществляться опытный администратор 1С-Битрикс.

.

Настройка серверов для обеспечения многосайтовости на виртуальная машина «Битрикс»

Торговые сети, работающие с различными регионами, со временем приходят к необходимости показывать локальные версии каждого региона в отдельности. Сегодня мы расскажем о том, как выполнить эту задачу на уровне серверов для BitrixVM.

1. Первая настройка Nginx. Изменения настроек в файле s1.conf

Перейдя к файлу s1.conf по пути / etc / nginx / bx / site_avaliable / s1.conf

Найдем в нем фрагмент кода

сервер {

имя сервера _;

установить $ proxyserver «http://127.0.0.1:8888»;
установить $ docroot «/ home / bitrix / www»;

индекс index.php;
корень / домашний / битрикс / www;
}

И заменим параметр «server_name», указав вместо него домен в зоне RU

server {


имя_сервера * .sitename.ru sitename.ru;

установить $ proxyserver «http://127.0.0.1:8888»;
установить $ docroot «/ home / bitrix / www»;

индекс index.php;
корень / домашний / битрикс / www;
}

2. Вторая настройка Nginx. Настройки файла для другой доменной зоны

В нашем исследовании доменная зона UA. Перейдем к файлу bx_ext_sitename.com.ua.conf по адресу /etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf

Найдем фрагмент кода

сервера {
слушать 80;

имя_сервера имя_сайта.com.ua www.sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;
error_log /var/log/nginx/sitename_error.log предупреждать;


установить $ proxyserver «http://127.0.0.1:8887»;

set $ imcontenttype «text / html; charset = utf-8»;
установить $ docroot «/home/bitrix/ext_www/sitename.com.ua»;

индекс index.php;
корень «/home/bitrix/ext_www/sitename.com.ua»;

# Перенаправить на ssl при необходимости
если (-f / home / bitrix / ext_www / sitename.(. *) $ https: // $ host $ 1 постоянный; }

}

И отредактируем его, также заменив параметр server_name

server {
слушать 80;

имя_сервера * .sitename.com.ua sitename.com.ua;

access_log /var/log/nginx/sitename_access.log main;
error_log /var/log/nginx/sitename_error.log предупреждать;


установить $ proxyserver «http://127.0.0.1:8887»;

set $ imcontenttype «text / html; charset = utf-8»;
установить $ docroot «/ home / bitrix / ext_www / sitename.(. *) $ https: // $ host $ 1 постоянный; }

}

3. Первая настройка Apache . Файл default.conf

Перейдя к файлу default.conf по адресу /etc/httpd/bx/conf/default.conf

Добавляем в начало файла фрагмент кода

Listen 127.0.0.1:8888

ServerName sitename.ru
ServerAlias ​​* .sitename.ru

4. Вторая настройка Apache .Файл bx_ext_sitename.com.ua.conf

Найдя строку

ServerAlias ​​www.sitename.com.ua

Заменяем ее другой

ServerAlias ​​* .sitename.com.ua

5. Перезагрузка и 5.

Готово!

——————————-
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!

Источник:

Назад в раздел

.

Специальные переменные

noistic_agent_

Имя переменной Тип Описание
ПРИМЕНЕНИЕ Г Глобальный объект класса CMain, предназначенная для глобальной глобальной системы стандартных стандартных стандартных функций, меню и т.д.
ПОЛЬЗОВАТЕЛЬ Г Глобальный объект класса CUser, хранящий в себе данные авторизации текущего пользователя.
DB Г объект класса CDataBase, предназначенный для работы с базой данных.
DB Тип С Тип базы: «mysql», «mssql» или «oracle».

Пример:

 $ DBType = "mysql"; 
DBHost С Для следующих типов базы данных:

  • MySQL — адрес сервера базы данных, например, — «localhost»
  • Oracle — не используется

Пример:

 $ DBHost = "localhost"; 
 $ DBHost = "локальный: 3307"; 
Имя DB С Для следующих типов базы данных:

  • MySQL — имя базы
  • Oracle — строка соединения

Пример для MySQL:

 $ DBName = "bitrix"; 

Пример для Oracle:

 $ DBName = "
    (ОПИСАНИЕ =
        (ADDRESS_LIST =
            (АДРЕС =
                (ПРОТОКОЛ = TCP)
                (HOST = 192.168.0.1)
                (ПОРТ = 1521)
            )
        )
        (CONNECT_DATA =
            (SERVICE_NAME = BX)
        )
    )
"; 
DBLogin С Логин пользователя для доступа в базу данных.

Пример:

 $ DBLogin = "root"; 
DB Пароль С Пароль пользователя для доступа в базу данных.

Пример:

 $ DBPassword = "123456"; 
DBDebug С
И
Если переменная будет равна «true», то в случае ошибки при создании соединения с базой в любом SQL-запросе, сообщение об ошибке и полный текст этой ошибки будет Google в браузере. В противном случае — полный текст будет показан только администратору сайта.

Пример:

 $ DBDebug = true; 
DBDebugToFile С
И
Если переменная будет равна «true», то все запросы SQL к базе данных и время их выполнения будут записываться в лог-файл / mysql_debug.sql (или /oracle_debug.sql ). Данная возможность
используется как правило для получения данных о скорости выполнения SQL-запросов к базе данных.

Ведение подобного лога может сильно замедлить работу сайта, поэтому пользоваться стоит кратковременно.

Пример:

 $ DBDebugToFile = true; 
clear_cache Т. Если значение данной модели — «Y», то это отключает кеширование на текущей странице.

Примечание . Только для пользователей авторизованных с административными правами.

Пример:

 http://www.site.ru/?clear_cache=Y 
clear_cache_session Т Если значение данной модели — «Y», то это отключает кеширование в сессии. Для включения кэширования — достаточно один раз присвоить эту функцию «N».

Примечание .Только для пользователей авторизованных с административными правами.

Пример:

 http://site.ru/?clear_cache_session=Y 
 http://site.ru/?clear_cache_session=N 
сжать Т. Размер страницы до сжатия, размер страницы после сжатия, коэфициент сжатия.Для отключения данной информации — достаточно один раз назначить эту функцию «N».

Пример:

 http://www.site.ru/?compress=Y 
 http://www.site.ru/?compress=N 
show_page_exec_time Т Если значение данной модели — «Y», то внизу будет выводиться время выполнения данной страницы на сервере. Данная информация будет выводиться в рамках сессии.Для отключения ее вывода — достаточно один раз присвоить эту функцию «N».

Данная переменная позволяет получить объективную информацию о скорости работы сайта.

Пример:

 http://site.ru/?show_page_exec_time=Y 
 http://site.ru/?show_page_exec_time=N 
show_include_exec_time Т Если значение данной модели — «Y», то на странице показано выполнение всех функций CMain :: IncludeFile, подключающую как компоненты так и обычные файлы.Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить эту функцию «N».

Примечание . Только для пользователей авторизованных с административными правами.

Пример:

 http://site.ru/?show_include_exec_time=Y 
 http://site.ru/?show_include_exec_time=N 
show_lang_files Т. Если значение данной модели — «Y», то внизу страницы будет выводиться список использования на данной странице поиска по ним.Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить эту функцию «N».

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

Пример:

 http://www.site.ru/?show_lang_files=Y 
 http://www.site.ru/?show_lang_files=N 
no_keep_statistic_ КЛЮЧ Т Если значение данной модели — «Y», то это позволит отключить сбор статистики в сессии.Для включения сбора статистики — достаточно один раз присвоить эту функцию «N». Как правило устанавливается переменную использовать для отключения сбора статистики в момент захода на сайт администратора.

KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php

Пример:

 http://site.ru/?no_keep_statistic_SM4-ML-PZDIO7TUMT3WP7H=Y 
 http://site.ru/?no_keep_statistic_SM4-ML-PZDIO7TUMT3WP7H=N 
70004

7 Т Если значение данной модели — «Y», это позволит отключить отработку агентов в сессии.Для включения агента в данной сессии — достаточно один раз использовать эту функцию «N».

KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php

Пример:

 http://site.ru/?no_agent_statistic_SM4-ML-PZDIO7TUMT3WP7H=Y 
 http://site.ru/?no_agent_statistic_SM4-ML-PZDIO7TUMT3WP7H=N 
Данную переменную можно использовать только при вызове скрипта / bitrix / admin / phpinfo.php . Если ее значение будет равным лицензионному ключу, то вышеупомянутый скрипт отрабатывает без подключения
административного пролога.

Пример:

 http://site.ru/bitrix/admin/phpinfo.php?key=SM4-ML-PZDIRTH 

Обозначения типов структур:

  • Г ( г лобальная) — переменная автоматически создаётся в служебной части пролога
  • С ( с оединение с базой) — переменную можно определить только в хранящемся параметре соединения к базе: / bitrix / php_interface / dbconn.php
  • И ( и нициализация) — переменную можно определить в одном из следующих файлов:
    • /bitrix/php_interface/init.php — дополнительные параметры портала
    • / bitrix / php_interface / ID сайта /init.php — дополнительные параметры сайта
  • Т т раница) — переменную можно задать в параметрах страницы при открытии ее в браузере

© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020

Наверх

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *