Перейти к содержимому

Как изменить слово войти в шапке битрикс

  • автор:

Как изменить слово войти в шапке битрикс

Нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter

Шапка и фиксированная шапка

Если вам по каким-то параметрам не подходят имеющиеся 12 шаблонов шапки, вы можете создать свой. Для этого в административной части сайта проделайте путь Контент (1) → Структура сайта (2) → Файлы и папки (3) и перейдите по адресу /bitrix/templates/aspro-allcorp3/page_blocks.

Если вы хотите поменять шапку, то выберите файл с кодом header_#number# и создайте копию. Чтобы изменить фиксированную шапку, скопируйте файл header_fixed_#number#. В #number# указан тип шапки, на основе которого вы будете создавать копию.

Важно переместить новый файл в ту же папку и отметить флажок «Переименовать автоматически».

Новый файл переименуйте, нужно заменить цифру на слово custom. Например, вместо header_2 должно получиться header_custom.

Затем проделайте путь Аспро → Аспро: Allcorp3 → Настройки.

Перейдите в раздел «Шапка» и в самом конце выберите файл header_custom.php.

Как изменить слово войти в шапке битрикс

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

  1. header (шапка, хедер, пролог) — верхняя часть дизайна; хранится в файле header.php шаблона сайта ( Контент > Структура сайта > Файлы и папки > bitrix > templates > [ваш шаблон] );
  2. WORK_AREA — рабочая область, содержащая основной контент; при создании страниц заполняется как раз эта область (например, Контент > Структура сайта > Файлы и папки > index.php );
  3. footer (подвал, футер, эпилог) — нижняя часть дизайна; хранится в файле footer.php шаблона сайта ( Контент > Структура сайта > Файлы и папки > bitrix > templates > [ваш шаблон] ).

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

Рассмотрим часть возможных вариантов разделения сайта на зоны, обозначенные цветами:

  • красный — header (шапка сайта)
  • зелёный — WORK_AREA (рабочая зона, т.е. основной контент)
  • синий — footer (подвал сайта)

Описание приведённых вариантов:
  • в шапке — основная заставка с названием сайта и навигация по странице (верхнее горизонтальное меню, кнопки РЫБЫ.НЕТ и Узнать больше)
  • в подвале — копирайт
  • в шапке — горизонтальное верхнее меню и кнопка РЫБЫ.НЕТ
  • в подвале — блок с контактами и копирайт
  • в шапке сайта нет видимой части кода (то есть в файле header.php есть только служебный код)
  • в подвале — блок новостей, контакты и копирайт

В примере будем использовать разбивку 1 .

Как изменить слово войти в шапке битрикс

Ранее Создание шаблона – первый шаг в интеграции дизайна.

Примечание: Ранее можно было задавать внешний вид шаблона сайта с помощью визуального редактора. С версии 14.0 работа выполняется без визуального редактора.

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

Необходимо выполнить три важных шага:

  1. Редактирование шапки сайта (header.php)
  2. Редактирование подвала сайта (footer.php)
  3. Подключение шапки и подвала (index.php), добавление контента
1. Редактирование шапки сайта (header.php)
  • В папке шаблона откроем файл header.php в режиме редактирования как PHP.
  • Первой строкой пропишем служебный код (защита от подключения файла напрямую без подключения ядра):
    Код отображения заголовка страницы:
ShowTitle(); ?> 
ShowHead(); ?>
 
ShowPanel(); ?>

Пример отредактированного файла header.php с комментариями

Примечание: css-стили в шапке сайта предпочтительнее подключить с помощью метода Asset::addCss() ядра D7.

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

2. Редактирование подвала сайта (footer.php)

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

Пример отредактированного файла footer.php

Copyright © 2019 — Start Bootstrap
Copyright © Blackrock Digital LLC. Code released under the MIT license.

3. Подключение шапки и подвала (index.php), добавление контента

  • Необходимо удостовериться в подключении на странице вывода файлов header.php и footer.php. Для этого в файле главной страницы сайта index.php ( Контент > Структура сайта > Файлы и папки > index.php ) сверим следующие конструкции:
    • первая строка:
    • последняя строка:
  • Добавим статический Т.е. для изменения контента страницы нужно будет вновь отредактировать вручную код страницы index.php. контент. Откроем файл с подготовленной вёрсткой (index.html) и скопируем код между шапкой (header) и подвалом сайта (footer) — тот, который мы в пункте 1 заменяли на #WORK_AREA#, то есть контент сайта. Настроим пути к картинкам. Пропишем в существующих путях уже знакомую константу / .

Пример отредактированного файла index.php с комментариями

О прикорме


Споры о том, на что ловить и чем лучше прикармливать, наверное, никогда не закончатся. Одни предпочи-тают новомодные прикор-мки, изготовленные фирма-ми, специализи-рующимися на их производ-стве; другие ни за что не променяют кастрюлю с душистым варевом, над которой они колдовали не один час, словно баба-яга над зельем. Но речь не об этом. Я не буду давать советы и рецепты, а выскажусь по поводу некоторых заблуждений. В большинстве статей пишут, что рыбу можно перекормить большим количеством прикормки. Но никто не пишет конкретных цифр — сколько «много», а сколько «мало» или «достаточно». Потому что никто не знает и никогда не узнает, сколько же это «много». Для одного и килограмм — уже много, а для другого и ведра кажется мало. Но причина не в этом. Давайте на проблему посмотрим с другой стороны.

Почему мы?

Прекрасные пейзажи

Крупная рыба

Тихие места

Дзен

Оснащение плавсредствами

Хорошее настроение

Новости

News image cap

News title

Some quick example text to build on the card title and make up the bulk of the card’s content.

Go somewhere

News image cap

News title

Some quick example text to build on the card title and make up the bulk of the card’s content.

Go somewhere

News image cap

News title

Some quick example text to build on the card title and make up the bulk of the card’s content.

Go somewhere

Связаться с нами

+1 (202) 555-0149
contact@yourwebsite.com

Удобнее, разумеется, настроить вывод динамической информации и работать с ним. Подробнее об этом в следующем уроке.В предыдущем уроке мы создали шаблон главной страницы сайта. Однако пока вся информация на сайте — статическая, и для внесения любых изменений придется править главную страницу index.php. Это не очень удобно, если информация на сайте должна постоянно обновляться. И при этом слишком громоздко.

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

Подробнее.

Готово! Теперь осталось только назначитьОткройте в Административном разделе страницу Настройки > Настройки продукта > Сайты > Список сайтов. С помощью меню действий откройте для редактирования нужный сайт.

Выберите шаблон, который вы хотите применить и условия.

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

Примечание: Всегда можно изменить шапку или подвал сайта, перенеся требуемую часть кода из индексной страницы в файл header.php или footer.php.

Пример: перенос блока «Связаться с нами» в footer.php
Пример:

Перенесём блок Связаться с нами:

  • Откроем индексную страницу сайта index.php, где сейчас располагается этот блок, скопируем его код в буфер обмена и удалим из этого файла;
  • Откроем файл footer.php и вставим в самом начале скопированный код.

Связаться с нами

+1 (202) 555-0149
contact@yourwebsite.com
Copyright © 2019 — Start Bootstrap
Copyright © Blackrock Digital LLC. Code released under the MIT license.

Теперь блок Связаться с нами находится в шаблоне сайта, и при создании новой страницы его не придётся вновь добавлять.

##page.title##

‘, ‘##easy_page##’, «==», «Y» );?>

public static function mail( $to, $subject, $message, $SITE_ID = null )
с версии 1.2.1.

Функция вызывает внутри себя функцию CEvent::Send и работает аналогично. В вернет false или ID элемента таблицы b_event. Используется почтовое событие «ASKARON_API_FUNC_MAIL», которое создано при установке модуля askaron.api.

В случае если $SITE_ID не задан, то функция использует константу SITE_ID в публичной части сайта. В административном разделе для получения $SITE_ID используется метод \Askaron\Api\Func::getDefaultSiteId()

Примеры:

\Askaron\Api\Func::mail( «test@askaron.ru», «Привет мир!», «Тестовое сообщение с сайта» );
?>

Работает аналогично (для публичной части сайта):

$arEventFields = array(
«EMAIL_TO» => $to,
«SUBJECT» => $subject,
«MESSAGE» => $message,
);
\CEvent::Send(
«ASKARON_API_FUNC_MAIL»,
SITE_ID,
$arEventFields
);
?>

objectToArray

mixed function objectToArray( $ob );

Рекурсивно обходит переменную. Все объекты заменяет на массивы с такими же ключами как у объекта.

$arJson = \Askaron\Api\Func::objectToArray( json_decode( » ) );

sortArrayByField

Сортировка по колонке

$arTable = array(
0 => array( «ID» => 12, «NAME» => ‘q100’, ),
1 => array( «ID» => 12, «NAME» => ‘q300’, ),
2 => array( «ID» => 12, «NAME» => ‘q90’, )
);

$arTable = \Askaron\Api\Func::sortArrayByField($arTable, «NAME», SORT_ASC);

sortArrayByFieldNatCase

Сортировка по колонке. Натуральная сортировка позволяет отсортировать более по человечески, чем обычная сортировка.

$arTable = array(
0 => array( «ID» => 12, «NAME» => ‘q100’, ),
1 => array( «ID» => 12, «NAME» => ‘q300’, ),
2 => array( «ID» => 12, «NAME» => ‘q90’, )
);

$arTable = \Askaron\Api\Func::sortArrayByFieldNatCase($arTable, «NAME», SORT_ASC);

//Сортировка сохраняет ключи массива 0, 1, 2

Array (
[2] => Array ( [ID] => 12 [NAME] => q90 )
[0] => Array ( [ID] => 12 [NAME] => q100 )
[1] => Array ( [ID] => 12 [NAME] => q300 )
)

Компоненты

askaron.api.select

Выбор варианта (сортировка, вид, количество) «askaron:askaron.api.select»

Компонент рисует с вариантами выбора.

Выбор варианта

Надписи можно редактировать в настройках компонента.

Возвращает значение выбранного варианта. Используется на странице списка товаров для выбора количества товаров, направления сортировки и внешнего вида.

Результат запоминается в сессии при переключении значения.

Компонент обязательно вернет значение выбранного элемента.

Если ничего не выбрано и нет значения по умолчанию, то вернет значение первого варианта.

Пример:

исправляем шаблон компонента catalog. Размещаем вызов компонента над списком товаров.

IncludeComponent(
«askaron:askaron.api.select»,
«.default»,
array(
«COMPONENT_TEMPLATE» => «.default»,
«NAME» => «Сортировать по»,
«CODE» => «sort_field»,
«NAMES» => array(
0 => «Популярность»,
1 => «Цена по возрастанию»,
2 => «Цена по убыванию»,
),
«VALUES» => array(
0 => «rating_desc»,
1 => «price_asc»,
2 => «price_desc»,
),
«DEFAULT_VALUE» => «rating_desc»,
«URL_CLEAR_PARAMS» => array(
0 => «PAGEN_1»,
1 => «PAGEN_2»,
2 => «»,
)
),
false,
array(‘HIDE_ICONS’ => ‘Y’)
);?>

IncludeComponent(
«askaron:askaron.api.select»,
«.default»,
array(
«COMPONENT_TEMPLATE» => «.default»,
«NAME» => «Показывать по»,
«CODE» => «element_count»,
«NAMES» => array(
0 => «12»,
1 => «24»,
2 => «36»,
),
«VALUES» => array(
0 => «12»,
1 => «24»,
2 => «36»,
),
«DEFAULT_VALUE» => «24»,
«URL_CLEAR_PARAMS» => array(
0 => «PAGEN_1»,
1 => «PAGEN_2»,
2 => «»,
)
),
false,
array(‘HIDE_ICONS’ => ‘Y’)
);?>

IncludeComponent(
«askaron:askaron.api.select»,
«.default»,
array(
«COMPONENT_TEMPLATE» => «.default»,
«NAME» => «Вид»,
«CODE» => «view»,
«NAMES» => array(
0 => «Вид плитка»,
1 => «Вид список»,
),
«VALUES» => array(
0 => «tile»,
1 => «list»,
),
«DEFAULT_VALUE» => «list»,
«URL_CLEAR_PARAMS» => array(
0 => «PAGEN_1»,
1 => «PAGEN_2»,
2 => «»,
)
),
false,
array(‘HIDE_ICONS’ => ‘Y’)
);?>

$arFieldsMap = array(
«rating_desc» => array( «FIELD» => «PROPERTY_rating», «ORDER» => «desc,nulls» ),
«price_asc» => array( «FIELD» => «CATALOG_PRICE_1», «ORDER» => «asc,nulls» ),
«price_desc» => array( «FIELD» => «CATALOG_PRICE_1», «ORDER» => «desc,nulls» ),
);

