Дата последнего изменения: 08.11.2023
Несколько примеров решения задач с помощью файла result_modifier.
Задача: показывать новых сотрудников на корпоративном портале только небольшой период времени, допустим, месяц с момента их приема на работу, а не до тех пор, пока не будет принят кто-то еще.
Чтобы решить задачу можно слегка изменить результаты работы компонента intranet.structure.informer.new, на основе которого работает гаджет Новые сотрудники.
//show only users hired in the last N days $period_days = 30; foreach ($arResult['ENTRIES'] as $key => $arEntry) { $user_reg_timestamp = MakeTimeStamp($arEntry["DATE_ACTIVE_FROM"] , "MM/DD/YYYY HH:MI:SS"); $from = strtotime("-".$period_days." days"); if ($user_reg_timestamp < $from) { unset($arResult['ENTRIES'][$key]); } }
В коде задается количество дней: в данном случае гаджет будет показывать только сотрудников, принятых в течение месяца. Дата приема сотрудника будет сравниваться с текущей датой и, если сотрудник принят больше, чем месяц назад, то он выводиться не будет.
<? if (count($arResult['ENTRIES']) == 0) { echo GetMessage('INTR_NO_ENTRIES'); } ?>
Само текстовое сообщение будет находиться в файле шаблона /lang/ru/template.php
$MESS['INTR_NO_ENTRIES'] = "Новых сотрудников в последнее время не было";
После изменений гаджет Новые сотрудники сможет показывать новых сотрудников в соответствии с выбранными параметрами.
На тех страницах корпоративного портала, где используется комплексный компонент Библиотека (bitrix:webdav), можно настроить список полей для показа. Но на вкладке Файлы на персональной странице или на вкладке Файлы в рабочих группах штатно список полей для показа настроить нельзя.
Если надо показывать описание файла на персональной странице или в рабочих группах, то сделайте следующее. Скопируйте компонент в собственное пространство имён. Далее в каталог /local/components/_ваше_пространство_имен_/webdav.section.list/templates/.default/
добавьте файл result_modifier.php со следующим кодом:
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true)die(); $arParams['COLUMNS'][] = 'PREVIEW_TEXT'; ?>
В результате имеем дополнительную колонку Описание для анонса:
Для размещения рекламного баннера внутри текста новости используйте разделитель #BANNER_BOTTOM#
, где BOTTOM
- тип баннера, который будет показан.
В режиме визуального редактора код может выглядеть следующим образом:
Используйте result_modifier.php, который следует поместить рядом с соответствующим шаблоном показа новости или статьи. Шаблон компонента предварительно скопирован в текущий шаблон сайта:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $arResult["DETAIL_TEXT"] = preg_replace( "/#BANNER_([A-Za-z-0-9]+)#/e", 'CAdvBanner::GetHTML(CAdvBanner::GetRandom("\1"))', $arResult["DETAIL_TEXT"] ); ?>
В итоге на сайте это будет выглядеть следующим образом:
foreach ($arResult['ITEMS'] as $key => $item) { if (!empty($item['PREVIEW_PICTURE']['SRC'])) { $resizeImg = CFile::ResizeImageGet( $item['PREVIEW_PICTURE'], [ 'width' => 300, 'height' => 300, ] ); if (!empty($resizeImg['src'])) { $resizeImg = array_change_key_case($resizeImg, CASE_UPPER); $arResult['ITEMS'][$key]['PREVIEW_PICTURE'] = $resizeImg; } } }
Еще примеры: