javascript 위치를 </body> 태그전에 위치하게하기
javascript를 </body></html>태그전에 위치시킬 필요가 있을 경우
그누보드의 add_javascript()를 수정하지 않고 add_tail_javascript()를 추가해서 </body>태그전에 javascript를 위치하게 하는 방법입니다.
/lib/common.lib.php
1. add_javascript()다음에 아래 코드 삽입
[code]
function add_tail_javascript($javascript, $order=0)
{
global $html_process;
if(trim($javascript) && method_exists($html_process, 'merge_tail_javascript') )
$html_process->merge_tail_javascript($javascript, $order);
}
[/code]
2. merge_javascript()다음에 아래 코드 삽입
[code]
function merge_tail_javascript($javascript, $order)
{
$tail_scripts = $this->tail_js;
$is_merge = true;
foreach($tail_scripts as $script) {
if($script[1] == $javascript) {
$is_merge = false;
break;
}
}
if($is_merge)
$this->tail_js[] = array($order, $javascript);
}
[/code]
3. run()... 부분
if(!empty($scripts)) {
...
}
하단에 아래코드 삽입
[code]
$tail_javascript = '';
$tail_scripts = $this->tail_js;
$php_eol = '';
unset($order);
unset($index);
if(!empty($tail_scripts)) {
foreach ($tail_scripts as $key => $row) {
$order[$key] = $row[0];
$index[$key] = $key;
$script[$key] = $row[1];
}
array_multisort($order, SORT_ASC, $index, SORT_ASC, $tail_scripts);
$tail_scripts = run_replace('html_process_script_files', $tail_scripts);
foreach($tail_scripts as $js) {
if(!trim($js[1]))
continue;
$js[1] = preg_replace('#\.js([\'\"]?>)<\/script>$#i', '.js?ver='.G5_JS_VER.'$1</script>', $js[1]);
$tail_javascript .= $php_eol.$js[1];
$php_eol = PHP_EOL;
}
}
[/code]
4. $buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript{$nl}$1", $buffer); 하단에 아래 코드 삽입
[code]
$nl = '';
if($tail_javascript)
$nl = "\n";
$buffer = preg_replace('#(</body>[^<]*</html[^>]*>)#', "$tail_javascript{$nl}$1", $buffer);
[/code]
사용방법은 add_javascript()와 같습니다.
[code]
<?php
add_tail_javascript('<script src="'.G5_JS_URL.'/jquery-1.12.4.min.js"></script>', 0);
?>
[/code]
댓글 5개
이 부분에 대하여 많이 고민했는데 멋진 결과물이네요~ ^^
이걸 hook을 이용할 수 있다면 코어 수정 없이 가장 좋은 방법일텐데 그 부분을 더 연구해봐야겠습니다.
또, PHP 코드 중간에 <script>...</script> 이런것도 절대 두지 않구요.
javascript를 뒤에 두자니,
newwin.inc.php 하단에 있는 javascript 소스들 같은 아이들이 항상 에러가 나는 상황이 발생하니,
그때마다 난감합니다.
트리플님은 어떻게 해결하셨는지 궁금해서 댓글 남겨보아요.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4427 | ||
| 2604 | 8개월 전 | 676 | ||
| 2603 | 8개월 전 | 735 | ||
| 2602 | 8개월 전 | 649 | ||
| 2601 |
|
8개월 전 | 672 | |
| 2600 |
|
8개월 전 | 580 | |
| 2599 | 8개월 전 | 809 | ||
| 2598 | 8개월 전 | 604 | ||
| 2597 |
다케미카코
|
8개월 전 | 757 | |
| 2596 | 8개월 전 | 854 | ||
| 2595 |
|
9개월 전 | 446 | |
| 2594 | 9개월 전 | 608 | ||
| 2593 |
만두먹고또먹고
|
9개월 전 | 938 | |
| 2592 | 9개월 전 | 613 | ||
| 2591 | 9개월 전 | 620 | ||
| 2590 | 9개월 전 | 690 | ||
| 2589 |
|
9개월 전 | 760 | |
| 2588 | 9개월 전 | 479 | ||
| 2587 | 9개월 전 | 796 | ||
| 2586 | 9개월 전 | 644 | ||
| 2585 | 9개월 전 | 511 | ||
| 2584 | 9개월 전 | 578 | ||
| 2583 | 9개월 전 | 499 | ||
| 2582 | 9개월 전 | 644 | ||
| 2581 | 9개월 전 | 601 | ||
| 2580 |
만두먹고또먹고
|
9개월 전 | 517 | |
| 2579 |
|
9개월 전 | 665 | |
| 2578 | 9개월 전 | 649 | ||
| 2577 | 9개월 전 | 629 | ||
| 2576 | 10개월 전 | 562 | ||
| 2575 |
이슈DEV
|
10개월 전 | 993 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기