그누보드 코드블럭 Prism.JS적용(HOOK) > 그누보드5 팁자료실

그누보드5 팁자료실

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

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

본문

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

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

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("/[/", "&lsqb;", $str);
    $str = str_replace("/{/", "&lcub;", $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;
}

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

추천
4

댓글 1개

전체 2,409 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT