RUS
  • RUS
  • KAZ

Как подсветить синтаксис кода в статьях базы знаний? 1

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

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

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

Сторонние JS-скрипты и кастомный CSS

Выберите подходящий вам вариант:

Google Prettify: импортируем сторонний скрипт, а в тегах pre или code указываем класс prettyprint, который самостоятельно определит язык. 

  • Проще всего настроить и использовать;

  • Список поддерживаемых языков доступен по ссылке, но вы можете импортировать дополнительные JS-скрипты для языков, которые не добавлены по умолчанию;

  • Code Google архивировал проект, поэтому обновлений ждать не стоит.

W3Schools: импортируем сторонний скрипт в центр поддержки и указываем нужный язык в тегах precode и других в формате class="w3-code [язык]High notranslate"

  • Доступные языки для выделения синтаксиса: HTML, CSS, JavaScript, Java, SQL, Python и Kotlin. 

  • Комментарии внутри кода не всегда считываются корректно; 

  • Сложнее прописывать классы в HTML тегах.

Prismjs: выбираем любые языки на сайте Prismjs, тем самым формируем JS-скрипты и CSS-стили → прописываем их в центре поддержки → указываем для каждого тега code нужный язык в формате class="language-[язык]"

  • Доступны практически все известные языки программирования;

  • Первоначальная настройка дольше, но добавлять теги в исходный код статьи несложно, благодаря синтаксису class="language-[язык]";

  • Комментарии внутри кода указывать не стоит, так как класс .comment конфликтует с комментариями раздела «Предложения».

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


Google Prettify

1.  Перейдите по пути аккаунт администратора → раздел «Центр поддержки» → подраздел «Персонализация» → блок «Виджеты и скрипты» и добавьте следующие строки в поле «Сторонние скрипты»:

<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>

2. При добавлении статьи в базе знаний перейдите в режим исходного кода и в тегах pre или code укажите нужный класс через конструкцию <[тег] class="prettyprint">.

Примеры выделения синтаксиса с помощью Google Prettify
<!DOCTYPE html> <html> <head> <title>My Page Title</title> <link rel="icon" type="image/x-icon" href="/images/favicon.ico"> </head> <body> <h1>This is a Heading</h1> <p>This is a paragraph.</p> </body> </html>
HTML-разметка кастомного блока для подсветки текста в формате HTML
<div class="omni_block html">
    <code class="prettyprint">[Ваша HTML-разметка]</code>
</div>
/** * Вставка в конец или в начало элемента */ var addCode = function(selector, htmlCode, after) { var element = $(selector); if(checkNotUndefined(after) === true && after === true) { element.append(htmlCode); } else { element.prepend(htmlCode); } };
HTML-разметка кастомного блока для подсветки кода на языке Javascript
<div class="omni_block js">
    <code class="prettyprint">[Ваш JavaScript-код]</code>
</div>

PRO Подсказка

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

/** * Вставка в конец или в начало элемента */ var addCode = function(selector, htmlCode, after) { var element = $(selector); if(checkNotUndefined(after) === true && after === true) { element.append(htmlCode); } else { element.prepend(htmlCode); } };
HTML-разметка кастомного блока для подсветки кода на языке JavaScript
<div class="omni_block js">
    <code class="prettyprint listnums">/**
     * Вставка в конец или в начало элемента
     */
    var addCode = function(selector, htmlCode, after) {
        var element = $(selector);

        if(checkNotUndefined(after) === true && after === true) {
            element.append(htmlCode);
        } else {
            element.prepend(htmlCode);
        }
    }; </code>
</div>

Вы можете указать конкретный язык. Для этого пропишите его в самом классе, к примеру, class="prettyprint lang-html", как мы сделали в спойлере выше. Подробнее тут.


W3Schools

1. Перейдите по пути аккаунт администратора → раздел «Центр поддержки» → подраздел «Персонализация» → блок «Виджеты и скрипты» и добавьте следующие строки в поле «Сторонние скрипты»:

<script src="https://www.w3schools.com/lib/w3codecolor.js"></script>
<script>w3CodeColor();</script>

2. При добавлении статьи в базу знаний, перейдите в режим исходного кода и в тегах pre или code укажите нужный класс через конструкцию <[тег] class="w3-code [язык]High notranslate">

