Содержимое

События

Все примеры рабочие. Разместить обработчик события нужно в файле /bitrix/php_interface/init.php или /local/php_interface/init.php.

onResizeImage

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

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

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

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("bxmaker.mdbase", "onResizeImage", "onResizeImage");

function onResizeImage(\Bitrix\Main\Event $event) {
    $arParams = $event->getParameter('arParams');
    $img = \CFile::ResizeImageGet($event->getParameter('arFile'), array(
        'width' => 200, 'height' => 100
    ), BX_RESIZE_IMAGE_PROPORTIONAL);

    $result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, array(
        'resizedUrl' => $img['src']
    ));
    return $result;
}

Парсинг markdown

События

  • BXmakerMdbaseComponentDetailBeforeMarkdownParse - вызывается до парсинга markdown разметки и преобразования в html.
  • BXmakerMdbaseComponentDetailAfterMarkdownParse - вызывается после парсинга

Передаваемые параметры -

[
        'html' => $arElement['HTML'],
        'element' => $arElement,
        'params' => $this->arParams,
]

Чтобы изменился html, нужно вернуть измененный вариант

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'bxmaker.mdbase',
    'BXmakerMdbaseComponentDetailAfterMarkdownParse',
    function (\Bitrix\Main\Event $event) {
        $params = $event->getParameters();
        $chunks = explode('</p>', $params['html']);
        if (count($chunks) >= 4) {
            $banner = '<div style="padding:20px;background:#f0f0f0;margin:20px 0;">
                📬 <strong>Подпишитесь на рассылку!</strong>
            </div>';
            $out = '';
            foreach ($chunks as $i => $chunk) {
                $out .= $chunk;
                if ($i === 2) {
                    $out .= '</p>' . $banner;
                } elseif ($i < count($chunks) - 1) {
                    $out .= '</p>';
                }
            }
            $params['html'] = $out;
        }
        // если несколько событий, и нужно передать исправленый текст следующему обработчику
        // $event->setParameter('html', $params['html']);
        return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $params);
    }
);