Tuỳ biến hiển thị Codeblock trên Discourse

Trong quá trình vận hành trang cộng đồng sử dụng mã nguồn Discourse có thể bạn sẽ có nhu cầu đính kèm 1 đoạn code trong bài viết của mình. Tuy nhiên trình hiển thị code block mặc định của Discourse không thực thu hút người dùng, vậy hãy thử thực hiện 1 số tuỳ chỉnh sau.

Cài đặt thêm theme component[1]

  1. Codeblock Theme Picker (official[2]): Tuỳ chỉnh giao diện hiển thị code tương ứng với từng ngôn ngữ lập trình, sử dụng của thư viện highlight.js
    About Repository
  2. Code-block line numbers: Thêm số dòng hiển thị trước mỗi dòng mã.
    About Repository
  3. Customized Inline Codeblocks (official): Tuỳ chỉnh hiển thị code block
    About Repository

Sử dụng Custom code

Bên cạnh việc sử dụng các theme component có sẵn, Discourse cho phép người dùng tự khởi tạo theme component của riêng mình trực tiếp trên website nhằm thêm các custom code[3] bằng cách truy cập theo đường dẫn admin > customize > components chọn Install > Create new để bắt đầu.

image

:point_down: Dưới đây là custom code tuỳ chỉnh code block tương tư Business Lab đang sử dụng

Code 1: Tuỳ biến giao diện terminal giống macOS

.codeblock-buttons {
    box-shadow: 0px 0px 10px rgba(0,0,0,.4);
    border-radius: 7px 7px 0 0;
    display: flex;
    flex-direction: column;
    &:before{
        content:'Business Lab';
        display: grid;
        justify-content: center;
        font-family: var(--d-font-family--monospace);
        font-weight: bold;
        padding: 5px;
        background-color: #E8E6E8;
        color: black;
        order:1;
    }
    &:after{
        content:"";
        width: 12px;
        height: 12px;
        display: inline-block;
        border-radius: 15px;
        margin-left: 2px;
        border-width: 1px;
        border-style: solid;
        background: #EC6A5F;
        border-color: #D04E42;
        order:2;
        position: absolute;
        top: 10px;
        left: 5px;
    }
    & .codeblock-button-wrapper{
        right: .5rem !important;
        top: .25em !important;
        order:3;
        width: 100%;
        &:before{
            content:"";
            width: 12px;
            height: 12px;
            display: inline-block;
            border-radius: 15px;
            margin-left: 2px;
            border-width: 1px;
            border-style: solid;
            background: #F5C04F;
            border-color: #D6A13D;
            position: absolute;
            top: 6.5px;
            left: 30px;
        }
        &:after{
            content:"";
            width: 12px;
            height: 12px;
            display: inline-block;
            border-radius: 15px;
            margin-left: 2px;
            border-width: 1px;
            border-style: solid;
            background: #64CC57;
            border-color: #4EA73B;
            position: absolute;
            top: 6.5px;
            left: 48px;
        }
        & .btn.nohighlight{
            padding: .7em;
            float: right;
            &.copy-cmd{
                position: absolute;
                right: 0px;
            }
            &.fullscreen-cmd{
                position: absolute;
                right: 3.2em;
            }
            &.copy-cmd:not(.action-complete), &.fullscreen-cmd:not(.action-complete){
                opacity: 1;
                visibility: visible;
            }
        }
    }
    & code{
        order:4;
    }
}

Code 2: Sữa lỗi hiển thị theme component “Code-block line numbers” trong trường hợp giao diện hiển thị mặc định của website là sáng nhưng code block là tối

code{
    &.lines-decorator{
        padding: 0px;
        &.lines-shadow{
            background-image: linear-gradient(to right, var(--github) 25%, transparent), linear-gradient(to left, var(--github) 25%, transparent), linear-gradient(to right, var(--github), transparent), linear-gradient(to left, var(--github), transparent);
        }
        &.lines-number:not(.lines-count-1):not(.lines-in-quote) span.lines-line::before{
            background-color: #263238;
            color: rgba(233, 237, 237, 1);
        }
    }
    
}

  1. Theme component là các thành phần chủ đề giúp tuỳ chỉnh giao diện diễn đàn hoặc thêm một số tính năng mở rộng, do đội ngũ Discourse hoặc người dùng phát triển và chia sẻ trên Discourse ↩︎

  2. Đây là những theme component do đội ngũ Discouse duy trì và phát triển, đảm bộ nhận được các cập nhập mới nhất và nhận các yêu cầu hỗ trợ từ người dùng ↩︎

  3. Quản trị viên website có thể thêm các tuỳ chỉnh bằng các ngôn ngữ lập trình như html, css, javascript tương ứng với từng giao diện desktop, mobile ↩︎