Вы также можете использовать w3-code класс и в других тегах, к примеру, в теге span, который подойдет, если вы хотите выделить что-то прямо в предложении, без переноса строки: document.write('Hello, World!');

Примеры выделения синтаксиса с помощью W3School
HTML

Для HTML-разметки указывайте class="w3-code htmlHigh notranslate". Пример HTML-разметки горизонтального меню с кнопками с подсвеченным синтаксисом:

<div class="linelinks"> <a href="https://omnidesk.ru/features/" target="_blank">Видеоруководство</a> <a href="https://support.omnidesk.ru/knowledge_base/17438" target="_blank">Популярные юзкейсы</a> <a href="https://omnidesk.ru/pricing/" target="_blank">Настройка под ключ</a> </div>
HTML-разметка кастомного блока для подсветки текста в формате HTML
<div class="code_block_html" style="opacity: 1;">
    <code class="w3-code htmlHigh notranslate">[Ваша HTML-разметка]</code>
</div>
CSS

Для CSS-кода указывайте class="w3-code CssHigh notranslate". Пример CSS горизонтального меню с кнопками с подсвеченным синтаксисом:

.linelinks { display: grid; gap: 15px; align-items: center; margin: 20px 0; grid-template-columns: repeat(3,1fr); grid-template-rows: 1fr; align-items: center; box-sizing: border-box; } .linelinks a { color: #fff !important; font-weight: 600 !important; font-size: 17px; background-color: #377de9; border: 0; border-radius: 6px; text-align: center; box-shadow: 1px 2px 5px rgba(0,0,0,.2), 0px 1px 1px rgba(0,0,0,.3); padding: 15px; }
HTML-разметка для подсветки CSS стилей
<div class="omni_block css" style="opacity: 1;">
    <code class="w3-code cssHigh notranslate">[CSS код]</code>
</div>


Prismjs

1. Перейдите на сайт Prismjs, выберите тему и нужные вам языки в списке доступных:

Development version — коды весят больше, имеют нормальную структуру, поэтому занимают больше строк. Подойдет, если планируете вносить изменения.

Minified version — коды весят меньше, но сжаты до нескольких строк. Подойдет, если хотите однажды добавить и больше не возвращаться.

2. В конце странице вы получите готовый JS-скрипт и CSS-стили для выделения синтаксиса выбранных языков:

Скопируйте оба кода и перейдите в аккаунт администратора → раздел «Центр поддержки» → подраздел «Персонализация».

2.1. Вставьте JS-скрипт в поле «сторонние скрипты», внеся его в теги script:

2.2. Вставьте CSS-таблицы в поле «Кастомный CSS»:

3. При добавлении статьи в базе знаний перейдите в режим исходного кода, и в теге code укажите нужный класс объектов через конструкцию <code class="language-[язык]"> или <code class="lang-[язык]">  .

Хотя в документации Prismjs рекомендуют использовать конструкцию pre+code для блоков кода, в текущем редакторе оба тега использовать не получится, так как они упрощаются до тега pre, поэтому используйте только тег code.

Примеры выделения синтаксиса с помощью Prismjs
JSON

Для JSON-кода указывайте class="language-json". Пример JSON-запроса редактирования обращения:

"case" : { "subject" : "Test subject changed", "status" : "closed", "priority" : "critical", "language_id" : 2, "custom_fields" : { "cf_25" : "some text", "cf_30" : "another field" }, "add_labels" : [103, 104] } }
HTML-разметка кастомного блока для подсветки текстовых данных в формаре JSON
<div class="omni_block json" style="opacity: 1;">
    <code class="language-json">[Ваш JSON-текст]</code>
</div>
PHP

Для кода в формате php указывайте class="language-php". Пример добавления кнопки в коде самописного Telegram бота в формате PHP:

use Telegram\Bot\Api; include "widget_telegram.php"; $telegram = new Api('BOT TOKEN'); $response = $telegram->sendMessage([ 'chat_id' => 'CHAT_ID', 'text' => 'Привет, я бот!', 'reply_markup' = array( 'keyboard' => array(array('Связаться с оператором')), 'one_time_keyboard' => true, 'resize_keyboard' => true ); ]); $messageId = $response->getMessageId();
HTML-разметка кастомного блока для подсветки текста в кода в формате PHP
<div class="omni_block php">
      <code class="lang-php">[Ваш PHP-код]</code>
</div>

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