$section_template = $view;
$arParams[«ELEMENT_SORT_FIELD»] = $arFieldsMap[ $sort_field ][«FIELD»];
$arParams[«ELEMENT_SORT_ORDER»] = $arFieldsMap[ $sort_field ][«ORDER»];
$arParams[«PAGE_ELEMENT_COUNT»] = $element_count;

// выводим список товаров с установленными переменными

Быстрая авторизация

Модуль «Быстрая авторизация» добавляет на сайт сочетание клавиш Ctrl+F10, чтобы быстрее войти. Полезное решение для контент-менеджера и разработчика.

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

Описание модуля

Модуль «Быстрая авторизация» добавляет на сайт сочетание клавиш Ctrl+F10, чтобы быстрее войти. Полезное решение для контент-менеджера и разработчика.

Сочетание Ctrl+F10 экономит два перехода.

  • установите модуль,
  • выйдите,
  • откройте любую страницу сайта,
  • нажмите Ctrl+F10,
  • появится форма авторизации,
  • войдите,
  • вы вернетесь на страницу сайта сразу в режиме правки.

Страница решения в Маркетплейсе:

Включаемый код

Модуль «Включаемый код» предназначен для подстановки любого PHP-кода в любое место на сайте.

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

if(CModule::IncludeModule(«askaron.include»))
<
//здесь можно использовать функции и классы модуля
>
?>

Описание модуля

Модуль «Включаемый код» предназначен для подстановки любого PHP-кода в любое место на сайте.

Модуль решает проблему подстановки какого-либо кода в шаблоны компонентов с включенным кэшированием.

Можно вставлять код прямо в текст элементов инфоблоков, сообщения блогов, уроков учебных курсов и т. д.

Страница решения в Маркетплейсе:
Работает на:
«1С-Битрикс: Управление сайтом» — любые редакции.
«1С-Битрикс: Корпоративный портал» — любые редакции.
Демо-версия полностью функциональная. Срок демо-периода 30 дней.
В составе решения есть готовые примеры:
— текущая дата,
— голосование за рейтинг,
— текущий опрос,
— голосование
— форма обратной связи.
Другие модули могут добавлять дополнительные примеры, например, «Честное голосование»:

Живой пример внутри текста! Это не картинка, а компонент, который вставлен с помощью модуля «Включаемый код»:

(Голосов: 290, Рейтинг: 3.69)
Принцип работы:

1. В папке /bitrix/php_interface/include/askaron.include/ создайте файл file_name.php с любым содержимым.

Допускается использовать папку local: /local/php_interface/include/askaron.include/

2. В любом месте сайта напишите специальный комментарий. Допускаются пробелы, знаки табуляции и переносы строк:

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

3. Начиная с версии модуля 2.0.0 этот комментарий можно не писать. Рекомендуем вызвать функцию, которая напишет этот комментарий.

Функция CAskaronInclude::IncludeFile похожа на $APPLICATION->IncludeFile, но работает отложенно и может использоваться в закешированных шаблонах.

4. Вы можете вызвать включаемый файл и передать в него параметры

5. Во включаемом файле можно, размещать компоненты, подключать css- и javascript-файлы, устанавливать заголовок и свойства страницы.

6. Выполнение включаемых файлов и подстановка результата происходит автоматически в конце работы страницы. Однако, можно использовать функции CAskaronInclude::StartBuffer() и CAskaronInclude::PrintBuffer() и вызвать включаемый файл раньше. Это бывает нужно, когда включаемый компонент работает в режиме AJAX или использует интерфейс Эрмитаж.



Инструменты отладки:

При вызове включаемого файла можно легко себя проверить, нажав кнопку на панели наверху:

При включенной отладке вы увидите, рядом с вызовом включаемого файла свой специальный комментарий и параметры, которые передаем:

Допускаются пробелы, знаки табуляции и переносы строк

Пример использования включаемого кода

Хороший пример размещения компонента отзывов внутри шаблона товара.

Быстрое создание включаемого файла на основе примера

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

В составе решения есть готовые примеры:
— текущая дата,
— голосование за рейтинг,
— баннер,
— текущий опрос,
— голосование
— форма обратной связи.

Создать свой файл на основе примера можно из административного интерфейса:

Создание включаемого файла на основе примера

Внутри файла содержится комментарий, что это файл делает и как его подключать. Нажмите «Просмотр файла»:

Простмотр файла

Создание файла на основе примера подробно описано в статье про размещение компонента « Честное голосование ».

Формат для подключения включаемых файлов

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

Начиная с версии модуля 2.0.0 мы рекомендуем вместо специального комментария писать вызов функции CAskaronInclude::IncludeFile:

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

Простой пример:

Пример с параметрами:

Общий формат:

1. заголовок 2. один или более пробельных символов (пробелы, табы, переносы строк)
3. имя файла
4. один или более пробельных символов (пробелы, табы, переносы строк)
5. любое количество любых символов
6. окончание —>

В пункте 3 имя файла не должно содержать пробелов.

В пункте 5 может содержаться XML, с основным тэгом , а может не быть ничего.

XML содержит список параметров, которые получит включаемый файл в массиве $arParams. Главный тэг должен быть

Парсер обрабатывает XML-тэги только первого уровня ключ => значение:

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

Внутри тэга может быть только текст. Вложенные тэги не допускаются.

Приведенный выше пример с параметрами соответствует коду:

$APPLICATION->IncludeFile(
«/bitrix/php_interface/include/askaron.include/iblock.vote.php»,
array(
«IBLOCK_ID» => «3»,
«ELEMENT_ID» => «15»,
«VOTE_NAMES» => array(
0 => «ужасно»,
1 => «плохо»,
2 => «нормально»,
3 => «хорошо»,
4 => «отлично»,
)
)
);

В XML используется набор спецсимволов:

Спецсимволы следует заменять, когда они попадают в XML, например для подстановки баннера вместе с HTML:

Приведенный пример соответствует коду:

$APPLICATION->IncludeFile(
«/bitrix/php_interface/include/askaron.include/showbanner.php»,
array(
«BANNER_TYPE» => ‘LEFT’,
«HTML_BEFORE» => »,
«HTML_AFTER» => ‘
‘,
)
);

Автоматически заменить все спецсимволы в строке можно функцией:

function specialchars_for_xml( $str )
<
//htmlspecialchars с параметром можно с версии php 5.4, и тогда кавычка ‘ будет '
//htmlspecialchars(«‘», ENT_HTML5);

Классы и функции

Принцип работы модуля:

Вы создаете включаемый файл и размещаете где-нибудь на странице специальный комментарий:

Модуль найдет этот текст и вызовет включаемый и файл в конце выполнения страницы. Результат выполнения включаемого файла поставится вместо вашего комментария.

Класс CAskaronInclude

Функция
void CAskaronInclude::IncludeFile( string $file, array $arParams = array() )

Функция пишет на странице специальный комментарий, вместо которого потом будет подключен включаемый файл.

Функция серьезно облегчает работу по размещению комментария в тексте сайта, чтобы не писать его вручную и не вспоминать формат:

Имя функции и параметры специально напоминают метод $APPLICATION->IncludeFile.

Когда файл подключится, в него точно так же передается массив $arParams.

напишет на странице аналог для подстановки:

Функция
void CAskaronInclude::StartBuffer()

Начинает буферизацию вывода. Работает вместе с функцией CAskaronInclude::PrintBuffer.

Функция
void CAskaronInclude::PrintBuffer()

Заканчивает буферизацию вывода. Выводит содержимое на экран. При этом содержимое разбирает и вызывает включаемые файлы в нужных местах (где был специальный комментарий или вызывалась CAskaronSettings::IncludeFile).

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

События окончания страницы срабатывают всегда, но иногда происходят ошибки. Ошибки могут быть при подключении включаемых компонентов в режиме AJAX («AJAX_MODE» => «Y»), или при выводе кнопок интерфейса эрмитаж.

Если на странице сразу вызвать CAskaronInclude::StartBuffer() и CAskaronInclude::PrintBuffer() отложенные функции Битрикса сработают, как надо.

Безопасность

При проектировании модуля «Включаемый код» особенное внимание было уделено безопасности.

Описание проблемы

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

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

Меры безопасности

1. Замена комментариев происходит только в публичной части сайта. На страницах в папке /bitrix/ не работает.

В версии 1.1.0 сделано исключение для двух папок: теперь в папках /bitrix/templates/ и /bitrix/components/ можно создавать странички, в которых будет подставляться включаемый код. Сделано так, потому что некоторые пользователи использовали ajax и файлы складывали в папки шаблонов.

2. Нельзя подключать произвольный файл «/путь/имя файла». Включаемый файл можно создавать только в определенной папке.

3. Вместо текста для подстановки вида #COMMENT# используется комментарий вида . Комментарии со спецсимволами < и >более надежны, пользователь не имеет возможности эти символы писать. При выводе страницы происходит замена < и >.

Замечание:
Стандартные компоненты заменяют спецсимволы при выводе любого текста (например, имя пользователя). Но неопытный разработчик сайта может такую уязвимость допустить, и кто-то сможет написать HTML-код.

4. Комментарий вида имеет еще одну очень важную особенность. Его не индексирует встроенный модуль поиска Битрикса. Было бы очень нехорошо, если на странице поиска выводились бы комментарии для включаемого кода.

5. При ошибках в разработке нет 100% гарантии что пользователь не сможет написать комментарий , поэтому было принято решение в целях безопасности вообще отказаться от предустановленных включаемых файлов.

Комментарий в простейшем случае выглядит так:
имя файла
—>

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

6. Вместо предустановленных включаемых файлов есть примеры включаемых файлов.

При создании включаемого файла на основе примера генерируется случайное имя.

Имя файла date__ff8jhttu.php получается не очень красивым, но абсолютно безопасным.

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

Остается его скопировать и использовать на сайте.

Включаемый код и композит

Модуль «Включаемый код» хорошо работает на композитных сайтах.

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

Модуль «Включаемый код» выводит результат включаемого файла в нужном месте страницы.

Но вызов включаемого файла происходит в конце работы страницы или если вы вручную делаете CAskaronInclude::PrintBuffer()

Поэтому методы создания динамичных областей для шаблонов компонентов не подойдут. Надо использовать методы для создания динамичных областей для шаблона сайта.

Правила композита для включаемого файла совершенно аналогичные, как в обычных включаемых файлах вызванных в шаблоне сайта.

$frame = new \Bitrix\Main\Page\FrameHelper(«my_hidden_text»);
$frame->begin();
?>

текст для авторизованных

текст для неавторизованных

Вопросы и ответы

Работал месяц. Сейчас не отображается

Приобрели ваш модуль «Включаемый код», поставили на сайт.
Работал с месяц, сейчас не отображается на сайте.
Можете посмотреть что случилось?
Что для этого нужно?
Срок демо-периода 30 дней.

Если демо-период закончился, то на странице со списком включаемых файлов (ваш_сайт/bitrix/admin/askaron_include_file_admin.php?lang=ru) и на странице примеров включаемых файлов (ваш_сайт/bitrix/admin/askaron_include_file_sample_admin.php?lang=ru) наверху написано сообщение о том, что срок истек.

Возможно, вы приобрели ключ, но не ввели его. Ключ вводится на странице «Система обновлений сторонних решений» (ваш_сайт/bitrix/admin/update_system_partner.php?lang=ru) на вкладке «Активация купона».

Если ключ введен правильно и проблем с активацией нет, пришлите нам:
— адрес сайта,
— логин администратора
— пароль администратора
— страницу, где вы наблюдаете ошибку
— ваш номер телефона или скайп для быстрой связи с вами, если будут вопросы.
Мы посмотрим в чем проблема.

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

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

Что делать, если сайт композитный?

Да, возможно. Очень просто.

Живой пример внутри текста! Это не картинка, а контент, который вставлен с помощью модуля «Включаемый код»:

— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?
— .

Чтобы узнать ответ, авторизуйтесь.

Создайте включаемый файл, например, hidden_text.php с таким содержимым:

— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?

— Женись. Получишь три дня выходных.

— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?

— .

Чтобы узнать ответ, авторизуйтесь.

IncludeComponent(
«bitrix:system.auth.form»,
«»,
Array(
«REGISTER_URL» => «»,
«FORGOT_PASSWORD_URL» => «/auth/»,
«PROFILE_URL» => «»,
«SHOW_ERRORS» => «N»
)
);?>

Сохраните файл в папке включаемых файлов /bitrix/php_interface/include/askaron.include/ .

Напишите на странице

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

В этом месте появится содержимое включаемого файла в зависимости от текущего пользователя.

Что делать если сайт композитный?

На композитных сайтах разработчик должен везде на сайте отметить динамичные области. Включаемый код — не исключение. Надо обозначить область:

— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?

— Женись. Получишь три дня выходных.

— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?

— .

Чтобы узнать ответ, авторизуйтесь.

IncludeComponent(
«bitrix:system.auth.form»,
«»,
Array(
«REGISTER_URL» => «»,
«FORGOT_PASSWORD_URL» => «/auth/»,
«PROFILE_URL» => «»,
«SHOW_ERRORS» => «N»
)
);?>

Стандартные примеры включаемых файлов

Текущая дата date.php

Простейший пример включаемого файла.

Файл показывает текущую дату в формате сайта, вызывается без параметров.

Голосование за рейтинг rating.vote.php

Пример включаемого файла, который показывает компонент голосования за рейтинг bitrix:rating.vote.

Баннер showbanner.php

Пример включаемого файла, который показывает баннер.

Создайте на основе готового включаемого файла новый. Или напишите такой код в файле

/bitrix/php_interface/include/askaron.include/my_showbanner.php

if(CModule::IncludeModule(«advertising»))
echo CAdvBanner::Show($arParams[«BANNER_TYPE»], $arParams[«HTML_BEFORE»], $arParams[«HTML_AFTER»]);
>
?>

Наиболее простой способ подключить файл — вставьте в любое место сайта код:

CAskaronInclude::IncludeFile(
«my_showbanner.php»,
array(
«BANNER_TYPE» => «LEFT», // тип баннера
«HTML_BEFORE» => ‘

‘, // перед баннером
«HTML_AFTER» => ‘

‘, // после баннера
)
);

Есть альтернативный способ, если вы вставляете баннер в текст новости.

Если все-таки надо передать теги, то учитывайте, что надо экранировать спецсимволы XML:

Голосование (стандартное) iblock.vote.php

Пример включаемого файла, который показывает обычный компонент голосования на инфоблоках bitrix:iblock.vote.

Создайте свой включаемый файл на основе примера, и подключите его на странице.

Все шаги делаются аналогично, как для компонента «Честное голосование».

«Честное голосование» в отличие от обычного голосования умеет проверять пользователя по IP и ID. Защищает ваше голосование от накруток.

Текущий опрос voting.current.php

Пример включаемого файла, который выводит компонент «Текущий опрос» (bitrix:voting.current). Для работы этого примера требуется установленный модуль опросов (Редакция «Стандарт» и выше).

Форма обратной связи

Пример включаемого файла, который показывает компонент Форму обратной связи (bitrix:main.feedback).

Форму обратной связи можно вставить прямо в описание товара или в любой шаблон:

Живой пример внутри текста! Это не картинка, а компонент, который вставлен с помощью модуля «Включаемый код»:

Создайте свой включаемый файл на основе примера:

Создание включаемого файла на основе примера. Форма обратной связи

Новый файл появится в папке включаемых файлов со случайным именем.

Новый включаемый файл. Форма обратной связи

Подключите новый файл на странице.

Напишите, где-нибудь на сайте такой текст:

Форма будет выводиться везде, где будет вставлен этот текст.

Дополнительные примеры включаемых файлов

Создание собственных примеров

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

Примеры может создавать администратор сайта или другие модули. Например, модуль «Честное голосование» создает свой пример, чтобы было удобно размещать компонент.

Чтобы сделать пример, необходимо создать файл с любым именем в папке /bitrix/php_interface/include/askaron.include/samples/.

Имена файлов у разных разработчиков не должны повторяться, поэтому если вы пишите модуль, то рекомендуется начинать имя файла с кода модуля. Например, для «Честного голосования» (askaron.ibvote) имя файла askaron.ibvote.iblock.vote.php.

В стандартных примерах включаемых файлов есть подробные комментарии. Примерное содержимое:

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

Пример, файл date.php:

Напишите этот код:

Или разместите этот текст в любом месте сайта:

Пример «Честное голосование» askaron.ibvote.iblock.vote.php

«Честное голосование» — это первый модуль, который интегрирован с модулем «Включаемый код».

При установке модуля «Честное голосование» в папке дополнительных примеров включаемых файлов /bitrix/php_interface/include/askaron.include/samples/ создается пример askaron.ibvote.iblock.vote.php.

Размещение компонента «Честное голосование» на основе примера подробно описано в документации по модулю «Честное голосование».

Город по IP, определение местоположения для доставки

Модуль «Город по IP, определение местоположения для доставки» находит город по IP и устанавливает местоположение на странице оформления заказа.

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

if(\Bitrix\Main\Loader::includeModule(«askaron.geo»))
<
//здесь можно использовать функции и классы модуля
>
?>

Описание модуля

Модуль «Город по IP, определение местоположения для доставки», определяет город по IP-адресу пользователя и устанавливает нужное местоположение в форме заказа.

Работает на:
«1С-Битрикс: Управление сайтом»:
— Малый Бизнес,
— Бизнес.
«Битрикс24 из коробки» — любые редакции.

— модуль устанавливается вместе с базой IP-адресов,
— модуль быстро узнает город, к сторонним сервисам не обращается, не замедляет работу сайта,
— используется производительная база Sypex Geo,
— модуль понимает IP-адрес с учетом прокси-серверов, корректно определяет адрес в случае Opera Turbo и Яндекс Турбо,
— отдельные настройки модуля для разных сайтов при многосайтовости,
— возможно указать город по умолчанию, если не удается определить,
— в форме заказа автоматически подставляется найденное по IP местоположение

Установка модуля:

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

Для работы решения необходим модуль «Интернет-магазин».

Для правильной работы модуля необходимы местоположения 2.0.

Местоположения в Битриксе должны быть. У городов должны быть заполнены названия на русском языке. Можете стандартным битриксовским мастером загрузки местоположений загрузить сразу все города России и СНГ или весь мир.

Настройка модуля:

После установки модуля перейдите на страницу настроек:
Настройки → Настройки продукта → Настройки модулей → Город по IP, определение местоположения для доставки

Настройки модуля

Настройки модуля:

Страница настроек

Нажмите «Получить местоположение» модуль найдет город и по городу определит местоположение.

Проверка

API

С помощью API вы можете повлиять на IP-адрес пользователя, узнать город и получить местоположение.

Основные методы:

array \Askaron\Geo\Location::getLocation( $site_id = SITE_ID );

Метод возвращает местоположение.

Для правильной работы нужны Местоположения 2.0! Доступны с версии Битрикса 14.5.

Местоположение запоминается в сессии и куках. Повторно к базе IP адресов не обращаемся. Можете вызывать getLocation() много раз.

Необязательный параметр ID сайта. По умолчанию текущий сайт.

Функция возвращает массив, описывающий местоположение.

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

if (\Bitrix\Main\Loader::includeModule(«askaron.geo») )
$arLocation = \Askaron\Geo\Location::getLocation();
>

Array
(
[ID] => 218
[CODE] => 0000073738
[NAME_RU] => Москва
[PARENT_ID] => 4
[COUNTRY_ID] => 1
[REGION_ID] => 3
)

bool \Askaron\Geo\Location::setLocationById( $id, $site_id = SITE_ID )

Метод устанавливает местоположение.

$id — ID местоположения
$site_id — необязательный параметр. По умолчанию текущий сайт.

