트

그누보드 코드블럭 Prism.JS적용(HOOK)

내용변환(conv_content -> html_purifier)시 hook을 사용해서 prismjs를 적용
[참고] https://prismjs.com/index.html#examples

1. 그누보드 extend폴더 안에 아래 파일 생성
prism.extend.php
[code]

add_event('tail_sub', 'prism_tail_sub', G5_HOOK_DEFAULT_PRIORITY);
add_replace('html_purifier_result', 'prism_html_purifier_result', 10, 3);

function prism_script(){

    add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/prism/prism.css">', -2);
    $sh = '<script src="'.G5_PLUGIN_URL.'/prism/prism.js"></script>'.PHP_EOL;
    $sh .= '<script>var is_SyntaxHighlighter = true;</script>';
    add_javascript($sh, 0);

}

function prism_tail_sub(){

    global $wr_id;

    if($_SERVER['SCRIPT_NAME'] != '/bbs/board.php' || !$wr_id) return;

    prism_script();

}

function PrismJS($m) {

    $str = isset($m[3]) ? $m[3] : '';

    if(!$str)
        return;

    $str = stripslashes($str);
    $str = preg_replace("/(<br>|<br \/>|<br\/>|<p>)/i", "\n", $str);
    $str = preg_replace("/(<div>|<\/div>|<\/p>)/i", "", $str);
    $str = str_replace(" ", " ", $str);
    $str = str_replace("/</", "<", $str);
    $str = str_replace("/[/", "[", $str);
    $str = str_replace("/{/", "{", $str);

    if(!$str)
        return;

    $brush = isset($m[2]) ? strtolower(trim($m[2])) : 'html';

    //prism_script();

    return '<div class="line-numbers"><pre><code class="language-'.$brush.'">'.$str.'</code></pre></div>'.PHP_EOL;

}

function prism_html_purifier_result($str){

    $content = preg_replace_callback("/(\[code\]|\[code=(.*)\])(.*)\[\/code\]/iUs", "PrismJS", $str); // PrismJS

    return $content;

}
[/code]
2. https://prismjs.com/download.html 접속해서 테마, 언어, 기능 다운로드(prism.js, prism.css)

662256717_1707132388.3085.jpg


3. 다운로드한 파일(prism.js, prism.css)을 플러그인 폴더에 업로드
662256717_1707132785.2953.jpg

4. Prism 의 Okaidia 테마적용
662256717_1707134761.4045.jpg

|

댓글 2개

와우 멋지네요

바로 적용해보러 가겠습니다.

감사합니다.
나중에 한번^^
댓글을 작성하시려면 로그인이 필요합니다.
+
제목 글쓴이 날짜 조회
24-03-29 조회 4,286
24-03-27 조회 4,971
24-03-27 조회 4,814
24-03-27 조회 5,302
24-03-22 조회 4,404
24-03-19 조회 3,950
24-03-19 조회 9,980
24-03-15 조회 4,751
24-03-15 조회 4,273
24-03-15 조회 4,169
24-03-15 조회 4,167
24-03-13 조회 4,783
24-03-05 조회 4,242
24-03-01 조회 4,263
24-02-29 조회 6,345
24-02-29 조회 5,465
24-02-28 조회 4,704
24-02-27 조회 4,796
24-02-24 조회 4,384
24-02-18 조회 5,017
24-02-17 조회 4,021
24-02-15 조회 4,400
24-02-14 조회 3,874
24-02-13 조회 7,280
24-02-05 조회 4,535
24-01-31 조회 4,745
24-01-30 조회 4,092
24-01-30 조회 4,694
24-01-27 조회 4,555
24-01-18 조회 5,127