[code][/code] 즉 highlight에 관한 질문..

[code][/code] 즉 highlight에 관한 질문..

QA

[code][/code] 즉 highlight에 관한 질문..

본문

sir 처럼 [ code]와[ /code]로 감싼 부분을 하이라이팅처리 해주고 싶어서

여기서 검색해서 길호넷에서 만드신걸 가져다 적용해봤는데요..

 

https://sir.kr/so_54forum/130

이것입니다.

 

근데 보이는건 

3732069401_1677913369.5584.png

 

이런식으로 보입니다.

 

전 그냥 검은색 바탕에 기본 글씨체로 예쁘게 나오길 바랬는데 흠..

어떻게 해야 될까요?
나랴이 빌더 쓰는데 혹시 나리야 빌더에서 간섭이 일어난걸까요?

이 질문에 댓글 쓰기 :

답변 7

<?php echo get_view_thumbnail($view['content']); ?>을


<?php $str = preg_replace("/(<br>|<br\/>|<p>)/i", "\n", get_view_thumbnail($view['content']));echo preg_replace(['#\[code\]|\[code-(.+?)\]#', '#\[/code\]#'], ['<pre class="language-php"><code class="language-$1">', '</code></pre>'], $str); ?>

이렇게 넣고 사용하세요.

사용할 때에는

'['code']' ~ '['/code']' 또는 '['code-html']' ~ '['/code']'이런식으로 하시면 됩니다.('은 제외)

답변 감사합니다..
알려주신대로 적용해봤는데 여전히 글씨 색이 안나오고
언어감지도 none네요 ㅠㅠ
[ code]만 인식되고 [ code-c++]은 인식이 안되고 ㅠㅠ

http://minyho.iptime.org/download/prism.js
http://minyho.iptime.org/download/prism.css
/js/에 넣고

view.skin.php
<?php
~
?>
아래에 추가 하세요.


<link rel="stylesheet" href="<?php echo G5_JS_URL; ?>/prism.css">
<script src="<?php echo G5_JS_URL; ?>/prism.js"></script>

html 부분만 따로 떼어내 샘플파일을 만들고 동일한 코드를 적용해보면

기본적으로 적용이 안되는지

솔루션에 이식했을때 적용이 안되는지 확인할수 있습니다.

 

 

https://sir.kr/g5_plugin/9655

 

좀 고쳐야 할 부분이 발견되긴 했는데... 그럭저럭...

33282748_1678003914.69.png

prism 사용하세요. 좋아요.

지금 사용중인 테마가 나리야인데 prism을 넣어두시긴 했더라구요
그래서 테마를 받아서 적용도 해봤는데 올려주신 스샷처럼 글씨 색이 입혀지진 않네요..
어떻게 해야 언어를 감지하는지 모르겠어요 ㅠㅠ

http://minyho.iptime.org/download/prism.js
http://minyho.iptime.org/download/prism.css
이것 다운해서 사용해 보세요. prism사이트에서 선택해서 받은 것입니다
그리고 view의 bo_v_con에 preg_replace(['#\[code\]|\[code-(.+?)\]#', '#\[/code\]#'], ['<pre class="language-php"><code class="language-$1">', '</code></pre>'], get_view_thumbnail($view['content'])) 적용 하세요.

view.skin.php에 bo_v_con 이라는 php 변수가 아니고,
        <!-- 본문 내용 시작 { -->
        <div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
        <?php //echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
        <!-- } 본문 내용 끝 -->
이 부분을 말합니다.

thumb-1954383429_1678162970.4963_730x404.png

이제야 발견된 사실인데..
보드 스킨에 view.skin.php에는 echo get_view_thumbnail(na_view($view)); 이게 있는데요
na_view 함수를 보니 na_content 함수를 부르는게 있고 여기보니


//Show Contents
function na_content($str) {
	$str = na_url_auto_link($str);
	$str = preg_replace_callback("/{(첨부|attach)\:([^}]*)}/is", "na_callback_attach", $str); // Attach
	$str = preg_replace_callback("/{(지도|map)\:([^}]*)}/is", "na_callback_map", $str); // Map
	$str = preg_replace_callback("/{(동영상|video)\:([^}]*)}/is", "na_callback_video", $str); // Video
	$str = preg_replace_callback("/{(아이콘|icon)\:([^}]*)}/is", "na_callback_icon", $str); // FA Icon
	$str = preg_replace_callback("/{(이모티콘|emo)\:([^}]*)}/is", "na_callback_emo", $str); // Emoticon 
	$str = preg_replace_callback("/\[soundcloud([^\]]*)\]/is", "na_callback_soundcloud", $str); // SoundCloud
	$str = preg_replace_callback("/(\[code\]|\[code=(.*)\])(.*)\[\/code\]/iUs", "na_syntaxhighlighter", $str); // SyntaxHighlighter

	return $str;
}


이렇게 되어있는데 여기서 가르키는 na_syntaxhighlighter 함수는 이렇네요

//Syntaxhighlighter
function na_syntaxhighlighter($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("&nbsp;", " ", $str);
	$str = str_replace("/</", "&lt;", $str);
	$str = str_replace("/[/", "&lsqb;", $str);
	$str = str_replace("/{/", "&lcub;", $str);

	if(!$str) 
		return;

	$brush = isset($m[2]) ? strtolower(trim($m[2])) : 'html';
	//$brush_arr = array('css', 'js', 'jscript', 'javascript', 'php', 'xml', 'xhtml', 'xslt', 'html');
	//$brush = ($brush && in_array($brush, $brush_arr)) ? $brush : 'html';

	na_script('code');

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


여기서 또 na_script를 부르는게 있는데 그곳의 'code' 부분을 보니 이렇네요

	} else if($id == 'code') {
		if(!defined('NA_CODE')) {
			define('NA_CODE', true);
			/*
			add_stylesheet('<link rel="stylesheet" href="'.NA_URL.'/app/syntaxhighlighter/styles/shCoreDefault.css">', -2);
			$sh = '<script src="'.NA_URL.'/app/syntaxhighlighter/scripts/shCore.js"></script>'.PHP_EOL;
			$sh .= '<script src="'.NA_URL.'/app/syntaxhighlighter/scripts/shBrushJScript.js"></script>'.PHP_EOL;
			$sh .= '<script src="'.NA_URL.'/app/syntaxhighlighter/scripts/shBrushPhp.js"></script>'.PHP_EOL;
			$sh .= '<script src="'.NA_URL.'/app/syntaxhighlighter/scripts/shBrushCss.js"></script>'.PHP_EOL;
			$sh .= '<script src="'.NA_URL.'/app/syntaxhighlighter/scripts/shBrushXml.js"></script>'.PHP_EOL;
			$sh .= '<script>var is_SyntaxHighlighter = true; SyntaxHighlighter.all(); </script>';
			add_javascript($sh, 99);
			*/
			add_stylesheet('<link rel="stylesheet" href="'.NA_URL.'/app/prism/prism.css">', -2);
			$sh = '<script src="'.NA_URL.'/app/prism/prism.js"></script>'.PHP_EOL;
			$sh .= '<script>var is_SyntaxHighlighter = true;</script>';
			add_javascript($sh, 0);
		}
	} else if($id == 'bgvideo') {



prism을 쓰긴 하는거 같은데 왜 어째서 언어 감지를 못하고 Plain text로 인식되는지 모르겠습니다 ㅜㅜ

skin/board/basic에서 일단 해 보세요.

thumb-1954383429_1678235858.3986_730x450.png

thumb-1954383429_1678235873.2995_730x529.png

주신 소스로 강제적으로 view.skin.php에서 작업하고 보면 일단 php로 언어인식이 되버리긴 해도 되거든요..
근데 같은 prism인데도 나리야꺼 그대로 위 올려드린 소스로 쓰면 글짜 색상이 표현이 안되고 텍스트로 인식하더라구요 그래서 재문의 한거긴 합니다 ㅠㅠ

알아 내긴 했어요..
나리야 테마 라이브러리에 처리 하는 부분에 기본값이 안들어가서 그렇더라구요..
그래서 기본값으로 php로 정해쥬니 나오긴 하는데
c언어인데 php로 나오네요 ㅋㅋ 그래서 [code=c++] 하니 c로 나오긴 하는데 글씨 색은 또 안나오더라구요 그래서 그냥 나두긴 했는데 ㅠㅠ

NB-Basic/view.skin.php
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
<link rel="stylesheet" href="<?php echo G5_JS_URL; ?>/prism.css">
<script src="<?php echo G5_JS_URL; ?>/prism.js"></script>

<!--?php echo get_view_thumbnail(na_view($view)); // 글내용 출력 ?-->
<?php echo preg_replace(['#\[code\]|\[code-(.+?)\]#', '#\[/code\]#'], ['<pre class="language-php"><code class="language-$1">', '</code></pre>'], na_view($view)); ?>

thumb-1954383429_1678405633.5924_730x362.png

정말 정성스런 답변 감사합니다 ^^
많은 도움 되었어요
아무래도 언어감지는 [code=c]이런식으로 해서 하는거 같은데
C언어라고 인식하면서도 코드 색상이 입혀지지 않는 건 나리야에서 물어보든지
prism을 다시 구성해보든지 해야 될거 같아요..
다시 한번 감사합니다 ^^

색상과 언어는([code-html])아래 코드를 넣어야 됩니다.
<?php echo preg_replace(['#\[code\]|\[code-(.+?)\]#', '#\[/code\]#'], ['<pre class="language-php"><code class="language-$1">', '</code></pre>'], na_view($view)); ?>

답변을 작성하시기 전에 로그인 해주세요.
전체 123,726 | RSS
QA 내용 검색

회원로그인

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