Старайтесь устанавливать местоположение из списка разрешенных местоположений для сайта ( http://ваш_сайт/bitrix/admin/sale_location_zone_list.php?lang=ru )

Возвращает true, если такое местоположение найдено и установлено. Иначе false.

Метод можно использовать при переключении города в списке городов в шапке сайта:

if ( \Bitrix\Main\Loader::includeModule(«askaron.geo») )
if ( $_REQUEST[«mycity»] > 0 )
\Askaron\Geo\Location::setLocationById( $_REQUEST[«mycity»] );
>

echo «Ваш город «.$arLocation[«NAME_RU»];
>
?>
⁠

string \Askaron\Geo\Info::getIp();

Возвращает текущий IP-адрес.

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

void \Askaron\Geo\Info::setIp( string $ip );

Используется для установки пользователю IP-адреса.

На редких хостингах администраторы прячут сайт за какими-то прокси серверами и определение адреса становится нестандартным.

Если у вас такой нестандартный случай можете попробовать установить IP в начале работы страницы.

Допустим, ваш системный администратор записывает адрес пользователя в переменную $_SERVER[‘HTTP_X_REAL_IP’]

файл /bitrix/php_interface/init.php:

if (\Bitrix\Main\Loader::includeModule(«askaron.geo») )
\Askaron\Geo\Info::setIp( $_SERVER[‘HTTP_X_REAL_IP’] );
>

array \Askaron\Geo\Info::getSxGeoCityFull();

Получает город из базы Sypex Geo по IP. Результат запоминается в статическом кеше на хите. Можете вызывать getSxGeoCityFull() много раз на странице.

. Если надо вывести город или регион, то рекомендуем использовать \Askaron\Geo\Location::getLocation(). Это уже посчитанное готовое местоположение из сессии с учетом местоположения по умолчанию.

getSxGeoCityFull() возвращает массив описывающий город в базе по IP. В случае, если город не может быть найден, возвращает пустой массив.

if (\Bitrix\Main\Loader::includeModule(«askaron.geo») )
$arCity = \Askaron\Geo\Info::getSxGeoCityFull();
>

Array
(
[city] => Array
(
[id] => 501175
[lat] => 47.23135
[lon] => 39.72328
[name_ru] => Ростов-на-Дону
[name_en] => Rostov-na-Donu
)

[region] => Array
(
[id] => 501165
[name_ru] => Ростовская область
[name_en] => Rostovskaya Oblast’
[iso] => RU-ROS
)

[country] => Array
(
[id] => 185
[iso] => RU
[lat] => 60
[lon] => 100
[name_ru] => Россия
[name_en] => Russia
)

Как обновить базу городов

Обновление базы городов в нашем модуле не предусмотрено.

Время от времени мы обновляем свой модуль и обновляем в нём базу городов.

Пока авторы базы городов свой формат не меняют, можете смело обновлять города самостоятельно.

1. Переименуйте файл:

/bitrix/modules/askaron.geo/SxGeoCity.dat в /bitrix/modules/askaron.geo/old_SxGeoCity.dat

2. Скачайте базу городов Sypex Geo в кодировке 1251, распакуйте архив и замените файл /bitrix/modules/askaron.geo/SxGeoCity.dat


Sypex Geo - скачать городо по IP

Пример. Вывести данные в зависимости от города

Простой пример:

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

$arLocation = array();
if (\Bitrix\Main\Loader::includeModule(«askaron.geo») )
$arLocation = \Askaron\Geo\Location::getLocation();
>
?>

8 (495) 111 11 11

8 (812) 222 22 22

8 800 333 33 33

Пример с включаемым файлом:

То же самое, только мы должны дать возможность пользователю редактировать телефоны, сделаем ему включаемую область:

1. Создать файл /include/telephone.php (такой файл уже существует в стандартном решении «Современный интернет-магазин»)

2. Содержимое файла:

$arLocation = array();
if (\Bitrix\Main\Loader::includeModule(«askaron.geo») )
$arLocation = \Askaron\Geo\Location::getLocation();
>
?>

8 (495) 111 11 11

8 (812) 222 22 22

8 800 333 33 33

3. Подключить файл в шаблоне:

$APPLICATION->IncludeFile(
SITE_DIR.»include/telephone.php»,
array(),
array( «MODE» => «php» )
);
?>

4. Проверить разные IP можно на странице проверки. Попробуйте написать там разные адреса. Свой и другие:

77.88.55.77 — IP Яндекса, установит нам город Москва.

Получить местоположение Яндекса

График отпусков

Дополнительные пользовательские поля. Аскарон

Модуль «Дополнительные пользовательские поля. Аскарон» добавляет новые пользовательские типы пользовательских полей.

Статья
Бесплатный модуль «Дополнительные пользовательские поля. Аскарон»

— «1С-Битрикс: Управление сайтом» — любые редакции
— «1С-Битрикс: Битрикса 24 в коробке» — любые редакции.

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

if(\Bitrix\Main\Loader::includeModule(«askaron.fields»))
<
//здесь можно использовать функции и классы модуля
>

Новые типы пользовательских полей

— Привязка к типу цен по ID (askaron.fields)
— Привязка к складу по ID (askaron.fields)
— Привязка к группе пользователей по ID (askaron.fields)
— Привязка к инфоблоку по ID (askaron.fields)

Дополнительные пользовательские типы полей работают на базе простого типа «Целое число».

Описание

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

— Привязка к типу цен по ID (askaron.fields)
— Привязка к складу по ID (askaron.fields)
— Привязка к группе пользователей по ID (askaron.fields)
— Привязка к инфоблоку по ID (askaron.fields)

Дополнительные пользовательские поля работают на базе простого типа «Целое число».

Screenshot_3.jpg

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

Свойства удобно изменять в административной части.

Свойства красиво выглядят в фильтре:

Screenshot_1.jpg

По [ID] можно сразу перейти по ссылке на интересующий нас объект:

Screenshot_2.jpg

Дополнительные свойства инфоблоков. Аскарон

Модуль «Дополнительные свойства инфоблоков. Аскарон» добавляет в инфоблоки новые пользовательские типы свойств.

Работает на:

— «1С-Битрикс: Управление сайтом» — любые редакции
— «1С-Битрикс: Битрикса 24 в коробке» — любые редакции.

Разработчикам:

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

if(\Bitrix\Main\Loader::includeModule(«askaron.prop»))
<
//здесь можно использовать функции и классы модуля
>

Описание

Новые пользовательские типы свойств инфоблоков:

— Привязка к типу цен по ID (askaron.prop)
— Привязка к складу по ID (askaron.prop)
— Привязка к группе пользователей по ID (askaron.prop)
— Привязка к инфоблоку по ID (askaron.prop)
— Привязка к свойству инфоблока по ID (askaron.prop)
— Привязка по ID к варианту значения для свойства типа список (askaron.prop)

Дополнительные свойства работают на базе простого типа «Число» («N»).

Свойства удобно изменять в административной части.

Свойства красиво выглядят в фильтре:

с версии 1.0.8 Доступны еще 2 свойства:
1. Привязка к группе пользователей по ID

2. Привязка к инфоблоку по ID

Журнал изменений товаров

Модуль позволяет вести учёт изменений элементов инфоблоков, параметров товаров, значений цен и остатков на складах.

Работает на:
«1С-Битрикс: Управление сайтом» — любые редакции.
«Битрикс24 из коробки» — любые редакции.

Модуль работает с любыми инфоблоками.

Основное предназначение модуля — контроль за изменением товаров.

Очень частая задача — разобраться почему у товара сейчас такое количество товара. Журнал позволяет выяснить, какое количество установил обмен с 1С, какое количество устанавливают пользователи, как срабатывает резервирование, и, когда срабатывает отмена резерва.

Описание модуля

Модуль позволяет вести учёт изменений элементов инфоблоков, параметров товаров, значений цен и остатков на складах.

  • наименование
  • краткое описание
  • подробное описание
  • символьный код
  • активность
  • доступное количество
  • количество в резерве
  • цены
  • НДС
  • закупочная цена
  • остатки по складам
  • детальная картинка и картинка для анонса
  • разделы элемента

Модуль записывает порядок вызовов функций для разработчиков, чтобы можно было понять какой именно код привёл к изменению товара.

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

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

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

Модуль очень прост в использовании: после установки перейдите в настройки модуля Сервис->Журнал изменений товаров->Настройки модуля.

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

Настройки модуля

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

Карточка товара

На вкладке «Журнал изменений» отображаются последний изменения товара. Количество выводимых изменений устанавливается в настройках модуля.
Если в настройках установлен 0 или изменений не было, то таблица выводиться не будет.
Здесь же расположена ссылка по которой можно перейти на просмотр полного журнала изменений.

Новая карточка товара

Также перейти к просмотру всех изменений по элементу можно из контекстного меню в списке элементов.

Контекстное меню

Либо из Сервисы->Журнал изменений товаров

Таблица

Результат можно отфильтровать по интересующему вас элементу либо по пользователю.

Завершение регистрации

Модуль «Завершение регистрации» выводит пользователю форму завершения регистрации в случае, если не все поля профиля заполнены корректно. Список полей гибко настраивается.

Работает на:
— «1С-Битрикс: Управление сайтом» — любые редакции,
— «1С-Битрикс: Корпоративный портал» — любые редакции.
Версия Главного модуля должна быть не ниже 12.0.0.

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

Описание модуля

Теперь на вашем сайте у всех пользователей будут правильно заполнены поля: фамилия, имя, отчество, телефон, e-mail и т. д. Даже, если пользователи зашли через соцсервисы.

Например, пользователь может зайти через Живой Журнал, и у него не окажется имени, фамилии, телефона и адреса электронной почты.

Пользователь Живого Журнала

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

Модуль добавляет в корень сайта страницу завершения регистрации. По умолчанию finishreg.php. При установке модуля можно выбрать другое имя.

После авторизации пользователя, если у него что-то неправильно в профиле, он будет переключен на страницу завершения регистрации.

На странице finishreg.php размещен компонент «Завершение регистрации» (askaron:askaron.finishreg).

Список полей для завершения регистрации гибко настраивается в административном разделе.

Строковые поля (Имя, Фамилия, Телефон и другие) могут проверяться на корректность регулярным выражением.

Для поля EMAIL можно потребовать подтверждение (в случае, если пользователь зашел через соцсервисы).

Установка модуля

Устанавливается также, как и другие партнерские модули.

Работает на:
— «1С-Битрикс: Управление сайтом» — любые редакции,
— «1С-Битрикс: Корпоративный портал» — любые редакции.

Версия Главного модуля не ниже 12.0.0.

Модуль добавляет в корень сайта страницу завершения регистрации. По умолчанию finishreg.php. Обычно при установке модуля можно просто нажать Далее.

Установка

Удаление модуля

При удалении модуля есть выбор сохранить настройки связанные с модулем или удалить:

Удаление

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

UF_ASKARON_F_CONFIRM — E-Mail пользователя подтвержден.

UF_ASKARON_M_SEND — пользователю было отправлено письмо с кодом подтверждения E-Mail.

Поля для завершения регистрации

Сервисы -> Завершение регистрации -> Поля для завершения регистрации

Список правил для проверки полей профиля пользователя:

Список полей

Основные опции для полей всех типов:

Выбирайте значение Для всех сайтов, если на лицензии 1С-Битрикс только один сайт, или для всех сайтов настройки одинаковые.

Если для какого-то сайта настройки отличаются, то укажите правило для этого сайта.

Дополнительные опции для поля EMAIL:

Дополнительные опции для строковых полей:

Фамилия, Имя, Отчество, Телефон, Город имеют одинаковые дополнительные опции:

Опция Описание Значение по умолчанию
Регулярное выражение Регулярное выражение для проверки строки. Не задано

Примечание:

Опции «Сайт» и «Код поля» задаются только один раз при создании правила для поля. Для одной пары «Сайт»-«Код поля» не может быть создано больше одного правила.

Компонент «Завершение регистрации»

Выбор шаблона компонента. Вместе с модулем идут два шаблона компонента:

.default — шаблон по умолчанию с прямоугольными полями.

eshop — шаблон для современного интернет-магазина со скругленными углами полей.

Шаблон компонента .default

component_2.png

Шаблон компонента eshop

Настройка параметров модуля

Настройки->Настройка продукта->Настройка модулей->Завершение регистрации

Опции

Клиент веб-сервиса 1С

Описание модуля

Контроль доступа по IP

Описание модуля

Модуль позволяет Разрешить авторизацию только с определенных IP. Можно сделать, чтобы ваши сотрудники могли заходить в Битрикс24 только из офиса, или 1С обменивалась только с одного адреса.

Работает на:
— «1С-Битрикс: Управление сайтом» — любые редакции
— «Битрикс24 в коробке» — любые редакции.

Разработчикам:

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

if(\Bitrix\Main\Loader::includeModule(«askaron.accessip»))
<
//здесь можно использовать функции и классы модуля
>

Модуль содержит набор обработчиков данных. Обработчики данных — это мини-модули.

Обработчики данных

authip — Разрешить авторизацию только с определенных IP
demo1 — Демо. Демонстрационный обработчик для разработчиков

Сердце модуля — страница установленных обработчиков данных. Вы можете свободно устанавливать и удалять обработчики, которые вам нужны. Один и тот же обработчик данных можно установить несколько раз с разными параметрами.

Подробнее про обработчики данных

Обработчики данных представляют собой что-то вроде маленьких модулей для Битрикса.

Термина «Обработчик данных» в Битриксе нет. Мы его придумали специально для этого модуля.

В Битриксе есть обработчики событий, обработчики платёжных систем, обработчики служб доставки и т. п.

Обработчики данных содержат действия, которые надо выполнить при наступлении определенных событий Битрикса. Например, когда что-то выгружается из 1С и записывается на сайте.

У обработчиков данных есть свои страницы настроек.

Один обработчик данных может быть установлен в системе несколько раз с разными настройками.

Стандартные обработчики данных лежат в папке модуля.

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

/bitrix/php_interface/include/askaron.accessip/
/local/php_interface/include/askaron.accessip/

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

В отличие от модулей Битрикса наши обработчики данных можно устанавливать несколько раз с разными параметрами.

Структура обработчика данных

Наши обработчики данных состоят из раздела, в котором 2 обязательных файла: .description.php и handler.php:

.description.php содержит массив с описанием модуля
handler.php содержит функции обработчиков событий.

Еще может быть один необязательный файл .parameters.php

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

authip — Разрешить авторизацию только с определенных IP

Обработчик позволяет ходить только с разрешённых адресов авторизованным пользователям. Запрет IP для ботов — это совсем другая задача. Для запрета IP от ботов есть стоп-лист в модуле «Проактивная защита».

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

Можно сделать, чтобы ваши сотрудники могли заходить в Битрикс24 только из офиса. Укажите IP-адреса и группы пользователей, на кого распространяются правила.

Можно сделать, чтобы 1С могла заходить на сайт с определенного адреса для безопасности.

Что если я заблокирую сам себя?

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

Но если вдруг так получилось, что вы заблокировали себя, то можно по FTP или SFTP переименовать файл /bitrix/tools/askaron_accessip_init.php

Без этого файла модуль не работает. Потом зайдите в настройки нужного вам обработчика и настройте правильно. Файл должен пересоздаться заново.

Установка обработчика:

accessip - Установка обработчика

Настройки обработчика

accessip - Обработчик1

accessip - Обработчик2

accessip - Обработчик3

accessip - Обработчик4

demo1 — Демо. Демонстрационный обработчик для разработчиков

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

Контроль свободного места и бекапов

Описание модуля

Демо-версия полностью функциональная, срок демо-периода 30 дней.

Этот модуль (и ещё много других) вы можете получить от нас в подарок при покупке модуля «Продвинутый обмен с 1С»

Описание модуля «Контроль свободного места и бекапов»

Назначение модуля: отслеживать свободное место на жестком диске на сервере, где установлено решение.

  • Высылает уведомление на e-mail в случае, если на жестком диске осталось меньше места, чем указано в настройках модуля, а также в случае ошибки регулярного резервного копирования и в случае успеха создания резервной копии, если установлены соответствующие настройки модуля
  • Модуль работает только в случае регулярного резерного копирования, в случае ручного создания резервных копий модуль не отрабатывает!
  • Прерывает процесс резервного копирования, если осталось мало места (в случае установки соотвествующей опции)
  • Автоматически удаляет старые резервные копии в случае, если на жестком диске осталось меньше места, чем указано в настройках модуля (в случае установки соответствующей опции)
  • Высылает SMS уведомления на указанные номера в случае ошибки регулярного резервного копирования, а также в случае, если на жестком диске осталось меньше места, чем указано в настройках модуля. Данная возможность доступна только после установки только после установки модуля askaron.sms (бесплатный модуль для отправки SMS).

Настройки модуля

Модуль «Контроль свободного места и бекапов» устанавливается, как любой модуль из Маркетплейса, и никаких вопросов не задает.

После установки модуля перейдите на страницу настроек:
Настройки -> Настройки продукта -> Настройки модулей->Контроль свободного места и бекапов

Назначение полей:

E-mail администратора — адрес электронной почты, на которую будут высылаться уведомления. Можно указать несколько адресов через запятую. Если не заполнено, то будет использован E-mail администратора сайта из настроек главного модуля

Процент свободного места, когда места мало — Модуль следит, если свободного места окажется меньше, чем указано. Можно указать 0, и тогда модуль не будет никак следить за свободным местом.

Высылать уведомления на E-mail администратора, что места осталось мало — если опция отключена, уведомления о том что места осталось мало, не будет приходит на указанный выше e-mail.

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

Запрещать бекап Битрикса, если места осталось мало — Резервное копирование не будет начато, будет отправлено уведомление администратору, что бекап не может идти, потому что места мало.

Высылать уведомления на E-mail администратора в случае ошибки резервного копирования — выслать уведомление в случае возникновения какой-либо ошибки при резервном копировании.

Высылать уведомления на E-mail администратора в случае успешного завершения резервного копирования — выслать уведомление в случае, если создание резервное копии завершилось успешно.

Номер телефона для SMS оповещения — Можно указать один или несколько номеров (через запятую или пробел). В номерах телефона допускаются символы: +-() На указанные номера будет высылаться SMS оповещение в случае ошибки регулярного резервного копирования, а так же в случае, если на жестком диске осталось меньше места, чем указано в настройках модуля. Поле появляется в настройках только после установки модуля askaron.sms (бесплатный модуль для отправки SMS).

Также для отправки SMS оповещений необходимо установить и настроить один из четырех модулей:
SMS4B — СМС для бизнеса rarus.sms4b
SMSC.RU — SMS оповещения smsc.sms
bxmaker.smsnotice — SMS оповещения bxmaker.smsnotice
СМС Оповещения — bizsolutions.sms

Разные структуры разделов на сайте и в 1С

Модуль «Разные структуры разделов на сайте и в 1С» предназначен если в 1С и на сайте структура разделов отличается.

Для работы модуля не требуется дополнение Битрикса для 1С. Модуль работает с ним и без него.

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

Работает на:

— «1С-Битрикс: Управление сайтом» — Бизнес и Малый бизнес.

Модуль может работать на младшей редакции, если там используется свой самописыный обмен по протоколу 1С и 1С-Битрикс.

— «1С-Битрикс: Битрикса 24 в коробке» — любые редакции.

Разработчикам:

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

if(\Bitrix\Main\Loader::includeModule(«askaron.sections1c»))
<
//здесь можно использовать функции и классы модуля
>

Описание модуля

Модуль «Разные структуры разделов на сайте и в 1С» — позволяет не выводить на сайте разделы, которые не нужны.

Разрешить контент-менеджерам менять привязку к разделам на сайте:

Изменения привязки к разделам

Закрытые разделы:

Разделы, которые неактивны и всё их содержимое тоже неактивно.

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

Создайте в 1С закрытый раздел «Устаревшее» и переносите в него товары.

При выгрузке изменений на сайт устаревшие товары будут деактивироваться.

Закрытые разделы вместе

Пропущенные разделы:

Модуль позволяет не выводить верхние разделы, если они не нужны.

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

Пропущенные разделы вместе

Деактивировать, включая вложенные

Действие над разделом «Деактивировать, включая вложенные»:

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

Действие над разделом не связано с опцией «Закрытые разделы». Действие добавлено в модуль для удобства.

Где работает модуль:

Решение работает при любых изменениях товаров и разделов на любых редакциях Битрикс.

Работает при выгрузке товаров из 1С, при выгрузке из Моего склада, при выгрузке из любых файлов и при редактировании товаров вручную.

Пропущенные разделы

Опция «Пропущенные разделы каталога» позволяет деактивировать некоторые верхние разделы, а их сожержимое автоматически переносить в корень каталога.

Пропущенные разделы - проблема.jpg

Установите опцию. Можно несколько через запятую:

Пропущенные разделы - опции

Теперь раздел деактивирован и содержимое в корне.

Пропущенные разделы - результат

МойСклад. Дополнительный импорт через API

Модуль «МойСклад. Дополнительный импорт через API» догружает с помощью API то, что не выгружается с помощью стандартного обмена с 1С-Битрикс.

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

if(\Bitrix\Main\Loader::includeModule(«askaron.moysklad»))
<
//здесь можно использовать функции и классы модуля
>
?>

Описание модуля

Модуль «МойСклад. Дополнительный импорт через API» дополняет стандартный обмен МоегоСклада с 1С-Битрикс.

Модуль позволяет догрузить к уже выгруженным товарам: картинку, код товара и гуид (внутренний ID моего склада)

Для работы модуля на сайте уже должен быть выгружен каталог товаров из МоегоСклада, встроенная выгрузка работает на:

«1С-Битрикс: Управление сайтом» — Малый бизнес, Бизнес, Enterprise.
«Битрикс24 из коробки» — любые редакции.

Настройки модуля:

страница настроек

Требования к работе модуля:

  • МойСклад на платном тарифе, чтобы работало API,
  • каталог товаров на сайте должен быть выгружен из МоегоСклада встроенным обменом с 1С-Битрикс

Первоначальная настройка модуля:

  • установите модуль,
  • в настройках модуля укажите логин и пароль пользователя из МоегоСклада,
  • укажите в настройках модуля инфоблок из МоегоСклада
  • укажите какие данные хотите выгружать.

Тестирование модуля:

тестовый товар

  • для тестирования включите «Импортировать только один товар для тестирования»,
  • найдите в каталоге какой-нибудь товара
  • укажите внешний код тестового товара в настройках модуля в опции «Внешний код товара, который импортировать для тестирования»,
  • при переходе из-под администратора по ссылке /bitrix/tools/askaron_moysklad_catalog_cron.php должен запуститься обмен,
  • в журнале событий будут записи о начале и окончании обмена, будут записи об ошибках обмена,
  • в товар будет дописана информация из МоегоСклада

Включение модуля:

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

Настройке крон или обратитесь к техподдержке вашего хостинга, чтобы вам помогли настроить крон.

Важно. Техподдержка модуля не помогает настраивать крон.

Пример настроек крона в файле /etc/crontab для виртуальной машины Битрикса.

Вызов файла в 01:00 и 13:00 каждый день. В зависимости от настроек хостинга и пути к сайту строка может выглядеть по-другому.

0 1,13 * * * bitrix php -f /home/bitrix/www/bitrix/tools/askaron_moysklad_catalog_cron.php

Классы и функции

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

\Askaron\Moysklad\Import::getDir()

Получение строки URL к МоемуСкладу с логином и паролем.

\Askaron\Moysklad\Import::getListArray( $path, $arFilter = array(), $max_limit = 0 )

Метод возвращает список чего-либо из МоегоСклада. МойСклад возвращает не больше 100 элементов за один запрос. Метод делает несколько запросов, чтобы получить полный список элементов.

Пример. Получение списка товаров из МоегоСклада

$path = \Askaron\Moysklad\Import::getDir().»/api/remap/1.1/entity/product»;
$arList =\Askaron\Moysklad\Import::getListArray( $path );

В результате в $arList будут описания всех товаров.

Событие после обновления товара модулем:

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(«askaron.moysklad», «onAfterElementUpdate», array(‘CMyClass’, ‘onAfterElementUpdate’));

class CMyClass <
public static function onAfterElementUpdate( $event )
$arParameters = $event->getParameters();
AddMessage2Log( $arParameters );
>
>

Мультирегиональность и многодоменность

Описание модуля

Список регионов или доменов для вашего сайта. Переключение между регионами, вывод различной информации для разных регионов

Страница решения в Маркетплейсе:
Работает на:

«1С-Битрикс: Управление сайтом» — любые редакции (кроме Первый сайт).
«1С-Битрикс24 в коробке» — любые редакции.

Для работы модуля требуются модули: Инфоблоки, Highload-блоки и бесплатный «Дополнительные свойства инфоблоков. Аскарон»

Демо-версия полностью функциональная. Срок демо-периода 30 дней.

Минимальная версия главного модуля 1С-Битрикс 14.0.1, минимальная версия PHP 7.1

Класс \Askaron\Regions\Region

Модуль «Мультирегиональность и многодоменность» подключается сам на событии OnPageStart. Проверять установлен ли модуль функцией includeModule не обязательно.

Однако в init.php модуль ещё не подключен. Если он нужен в init.php, то подключайте так:


if(\Bitrix\Main\Loader::includeModule(«askaron.regions»))

//здесь можно использовать функции и классы модуля
>
?>


Класс \Askaron\Regions\Region::
public static function getIblockId(): ?int
public static function getIdByXmlId( string $xml_id , ?string $site_id = null ): ?int
public static function getAllItems( ?string $site_id = null ): array
public static function setCurrent( ?int $id = null, ?string $site_id = null): void
public static function getCurrentId( ?string $site_id = null ): ?int
public static function getCurrentCode( ?string $site_id = null ): ?string
public static function getCurrentXmlId( ?string $site_id = null ): ?string
public static function getCurrentName( ?string $site_id = null ): ?string
public static function getCurrentPropDomain( ?string $site_id = null ): ?string
public static function getCurrentPropDomainMobile( ?string $site_id = null ): ?string
public static function getCurrentPropDomainsOtherKeys( ?string $site_id = null ): ?array
public static function getCurrentIsDefault( ?string $site_id = null ): ?bool
public static function getCurrentPropCountry( ?string $site_id = null ): ?string

Метод для получения ID инфоблока, где хранятся регионы
public static function getIblockId(): ?int

Метод возвращает ID инфоблока со списком регионов. В случае ошибки, если инфоблок не существует (ситуация: если кто-то изменил внешний код инфоблока регионов или удалил инфоблок), то вернёт null. Используйте метод для работы с инфоблоком регионов.

Примечание: при установке модуля создается инфоблок типа 2.0 (свойства в отдельной таблице).

Пример
$REGION_IBLOCK_ID = \Askaron\Regions\Region::getIblockId (); // Вернёт 21

Метод для получения ID региона по его XML_ID
public static function getIdByXmlId( string $xml_id , ?string $site_id = null ): ?int

Метод возвращает ID региона по его XML_ID или null, если регион не найден. Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.

Пример
$REGION_ID = \Askaron\Regions\Region::getIdByXmlId («all»); // Вернёт 1063

Метод для получения списка всех регионов
public static function getAllItems( ?string $site_id = null ): array

Метод возвращает массив всех регионов. Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.

Будут выбираться все регионы, если опция «Включить выбор регионов с учетом свойства Код сайта» выключена.

Фильтр по $site_id происходит только если включена опция «Включить выбор регионов с учетом свойства Код сайта». Перед включением опции, надо заполнить свойство «Код сайта» у регионов.

Пример $arRegions = \Askaron\Regions\Region::getAllItems();

Вернёт

Array

( [1063] => Array ( [ID] => 1063 [NAME] => Весь мир [CODE] => all [XML_ID] => all [IS_DEFAULT] => (boolean) true [COUNTRY] => (empty string) [DOMAIN] => www.askaron.ru [DOMAIN_MOBILE] => m.askaron.ru [DOMAINS_OTHER_KEYS] => Array ( [askaron.ru] => (boolean) true [amp.askaron.ru] => (boolean) true ) ) [1065] => Array ( [ID] => 1065 [NAME] => Астана [CODE] => astana [XML_ID] => astana [IS_DEFAULT] => (boolean) false [COUNTRY] => kz [DOMAIN] => astana.askaron.ru [DOMAIN_MOBILE] => m-astana.askaron.ru 
[DOMAINS_OTHER_KEYS] => Array ( ) ) [1064] => Array ( [ID] => 1064 [NAME] => Минск [CODE] => minsk [XML_ID] => minsk [IS_DEFAULT] => (boolean) false [COUNTRY] => by [DOMAIN] => minsk.askaron.ru [DOMAIN_MOBILE] => m-minsk.askaron.ru [DOMAINS_OTHER_KEYS] => Array ( ) ) [1067] => Array ( [ID] => 1067 [NAME] => Москва и Подмосковье [CODE] => msk [XML_ID] => msk [IS_DEFAULT] => (boolean) false [COUNTRY] => ru [DOMAIN] => msk.askaron.ru [DOMAIN_MOBILE] => m-msk.askaron.ru [DOMAINS_OTHER_KEYS] => Array ( ) ) )

Важно: в названии обрезаются пробелы и символы подчеркивания. "__Весь мир" => "Весь мир". Это нужно, чтобы важнейшие регионы выводились в административном разделе в начале.

[NAME] => Весь мир

В случае, если многодоменность включена, то домен заполняется

[DOMAIN] => www.askaron.ru [DOMAIN_MOBILE] => m.askaron.ru
В случае, если многодоменность выключена, то домен не заполняется [DOMAIN] => "" [DOMAIN_MOBILE] => ""


Метод для установки текущего региона

public static function setCurrent( ?int $id = null, ?string $site_id = null): void

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

Параметр $id — ID нового домена. Если $id не задан, то метод будет искать текущий домен по своему алгоритму. Метод без параметра $id не надо вызывать в шаблоне сайта, он вызывается внутри \Askaron\Regions\Region::getCurrentId и других подобных фунциях.

Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.

Метод ничего не возвращает, а записывает к себе в статическую переменную данные о регионе.

Пример
\Askaron\Regions\Region::setCurrent(1001);
$REGION_ID = \Askaron\Regions\Region::getCurrentId();
// вернёт 1001, если такой регион существует
// далее можете сделать редирект или продолжить выполнение страницы с новым регионом

Статические методы для работы с текущим регионом, который вычислил модуль.
public static function getCurrentId( ?string $site_id = null ): ?int
public static function getCurrentCode( ?string $site_id = null ): ?string
public static function getCurrentXmlId( ?string $site_id = null ): ?string
public static function getCurrentName( ?string $site_id = null ): ?string
public static function getCurrentPropDomain( ?string $site_id = null ): ?string
public static function getCurrentPropDomainMobile( ?string $site_id = null ): ?string
public static function getCurrentPropDomainsOtherKeys( ?string $site_id = null ): ?array
public static function getCurrentIsDefault( ?string $site_id = null ): ?bool
public static function getCurrentPropCountry( ?string $site_id = null ): ?string

Возвращают null только в случае, если никакой регион для сайта не найден. Это почти невозможная ситуация, но может быть, если деактивировать все регионы. Или регион ищем по сайту, где нет регионов, с опцией «Включить выбор регионов с учетом свойства Код сайта».

Параметр $site_id для фильтрации регионов по сайту в Битриксе срабатывает только, если в настройках модуля включена опция «Включить выбор регионов с учетом свойства Код сайта». Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт (в публичном разделе). $site_id имеет смысл задавать в административном разделе.

ID текущего элемента инфоблока Регионы
$REGION_ID = \Askaron\Regions\Region::getCurrentId();

Код текущего элемента инфоблока Регионы
$REGION_CODE = \Askaron\Regions\Region::getCurrentCode();

XML_ID текущего элемента инфоблока Регионы
$REGION_XML_ID = \Askaron\Regions\Region::getCurrentXmlId();

Название текущего элемента инфоблока Регионы. В названии удаляются символы подчёркивания и пробелы в начале и в конце.
__Весь мир будет выводиться, как Весь мир. Это сделано, чтобы в админке такой регион был раньше для контент-менеджера при сортировке по алфавиту.
$REGION_NAME = \Askaron\Regions\Region::getCurrentName();

Свойство Домен текущего элемента инфоблока Регионы. Метод работает в случае, если включена Многодоменность (для основного домена) в настройках модуля
$REGION_PROP_DOMAIN = \Askaron\Regions\Region::getCurrentPropDomain();

Свойство Мобильный домен элемента инфоблока Регионы. Метод работает в случае, если включена Многодоменность для мобильного домена в настройках модуля
$REGION_PROP_DOMAIN_MOBILE = \Askaron\Regions\Region::getCurrentPropDomainMobile();

Свойство Другие домены для определения региона. Обычно не надо задавать это свойство.
Метод работает, если по домену или мобильному домену регион не определён.
Метод нужен в случае если есть два разнозначных домена с www и без www. Либо нужно создать служебный поддомен вроде amp.сайт.ру и amp-msk.сайт.ру
Возвращает массив ключей из дополнительных доменов для определения региона, если заданы.
$REGION_DOMAINS_OTHER_KEYS = \Askaron\Regions\Region::getCurrentPropDomainsOtherKeys(); // array( "сайт.ru" => true, "amp.сайт.ru" => true )

Свойство Регион по-умолчанию. Метод вернёт true, если установлено в текущем регионе, иначе false
$REGION_IS_DEFAULT = \Askaron\Regions\Region::getCurrentIsDefault();

Свойство Страна для текущего элемента инфоблока Регионы. Вернет XML_ID связанного элемента хайлоадблока. В качестве примера ru, by, kz, ua. Но можно придумать свои «Страны». Например Европа, Азия, Африка. Это свойство сделано для удобной группировки регионов. Свойство может быть вообще не заполнено. Например для __Весь мир
$REGION_COUNTRY = \Askaron\Regions\Region::getCurrentPropCountry();

Настройки++

Модуль «Настройки++» создает страницу дополнительных настроек для вашего проекта.

Модуль бесплатный

— значение настройки можно легко получить, как обычную опцию, и модуль подключать не надо

— записать настройку из собственного скрипта можно методом: CAskaronSettings::Update .

. Ни в коем случае не используйте COption::SetOptionString( "askaron.settings", "UF_PHONE" ).
Если вы случайно записали настройку с помощью COption::SetOptionString, то вам надо удалить ее из таблицы b_option и сбросить кеш.

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


if (CModule::IncludeModule( "askaron.include" ))

//здесь можно использовать функции и классы модуля
>
?>

Описание модуля

Модуль «Настройки++» создает страницу дополнительных настроек для вашего проекта.

В отличие от других подобных модулей, все настройки хранятся в отдельной таблице и не ограничены длинной опции в 2000 символов.

Модуль основан на дополнительных пользовательских полях Битрикса. Уже есть самые разнообразные типы полей.

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

Страница решения в Маркетплейсе:
Статья:
Модуль «Настройки++» — новогодний подарок разработчикам
Работает на:
«1С-Битрикс: Управление сайтом» - любые редакции.«Битрикс24 из коробки» - любые редакции.

Установка модуля:

Модуль устанавливается, как любой модуль из маркетплейса, и никаких вопросов не задает.

Настройка модуля:

После установки модуля перейдите на страницу настроек:
Настройки → Настройки++ (в самом низу)

Страница настроек представляет собой обычную страницу редактирования дополнительных пользовательских полей.

Пользовательские поля — стандартный функционал Битрикса. Аналогичные пользовательские поля есть для пользователя, или для раздела инфоблока.

Теперь пользовательские поля есть для проекта:

Страница настроек 2.0

Настройки поля:

Настройка поля

Удаление модуля:

Модуль удаляется, как обычно, никаких вопросов не задает.

Классы и события

Чтение настройки

Для того, чтобы просто получить значение настройки в своем коде, достаточно вызвать обычную функцию для получения опции. Модуль askaron.settings подключать не надо.

Значение настройки будет извлечено не из таблицы опций, а из таблицы дополнительных пользовательских полей.

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

Замечание по третьему параметру \COption::GetOptionString

Третий параметр функции не поддерживается и не используется:

всегда будет возвращаться default value

Ограничения

Длина пользовательского поля ограничена колонкой таблицы базы данных, в которой это значение хранится. Для текстовых полей MySQL это тип TEXT на 64 килобайта. Ничто не мешает в случае чего сделать тип колонки LONG_TEXT на 4 гигабайта.

Если у вас множественное поле, то общая его длина ограничена размером колонки типа TEXT (можно сделать LONG_TEXT). Но длина одного значения множественного поля всего 2000 символов. Обязательно учитывайте это обстоятельство при проектировании. Это ограничение системы Битрикс для множественных пользовательских полей.

Класс CAskaronSettings

Функция
array CAskaronSettings::GetFields()

Функция возвращает массив значений всех пользовательских настроек

if(CModule::IncludeModule("askaron.settings"))
<
$arFields = CAskaronSettings::GetFields();
>
?>

Функция
void CAskaronSettings::ClearCache()

Функция очищает кеш значений всех пользовательских настроек

Функция
boolean CAskaronSettings::Update( array $arFields )

Функция записывает значения пользовательских настроек.

Возвращает значение true, если всё хорошо, и false, если произошла ошибка.

if ( CModule::IncludeModule("askaron.settings") )
<
$arUpdateFields = array(
"UF_PHONE" => "+7 (863) 292-41-62",
);

$obSettings = new CAskaronSettings;
$res = $obSettings->Update( $arUpdateFields );
if ( $res )
<
echo "Поля записаны успешно";
>
else
<
echo $obSettings->LAST_ERROR;
>
>
?>

События OnBeforeSettingsUpdate и OnAfterSettingsUpdate

События OnBeforeSettingsUpdate и OnAfterSettingsUpdate вызываются в методе CAskaronSettings::Update()

Функция-обработчик имеет параметр &$arFields.

Если функция-обработчик для события OnBeforeSettingsUpdate вернет false, то запись значений не произойдет.

// в /bitrix/php_interface/dbconn.php
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_65456.txt");

// в /bitrix/php_interface/init.php
AddEventHandler("askaron.settings", "OnBeforeSettingsUpdate", array( "CMyClass", "OnBeforeSettingsUpdateHandler" ) );
AddEventHandler("askaron.settings", "OnAfterSettingsUpdate", array( "CMyClass", "OnAfterSettingsUpdateHandler" ) );

class CMyClass
<
public static function OnBeforeSettingsUpdateHandler( &$arFields )
<
if ( isset( $arFields["UF_PHONE"] ) && strlen( $arFields["UF_PHONE"] ) == 0 )
<
global $APPLICATION;
$APPLICATION->throwException("Телефон не может быть пустым");
return false;
>
>

public static function OnAfterSettingsUpdateHandler( &$arFields )
<
// получить массив всех новых значений, которые записались
$arFields = CAskaronSettings::GetFields();

// записать массив значений в лог-файл
AddMessage2Log( print_r($arFields, true) );
>
>
?>

Получения результата у полей типа список и файл

Для того, чтобы просто получить значение настройки в своем коде, достаточно вызвать обычную функцию для получения опции. Модуль askaron.settings подключать не надо.

С числами и строками проблемы нет. Однако возникают вопросы с полями типа список и типа файл. Метод возвращает только ID файла и ID элемента списка.

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

АПИ Битрикса для файла:

АПИ Битрикса для варианта списка

Округление скидок

Решение помогает преобразовать цену, после применения скидки.

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

Требуется наличие модуля «Торговый каталог».

Работает на:
«1С-Битрикс: Управление сайтом» - малый бизнес и бизнес

Демо-версия полностью функциональная. Срок демо-периода 30 дней.

Пример работы модуля:

Screenshot_2.png

Цены до применения модуля:

Цены после применения модуля:

Screenshot_3.png

Округление цен:
Позволяет получить округленную цену, после применения скидки. В частности помогает избавится от копеек, которые появляются после применения скидки.

Психологическое округление:
позволяет получить "красивую" цену, например, преобразовать 2000 в 1999.

Корректировка округления:
позволяет ввести корректировку, чтобы не допустить слишком сильного снижения цены после округления.

Динамический предпросмотр:
показывает пример применения всех настроек к заданной цене.

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

Описание модуля

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

По умолчанию мы округляем цены в меньшую сторону с точностью до 1.

Для более точной настройки необходимо перейти на страницу настройки модуля:
Магазин - Скидки - Округление цен
либо
Настройки - Настройки продукта - Настройки модулей - Округление скидок

В процессе изменения настроек в разделе " Пример работы модуля с настройками заданными выше" мы видим как будет изменятся заданная цена при текущих настройках.

Screenshot_7.png

Рассмотрим основные настройки:

Screenshot_4.png

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

Screenshot_5.png

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

Screenshot_6.png

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

Классы

CAskaronRound

Apply

Округляет число по правилам, указанными в настройках модуля.

Параметры функции:

Параметры Описание
PRICE Исходная цена

Пример:
Применим все округления к заданной цене.

Использование:

Применяйте эту функцию, когда вам надо заранее показать, какую скидку пользователь может получить:

Цены со скидками

Cобытия

OnAfterApply

float функция-обработчик( float $price, float $original_price );

Событие вызывается в конце функции CAskaronRound::Apply после применения всех округлений и позволяет изменить конечный результат

$price - получившаяся после округления цена
$original_price - цена до всех округлений

Пример обработчика события, который для всех цен меньше 10 отменяет округление:

AddEventHandler("askaron.round", "OnAfterApply", Array("CMyRound", "OnAfterApply"));

// возвращать цену без округления в случае, если исходная цена товара меньше 10
class CMyRound
public static function OnAfterApply($price, $original_price)
$result = $price;

if ( $original_price < 10 )
$result = $original_price;
>


Пример округления цен с диапазонами

Вы можете с помощью элементарных арифметических операций самостоятельно рассчитать любую цену.

  1. на товары с ценой после скидки до 1000 руб. – округление с точностью 10
  2. на товары с ценой после скидки более 1000 руб. – округление с точностью 100
  3. на товары с ценой после скидки более 10000 руб. – округление с точностью 1000

Файл /bitrix/php_interface/init.php как раз предназначен для таких задач, при обновлении Битрикса не изменяется. Если такого файла нет, создайте его.

Внимание:
Настоятельно не рекомендуется редактировать файл через админку Битрикса.
Лучше всего редактировать файл через панель управления хостингом или по FTP.

// Регистрируем обработчик события при округлении скидок.
AddEventHandler("askaron.round", "OnAfterApply", Array("CMyRound", "OnAfterApply"));

class CMyRound
public static function OnAfterApply($price, $original_price)
$result = $original_price;

// функция round округляет по арифметическим правилам.
// можно округлять в меньшую сторону, если заменить round() на floor()
// можно округлять в большую сторону, если заменить round() на ceil()

// можно сделать психологически привлекатель ную цену, если после округления отнять 1
// если цена уменьшилась сильно, можно добавить корректировку.

if ( $original_price < 1000 )
$result = round( $original_price / 10 ) * 10;
//$result = max(0, $result -1);

// корректировка после округления имеет смысл только
// после округления в меньшую сторону (floor) и психологического округления
//if ( $original_price - $result > 10 )
// // $result = $result + 10;
//>
>
elseif ( $original_price >= 1000 && $original_price < 10000 )
$result = round( $original_price / 100 ) * 100;
//$result = max(0, $result -1);

// корректировка после округления имеет смысл только
// после округления в меньшую сторону (floor) и психологического округления
//if ( $original_price - $result > 100 )
// // $result = $result + 100;
//>
>
else
$result = round( $original_price / 1000 ) * 1000;
//$result = max(0, $result -1);

// корректировка после округления имеет смысл только
// после округления в меньшую сторону (floor) и психологического округления
//if ( $original_price - $result > 1000 )
// // $result = $result + 1000;
//>
>

return $result;
>
>
?>

Онлайн-консультант Webconsult

Модуль «Онлайн-консультант Webconsult» размещает на сайте код онлайн-консультанта Webconsult. Можно указать, на каких страницах и для каких групп не выводить.

Модуль бесплатный, консультант имеет как платный, так и бесплатный тариф.

Тарифы

Примеры работы консультанта

Диалог
Оффлайн-сообщение

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

Описание модуля

Модуль «Онлайн-консультант Webconsult» размещает на сайте код онлайн-консультанта Webconsult. Можно указать, на каких страницах и для каких групп не выводить.

Настройки показа консультанта.

Страница настроек модуля

1) Общие настройки для всех сайтов

Отображать Webconsult для всех пользователей, кроме пользователей из отмеченных групп

Позволяет ограничить показ консультанта для пользователей из определённых групп (например, администраторы и контент-менеджеры). По умолчанию группы не выбраны, т.е. отображать всем.

Отображать Webconsult в режиме правки

Позволяет скрывать панель консультанта при включённом режиме правки. По умолчанию опция не отмечена, т.е. не отображать.

2) Настройки для сайта

