RUS
  • RUS
  • KAZ

Как копировать предварительно отформатированный текст (+прод)

Последние изменения: 10.10.2023

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

Перейдите в режим исходного кода редактора и добавьте один из варинатом HMTL-разметки.

а) Текст или код, прописанный с помощью тегов pre и code, не используя стилизованный блок. Пример для тега pre:

<div class="copy_block">
    <code>[Ваш предварительно отформатированный код]</code>
</div>

б) Текст или код, прописанный с помощью тегов code, используя стилизованный блок:

<div class="omni_block [выберите кастомный блок]"> <code class="[подсветка синтаксиса кода]">[Ваш предварительно отформатированный код]</code> </div>

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

Подсветка синтаксиса кода описана тут.

В результате мы динамически добавим элемент span class="omni_block-copy fa-duotone fa-copy". При копировании функция стирает все пустые пространства до и после вашего текста с помощью JS метода trim().

PRO Подсказка

Если хотите, чтобы все теги pre и code автоматически добавляли специальный блок .copy_block и элемент span для отображения иконки, то добавьте такой JS-скрипт по пути аккаунт администратора → раздел «Центр поддержки» → подраздел «Персонализация» → блок «виджеты и скрипты»:

<script> $(document).ready(function () { $("pre, code").each(function () { const codeElement = $(this); if (!codeElement.parent().hasClass('copy_block')) { const copyBlock = $('<div class="copy_block"></div>'); codeElement.wrap(copyBlock); const copyIcon = $('<span class="omni_block-copy fa-duotone fa-copy"></span>'); codeElement.parent().append(copyIcon); copyIcon.click(function () { let codeText = codeElement.text().trim(); const omniText = document.createElement('textarea'); omniText.style.position = 'fixed'; omniText.style.left = '0'; omniText.style.top = '0'; omniText.style.opacity = '0'; omniText.value = codeText; document.body.appendChild(omniText); omniText.focus(); omniText.select(); document.execCommand('copy'); document.body.removeChild(omniText); }); } }); }); </script>

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

Помогла ли вам статья?