Данная группа настроек отображается отдельно для каждого сайта.

Отображать Webconsult

Выбрать, будет ли отображаться консультант на данном сайте. По умолчанию включено.

Ограничивать показ консультанта в зависимости от текущего раздела, Не выводить Webconsult в следующих разделах (каждый раздел с новой строки)

Позволяет выбрать разделы, в которых консультант отображаться не будет. По умолчанию опция отключена (будет отображаться во всех разделах), по умолчанию указаны разделы /ajax/ и /frames/.

Разработчикам:

Если консультант необходимо не отображать на каких-то отдельных страницах сайта, на этих страницах можно определить константу

Код для вставки на сайте

На каждом сайте можно выводить разный онлайн-консультант (уточните условия вашего тарифа на сайте онлайн-консультанта). Подробная инструкция по получению кода.

Как получить код для вставки на сайте

Модуль «Онлайн-консультант Webconsult» размещает на сайте код онлайн-консультанта Webconsult. Можно указать, на каких страницах и для каких групп не выводить.

Инструкция по получению кода для вставки на сайте

Регистрация на сайте

2) В панели управления, в разделе «Сайты», добавить адрес своего сайта.

Добавление сайта

3) Можно настроить внешний вид консультанта прямо сейчас, либо сделать это позднее в разделе «Сайты», нажав на кнопку «Дизайн» рядом с названием сайта.

Панель настройки дизайна

4) Вы получили код для вставки, скопируйте его и вставьте в настройках модуля в поле «Код для вставки на сайте». Заново получить код можно в разделе «Сайты», нажав на кнопку «Получить код» рядом с названием сайта.

Код для вставки

Оплата заказа по ссылке

Модуль отправляет покупателю ссылку на специальную страницу для оплаты заказа.

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

Ссылки генерируются и группируются в настройках модуля индивидуально по каждой платежной системе и по каждой отдельной оплате в заказе покупателя.

Описание модуля

Описание модуля «Оплата заказа по ссылке»

Модуль отправляет покупателю ссылку на специальную страницу для оплаты заказа.

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

Ссылки генерируются и группируются в настройках модуля индивидуально по каждой платежной системе и по каждой отдельной оплате в заказе покупателя.

Возможные сценарии использования модуля:

1) Вставить ссылку на оплату заказа в почтовые шаблоны. Тогда пользователю не придётся заходить на сайт и искать свой заказ. Он сможет сразу перейти к оплате из любого письма: новый заказ, изменение статуса, напомниание об оплате и т.д. в зависимости от указанных в настройках модуля почтовых событий.

Почтовые шаблоны

Почтовый шаблон

Письмо о заказе

2) Отправить покупателю ссылку на оплату заказа в онлайн-чат, открытую линию Битрикс24, через мобильный мессенджер и иные средства коммуникации.

Ссылки на оплату

Заказ

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

Показать текст об оплате

Оплата по номеру карты.jpg

Заказ найден, но пока на сайте не разрешено его оплачивать

Сообщение «Заказ найден, но пока на сайте не разрешено его оплачивать» при переходе на оплату — это не ошибка.

Если вы видите такое сообщение, то на сайте включена опция «Статус, начиная с которого можно оплатить заказ»

Перейдите в настройки системы: «Настройки продукта - Настройки модулей - Интернет-магазин»

Опция «Статус, начиная с которого можно оплатить заказ».

1. Вы можете установить другой статус.

2. Иногда порядок статусов заказа нарушается в настройках магазина администраторами. Перейдите «Магазин - Настройки - Статусы», убедитесь, что сортировка статусов установлена в правильном порядке.

Статус заказа, начиная с которого оплачивать

Если на вашем сайте используется какой-то статус, типа «Оплата разрешена», то в начальном статусе «Принят» не нужно отправлять ссылку на оплату.

Установка и настройка

Модуль «Оплата заказа по ссылке» устанавливается как любой модуль из Маркетплейса.

После установки модуля перейдите на страницу управления модулем:

Магазин -> Оплата заказа по ссылке

Пример, чтобы покупателю приходило письмо с ссылкой об оплате:
- если наступило почтовое событие при "Новом заказе" и при "изменение заказа на Принят, ожидается оплата".
- если в заказе выбрана система "Банковские карты",

1. В общих настройках модуля отметить почтовые события, при наступлении которых надо добавить ссылку в письмо.

Например, Новый заказ [SALE_NEW_ORDER] и/или Изменение статуса заказа на "Принят, ожидается оплата" [SALE_STATUS_CHANGED_N]


В тип почтового события следует подставлять #ORDER_REAL_ID# или #ORDER_ID# для старых Битриксов.

Почтовые шаблоны

2. По умолчанию ссылка на оплату вставляется в почтовый шаблон вместо #ASKARON_URLPAY_HTML_LINK#. Добавьте #ASKARON_URLPAY_HTML_LINK# в почтовые шаблоны к событиям SALE_NEW_ORDER и/или SALE_STATUS_CHANGED_N

В почтовые шаблоны можно добавить #ASKARON_URLPAY_HREF# и #ASKARON_URLPAY_HREF_SHORT#

#ASKARON_URLPAY_HTML_LINK# - кнопка «оплата по ссылке»
#ASKARON_URLPAY_TEXT_LINK# - кнопка «оплата по ссылке» для почтовых шаблонов в text-формате.
#ASKARON_URLPAY_HREF# - просто ссылка

#ASKARON_URLPAY_HREF_SHORT# - сокращённая ссылка, более удобная для шаблона СМС.

Почтовый шаблон

3. Перейдите в меню модуля к настройкам для платёжной системы, например Банковские карты [4]. Отметьте флажок Формировать ссылку для оплаты.

Включить формирование ссылки

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

5. Описание всех настроек на странице Настройки модуля.

Настройки модуля

Модуль «Оплата заказа по ссылке» устанавливается как любой модуль из Маркетплейса и никаких вопросов не задаёт

С версии 3.2.3 модуль никаких файлов в папке сайта не создаёт. При необходимости оставлена опция, если пользователь хочет указать свою собственную страницу на оплату. По умолчанию страница на оплату будет /bitrix/tools/askaron_urlpay.php

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

Общие настройки модуля


После установки модуля перейдите на страницу управления модулем:

Магазин -> Оплата заказа по ссылке -> Общие настройки модуля

Настройки модуля 1

Настройки модуля 2

Назначение полей на заглавной странице настроек модуля (общие настройки):

Подставлять https вместо http — для ссылок на оплату

URL страницы, где расположен компонент модуля — указывается папка и имя файла относительно корня сайта.

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

Содержимое ссылки на оплату для вставки в письмо вместо поля #ASKARON_URLPAY_HTML_LINK# — содержимое ключа для подстановки в письма html-формата

Содержимое ссылки на оплату для вставки в письмо вместо поля #ASKARON_URLPAY_TEXT_LINK# — содержимое ключа для подстановки в письма text-формата

Удалённые опции:

Сайт (полный адрес сайта) Опция удалена с версии 4.0.0. Какой адрес сайта будет использоваться для формирования ссылок.

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

Шаблон для вставки в письма Опция переименована с версии 4.0.0. Содержимое ссылки на оплату для вставки в письмо

Перечень типов почтовых событий Опция перенесена на отдельную страницу Почтовые шаблоны.

Настройки для платёжной системы:

Магазин -> Оплата заказа по ссылке -> (например) Банковские карты

Включить формирование ссылки

Назначение полей на страницах систем оплаты:

Модуль автоматически создаёт страницу настроек для каждой присутствующей в Битриксе системы оплаты. На вкладке "Параметры" доступны следующие поля:

Сформировать ссылку для оплаты — включает или отключает формирование ссылок на оплату для данной платежной системы.

Авторизоровать пользователя при переходе по ссылке — важный параметр, который зависит от особенностей сайта и обработчика платежной системы. Используется, когда для перехода к оплате пользователь должен обязательно быть авторизован.

Способ перехода к оплате — если выбрано "Через обработчик платежной системы", то дальнейшее направление пользователя на соответствующий сайт для оплаты будет осуществляться по логике работы данного обработчика. Если выбрано "Прямая ссылка", то пользователь будет перенаправлен по указанному в поле "Прямая ссылка на оплату" адресу.

Включить авто-переход на страницу оплаты — управление автоматическим перенаправлением по заданной ссылке или по ссылке, формируемой обработчиком платежной системы.

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

Текст, который следует вывести, если нет перехода по ссылке — отображается на странице с компонентом, обрабатывающим ссылки на оплату.

Отзывы о товаре

Модуль «Отзывы о товаре» позволяет добавить на страницу товара отзывы с выставление оценки.

Демо-версия полностью функциональная, срок демо-периода 30 дней.

Разработчикам:


if (CModule::IncludeModule( "askaron.reviews" ))

//здесь можно использовать функции и классы модуля
>
?>

Опиcание модуля

Модуль предназначен для организации отзывов к товарам на сайте.

Работает на:
«1С-Битрикс: Управление сайтом» - любые редаксии.
«1С-Битрикс: Битрикс24 в коробке» - любые редакции.

Требуется:
- наличие модуля инфоблоков,
- тип базы данных MySQL,
- версия главного модуля не ниже 14.0.0 (используется ORM, ядро D7)

Примеры сайтов, где используется решение:
http://askaron.ru/portfolio/solutions/askaron.reviews/#new-review - отзывы к модулю «Отзывы о товаре»

Модуль включает в себя следующие компоненты 2.0:

Название Код в пространстве имен askaron Описание
Список отзывов для товара askaron.reviews.for.element Список отзывов для элемента инфоблока. Можно включить обратную постраничную навигацию, стандартный режим AJAX Битрикса и отображение формы добавления отзыва.
Добавление нового отзыва askaron.reviews.new Форма добавления нового отзыва

Отзывы к товару компонент

Миграция отзывов форума

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

На отдельной странице можно совершенно безопасно скопировать старые отзывы модуля форума в новые «Отзывы о товаре».

Если у вас раньше был компонент bitrix:forum.topic.reviews, то теперь можно скопировать в новый компонент.

Миграция отзывов форума

Свойства товаров

Модуль создает и заполняет свойства товаров:

Основные свойства:

ASKARON_REVIEWS_COUNT - Количество отзывов
ASKARON_REVIEWS_AVERAGE - Средняя оценка из отзывов
ASKARON_REVIEWS_RATING - Рейтинг из оценок отзывов

Используйте ASKARON_REVIEWS_COUNT для вывода количества отзывов.

Используйте ASKARON_REVIEWS_AVERAGE для вывода средней оценки.

Используйте ASKARON_REVIEWS_RATING для сортировки товаров.

ASKARON_REVIEWS_RATING число, рассчитанное по хитрой формуле. Это не совсем среднее арифметическое. Но это число гораздо лучше позволяет отсортировать товары. Товар с 9 пятерками и 1 четверкой будет лучше, чем товар с одной оценкой «пять»!

Свойства товара для компонента "Голосование" или "Честное голосование":

Свойства, которые имею отношение к компоненту «Голосование» или «Честное голосование»:

vote_sum - сумма всех оценок
vote_count - количество оценок
rating - рейтинг

На большинстве сайтов, где таких компонентов нет, свойства пересчитывать не надо! Будут лишние свойства, которые нигде не используются.

На некоторых сайтах используется типовой компонент «Голосование» или «Честное голосование».

Компонент голосование

Голосование позволяет поставить оценку товару. С отзывами такой компонент никак не связан.

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

Оценка отзыва прибавляется к оценке голосования, записывается в свойства:

vote_sum - сумма всех оценок
vote_count - количество оценок
rating - рейтинг число, рассчитанное по хитрой формуле.

Обновление счетчиков

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

Обновление счетчиков

Микроразметка schema.org

Модуль поддерживает микроразметку schema.org.

Микроразметка нужна, чтобы поисковики лучше индексировали сайт.

Компонент список отзывов для товара (askaron:askaron.reviews.for.element):

Микроразметка сделана универсально, и проходит валидацию.

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

Для этого есть опция:

schema.org: добавить к отзыву аттрибут itemprop="review".

Аттрибут itemprop="review" говорит, что отзыв вложен во что-то еще.

После включения опции проверьте валидатором страницу.

schema.org - добавить аттрибут

Обратная постраничная навигация

Обратная постраничная навигация используется в компоненте список отзывов для элемента (askaron.reviews.for.element).

Обратная навигация встречается сравнительно редко. И может вызывать вопросы.

Обнаружил, что неправильно отрабатывается разбиение списка отзывов на страницы.

Например, у меня всего 5 отзывов. Я ставлю выводить по 3 на страницу, а выводится все равно 5.

Если поставить по 2 на страницу, то выводится на первой странице 3 элемента, на второй 2, но по логике должно быть 3 страницы.

Это не ошибка. Это обратная постраничная навигация — очень крутая фишка Битрикса, которую редко применяют, но мы её сделали в нашем компоненте.

Обратная постраничная навигация нужна, чтобы контент не убегал при добавлении нового отзыва. Это нужно для поисковиков.

Обратную постраничную навигацию необходимо использовать везде, где элементы добавляются в начало: новости, отзывы, посты в блоге, сообщения на форуме. Пример http://idea.1c-bitrix.ru/

Если делать прямую навигацию то из 11 элементов будет:
- 3
- 3 PAGEN_1=2
- 3 PAGEN_1=3
- 2 PAGEN_1=4

При добавлении элемента все старые страницы сдвигаются и меняются. Это плохо для поисковиков - которые ведут на старую проиндексированнуюю страницу, а контент уже убежал.

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

- 5
- 3 PAGEN_1=2
- 3 PAGEN_1=1

В этом случае на последней странице всегда 3 элемента. А на первой не менее 3, но не более 5.

Все типовые шаблоны компонента навигации Битрикса поддерживают обратную постраничную навигацию.

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

Голосование за отзыв

В настоящее время выставление оценки отзыву (плюс/минус) не предусмотрено.

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

IncludeComponent(
"bitrix:rating.vote",
".default", //templates: .default, like, like_graphic, standart, standart_text
Array(
"ENTITY_TYPE_ID" => "ASKARON_REVIEW", // Rating object type: USER, FORUM_TOPIC, FORUM_POST, BLOG_POST, BLOG_COMMENT, IBLOCK_ELEMENT
"ENTITY_ID" => $arItem["ID"],// Element ID
"OWNER_ID" => $arItem["AUTHOR_USER_ID"], // User Id
"PATH_TO_USER_PROFILE" => "/club/user/#UID#/", // User profile URL
),
false,
array("HIDE_ICONS" => "Y")
);?>

Размещение компонента «Список отзывов для товара»

Размещение после компонента Элемент детально

Редактирование компонента catalog

Компонент «список отзывов для товара» обычно размещается на детальной странице после компонента Элемент детально (bitrix:catalog.element)



//Компонент bitrix:catalog.
//Изменить шаблон. В файле element.php после bitrix:catalog.element добавить компонент отзывов.

IncludeComponent(
"askaron:askaron.reviews.for.element",
".default",
array(
"ELEMENT_ID" => $ElementID,
"CACHE_TYPE" => "A",
"CACHE_TIME" => "86400",
"PAGE_ELEMENT_COUNT" => 10,
"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"PAGER_TEMPLATE" => "",
"DISPLAY_BOTTOM_PAGER" => "Y",
"COMPONENT_TEMPLATE" => ".default",
"NEW_REVIEW_FORM" => "Y",
"AJAX_OPTION_ADDITIONAL" => "undefined"
),
false
);?>

Если надо разместить компонент отзывов внутри шаблона элемента детально, а не после него, рекомендуем делать это с помощью модуля «Включаемый код».

Как вариант, можете попробовать перенести шаблон внутрь другого шаблона с помощью Javascrtipt (библиотека jQuery):

// Компонент bitrix:catalog.
// Изменить шаблон. В файле element.php после bitrix:catalog.element
// добавить компонент отзывов.

IncludeComponent(
"askaron:askaron.reviews.for.element",
".default",
array(
"ELEMENT_ID" => $ElementID,
"CACHE_TYPE" => "A",
"CACHE_TIME" => "86400",
"PAGE_ELEMENT_COUNT" => 10,
"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"PAGER_TEMPLATE" => "",
"DISPLAY_BOTTOM_PAGER" => "Y",
"COMPONENT_TEMPLATE" => ".default",
"NEW_REVIEW_FORM" => "Y",
"AJAX_OPTION_ADDITIONAL" => "undefined"
),
false
);?>

//Если мы хотим выводить отзывы не прямо здесь,
//а внутри карточки товара, где есть элемент
?>

Размещение внутри компонента Элемент детально с помощью модуля «Включаемый код»

Типичная задача для модуля «Включамый код»:

- компонент catalog,
- в нём на странице element.php вызывается простой компонент catalog.element
- требуется на детальной странице товара вывести список отзывов (модуль Отзывы о товаре)

  1. создать включаемый файл,
  2. подключить файл.

Создаем в папке /bitrix/php_interface/include/askaron.include/ файл reviews.php

IncludeComponent(
"askaron:askaron.reviews.for.element",
".default",
array(
"ELEMENT_ID" => $arParams["ELEMENT_ID"],
"CACHE_TYPE" => "A",
"CACHE_TIME" => "86400",
"PAGE_ELEMENT_COUNT" => 10,
"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"PAGER_TEMPLATE" => "",
"DISPLAY_BOTTOM_PAGER" => "Y",
"COMPONENT_TEMPLATE" => ".default",
"NEW_REVIEW_FORM" => "Y",
"AJAX_OPTION_ADDITIONAL" => "undefined"
),
false
);?>

Аналогичный включаемый файл можно легко создать из готового примера включаемого файла:

Создать файл на основе примера

Теперь надо вызвать включаемый файл и передать в него параметр ELEMENT_ID.

Редактируем файл template.php в компоненте catalog.element:

Редактирование шаблона компонента

Ура! На странице товара появляются комментарии.

Есть одна проблема. В компонентах, где включен режим AJAX ("AJAX_MODE" => "Y") могут быть глюки.

Дело в том, что «Включаемый код» срабатывает на событиях в конце выполнения страницы. А режим AJAX использует отложенные функции.

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

Редактирование element.php

Функция PrintBuffer выведет товар детально и вызовет в нужных местах Включаемый код.

Список отзывов будет работать в режиме AJAX.

нам нужны на тот случай, если мы хотим, чтобы компонент оформления отзыва и список отзывов работали в режиме AJAX в закешированном компоненте,

"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",

а больше нигде не нужны.

Буферизация может неправильно себя вести случае, если в компоненте где-нибудь произойдет die().

Вы должны сделать так, чтобы эти методы не вызывались в случае, если работают аякс-скрипты в компоненте. Например CAskaronInclude::StartBuffer(); может не дружить с добавлением в корзину.

Пример, если окно "Товар добавлен в корзину" не открывается:

if ( $_REQUEST["action"] !== "ADD2BASKET" )
CAskaronInclude::StartBuffer();
>

$elementId = $APPLICATION->IncludeComponent(
'bitrix:catalog.element',
'',
$componentElementParams,
$component
);

if ( $_REQUEST["action"] !== "ADD2BASKET" )
CAskaronInclude::PrintBuffer();
>

Примеры API

Вывести самый позитивный отзыв

Задача: в шаблоне элемента детально вывести самый позитивный отзыв.

Вывести надо отзыв с максимальной оценкой, последний по дате. Выводить только достоинства. Если достоинства не заполнены, то текст.

Компонент catalog.element, файл result_modifier.php

$arResult["REVIEW"] = array();
if(CModule::IncludeModule("askaron.reviews"))
$arParameters = array(
'order' => array(
"GRADE" => "DESC",
'DATE' => 'DESC'
),
"filter" => array(
"=ELEMENT_ID" => $arParams["ELEMENT_ID"],
"ACTIVE" => "Y",
),
'select' => array(
"*",
"AUTHOR_USER.NAME",
"AUTHOR_USER.LAST_NAME",
"AUTHOR_USER.LOGIN",
),
'limit' => 1,
);

$res = \Askaron\Reviews\ReviewTable::getList( $arParameters );
while ( $arFields = $res->fetch() )
$arDisplayText = $arFields["PRO"];

if ($arDisplayText == "")
$arDisplayText = $arFields["TEXT"];
>

$arFields["DISPLAY_TEXT"] = htmlspecialcharsbx($arDisplayText); $arFields["DISPLAY_TEXT"] = str_replace( "\n", "
", $arFields["DISPLAY_TEXT"] );

$display_name = trim( $arFields["AUTHOR_NAME"] );

if ($display_name == "")
$display_name = trim($arFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_NAME"]." ".$arFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_LAST_NAME"] );
>

if ($display_name == "" )
$display_name = "Гость";
>
$arFields["~DISPLAY_NAME"] = $display_name;
$arFields["DISPLAY_NAME"] = htmlspecialcharsbx($display_name);
$arResult["REVIEW"] = $arFields;
>

В файле template.php можно вывести

События ORM D7 модуля Отзывы о товаре

Модуль не содержит собственных событий, однако можно повлиять на поведение Добавления, Изменения и Удаление данных модуля с помощью обычных событий ORM D7 Битрикса.

События ORM D7 присутствуют у всех сущностей Битрикса, которые используют ORM D7.

OnBeforeAdd (параметры: fields)
OnAdd (параметры: fields)
OnAfterAdd (параметры: fields, primary)

OnBeforeUpdate (параметры: primary, fields)
OnUpdate (параметры: primary, fields)
OnAfterUpdate (параметры: primary, fields)

OnBeforeDelete (параметры: primary)
OnDelete (параметры: primary)
OnAfterDelete (параметры: primary)

В частности, сущность \Askaron\Reviews\ReviewTable тоже использует эти события. Обработчики этих событий можно применять в своих проектах, однако мы оставляем за собой возможность изменять структуру таблиц модуля. В случае серьёзных изменений это будет указано в описании к обновлениям модуля. Мы уже неоднократно добавляли новые колонки в таблицу.

/bitrix/php_interface/dbconn.php

// для работы функции AddMessage2Log надо задать константу.
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/mylog-dfkjgdfklj.txt");

/bitrix/php_interface/init.php

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler( "askaron.reviews", "\\Askaron\\Reviews\\Review::OnAfterAdd", Array('CMyReview', "OnAfterAdd") );
$eventManager->addEventHandler( "askaron.reviews", "\\Askaron\\Reviews\\Review::OnAfterUpdate", Array('CMyReview', "OnAfterUpdate") );
$eventManager->addEventHandler( "askaron.reviews", "\\Askaron\\Reviews\\Review::OnAfterDelete", Array('CMyReview', "OnAfterDelete") );

class CMyReview
public static function OnAfterAdd( \Bitrix\Main\Entity\Event $event )
AddMessage2Log( "add" );
$fields = $event->getParameter("fields");
$primary = $event->getParameter("primary");

public static function OnAfterUpdate( \Bitrix\Main\Entity\Event $event )
AddMessage2Log( "update" );
$fields = $event->getParameter("fields");
AddMessage2Log($fields);
>

public static function OnAfterDelete( \Bitrix\Main\Entity\Event $event )
AddMessage2Log( "delete" );
$primary = $event->getParameter("primary");
AddMessage2Log($primary );

//$parameters = $event->getParameters();
//AddMessage2Log($parameters);
>
>

Отказоустойчивый обмен с 1С

Решение «Отказоустойчивый обмен с 1С» позволяет выгрузить неограниченное количество товаров даже на самый слабый хостинг.

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

Описание модуля

Решение «Отказоустойчивый обмен с 1С» позволяет выгрузить неограниченное количество товаров даже на самый слабый хостинг.

Модуль снижает нагрузку на сайт при стандартном обмене с 1С.

Модуль необходим, когда:

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

В случае необходимости модуль позволяет остановить обмен с 1С. Если администратор сайта видит, что обмен слишком затянулся, можно отметить флажок «Запретить» в настройках модуля.

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

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