연우, 장을 열다.



쇼핑몰 영카트5에 보니, 오류가 1가지 있었다. 바로, 쇼핑몰 리스트에서 MORE 버튼을 누르면, ajax로 로딩을 해주는 것인데 불러오지 못하는 것이었다.




오류 상황은 ajax 통신은 정상적으로 성공 코드를 불러오는데, 컨텐츠를 불러올때,  Uncaught Error: Syntax error, unrecognized expression  에러가 났었다. 



즉 부정확한 표현식때문에 문법적 에러가 나는 것이었다. 왜일까. 문법적 표현식 잘못이 무엇일까. 


CF) 본인이 이해하는 표현식 문제라면 이런 것이다. var tmp = 티스토리 쇼핑몰  (문자열은 "" 로 싸야하고, 마침을 ; <-이것으로 해야함)

혹은  var tmp = "티스토리 쇼핑몰' ; (; 로 문장을 마치더라도 "" 나 '' 이것으로 문자열을 싸야하는데, "' 이렇게는 문자열을 쌀 수가 없음)


무한한 콘솔로그를 찍어보고 문제가 어디인지 확인했다. 


이유는 


var tmp = "









<ul id="sct_wrap" class="sct sct_10">

<li class="sct_li sct_clear" style="width:25%;">

<div class="sct_img item_img"><a href="/shop/item.php?it_id=1499754339" class="sct_a item_book_gd"></a>

<img src="/data/item/1499754339/thumb-7LWc642V7Iug7ISx6rCA2_135x182.jpg" width="135" height="182" alt="최덕신성가2">

</div>

.........

" ;


이런 식이었다. 문제가 되는 지점은 바로 



var tmp = "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

<ul id="sct_wrap" class="sct sct_10">

<li class="sct_li sct_clear" style="width:25%;">

<div class="sct_img item_img"><a href="/shop/item.php?it_id=1499754339" class="sct_a item_book_gd"></a>

<img src="/data/item/1499754339/thumb-7LWc642V7Iug7ISx6rCA2_135x182.jpg" width="135" height="182" alt="최덕신성가2">

</div>

.........

" ;



여기 위 노란 지점이 문제였다. 



자 그럼 해결 방법 ㄱㄱ




원본 영카트5 스킨 (경로 :www/mobile/skin/shop/basic/list.10.skin.php)






수정 영카트5 스킨 (경로 :www/mobile/skin/shop/basic/list.10.skin.php)






보면 위에 ajax 통신을 불러오는 스킨 shop/list.10.skin.php 스킨이다. 위 이미지에서 빨간 박스를 보면 기본 영카트5에선 서로 떨어져 있다. 


저 부분을 일부로 공백 없이  붙혀준다. 그럼 정상적으로 잘 ajax 통신이 가능해지고, Uncaught Error: Syntax error, unrecognized expression  오류는 사라진다. 



오전내내 이것 보느라 고생했는데, 풀려서 밥맛이 꿀맛이었다 :) 







오늘 소개해 드리고자 하는 것은 기본적으로 그누보드 내부에 내장되어 있는 네이버 스마트 에디터 기능에 관련해서 여분 필드를 사용해서 이용할 수 있는 함수를 소개하고자 합니다.


 지금 설명드리고자 하는 것은 그누보드5에 해당합니다. 기본적으로  아래와 같이 기본적으로 wr_content 내부에 소스코드가 적혀져 있습니다. 


이 게시판은 최소 글자 이상, 최대 글자 이하까지 글을 쓰실 수 있습니다.

글자


위 코드로 인해서 DHTML 기능을 사용할 수 있게 됩니다. 


그런데, 웹 페이지 제작을 하다보면, wr_content 이외의 여분 필드에서도 에디터 기능이 필요할 때가 간혹 있습니다. 


아래와 같이 사용하시면 됩니다. 


먼저 하셔야할 것은 여분필드의 디비를 바꿔줍니다.


1.DB에서  아래와 같이 바꿉니다. 

ALTER TABLE  `g5_write_table` CHANGE  `wr_3`  `wr_3` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 


제가 테스트 했던 여분 필드는 wr_3입니다. 


2. write.skin.php 에서 아래와 같이 함수를 추가합니다. 




이 게시판은 최소 글자 이상, 최대 글자 이하까지 글을 쓰실 수 있습니다.

글자




3. 마지막으로 함수에도 아래 코드를 추가합니다. 





function fwrite_submit(f)
{
		
         

    ......중략.....

		document.getElementById("btn_submit").disabled = "disabled";

		return true;
}




이렇게 마지막에 글쓰기 폼을 써밋할때 위와 같이 사용하실 여분 필드들을 추가해주시면 됩니다. 


결과적으로는 아래 이미지 처럼 여분 필드를 사용 하실 수 있습니다. 





규격 및 사양으로 적혀있는 부분이 wr_content에 해당이 되고, 제품 소개 부분이 여분필드 wr_3으로 사용한 것입니다. 


감사합니다. 








홈페이지 제작 팁 


1. 원페이지 작성할 때에는 엄마창이 되는 원페이지가 있고, 그 안에 iframe 요소로 독립적인 영역을 불러오게 한다.

iframe영역에서는 겟으로 어떤 파라메터 값을 던져도 엄마창이 되는 원페이지 이내에서는 아무런 영향을 주지 않는다. 

괜히 엉뚱히 원페이지 내에서 겟으로 던지기 어려움으로 인해서 에이작스로 코드를 지저분히 만들지 말라! 




그누보드를 이용한 사람이라면  그누보드에서 제공하고 있는 기능 중에서 게시글 복사 하는 기능이 있습니다. 유용합니다만  첨부 파일이 있을 때에는 에러가 뜹니다. 

 

원본의 게시글에 데이타 베이스를 복사하여 새롭게 하나의 로우를 생성하는 것은 좋으나, 소스 파일에서 첨부 파일을 복사해 갈때, 기존의 명칭과 동일하게 복사를 하므로 같은 bo_table을 사용한다면 ! 에러가 뜹니다. 


예를 들자면 기존 글에 aaaa.jpg 라는 파일이 있었고, 그를 복사한다면 똑같이 데이터 베이스가 생성되며 그와 동시에 소스 파일 (파일질라에 들어가 www/data/file/bo_table) 로 보면 aaaa.jpg가 이미 같은 경로에 존재하므로, aaaa-1.jpg 로 파일을 생성해주지 않습니다.


그래서! 결론은, 파일명을 복사를 하든 이동을 하든 ! 무조건 파일첨부 되는 파일명을 바꾸어 같은 사진 및 파일이어도 서로 다른 파일로 인식하게 하는 것입니다. 




www/bbs/move_update.php 에서 

105 라인 에서 "// 코멘트가 아니라면 if(){ ~~~~ }" 내용을 아래로 수정  끝! 


// 코멘트가 아니라면
            if (!$row2['wr_is_comment'])
            {
                $save_parent = $insert_id;

                $sql3 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' order by bf_no ";
                $result3 = sql_query($sql3);
                for ($k=0; $row3 = sql_fetch_array($result3); $k++)
                {
                    if ($row3['bf_file'])
                    {

$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));

shuffle($chars_array);
$shuffle = implode('', $chars_array);
$filename = @substr($row3['bf_file'],(strlen($row3[bf_file])-10), strlen($row3[bf_file]));


// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
$tmp_bf_file = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $filename)));
                        // 원본파일을 복사하고 퍼미션을 변경
                        @copy($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$tmp_bf_file);
                        @chmod($dst_dir/$row3['bf_file'], G5_FILE_PERMISSION);
                    }

                    $sql = " insert into {$g5['board_file_table']}
                                set bo_table = '$move_bo_table',
                                     wr_id = '$insert_id',
                                     bf_no = '{$row3['bf_no']}',
                                     bf_source = '".addslashes($row3['bf_source'])."',
                                     bf_file = '{$tmp_bf_file}',
                                     bf_download = '{$row3['bf_download']}',
                                     bf_content = '".addslashes($row3['bf_content'])."',
                                     bf_filesize = '{$row3['bf_filesize']}',
                                     bf_width = '{$row3['bf_width']}',
                                     bf_height = '{$row3['bf_height']}',
                                     bf_type = '{$row3['bf_type']}',
                                     bf_datetime = '{$row3['bf_datetime']}' ";
                    sql_query($sql);

                    if ($sw == 'move' && $row3['bf_file'])
                        $save[$cnt]['bf_file'][$k] = $src_dir.'/'.$row3['bf_file'];
                }

                $count_write++;

                if ($sw == 'move' && $i == 0)
                {
                    // 스크랩 이동
                    sql_query(" update {$g5['scrap_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");

                    // 최신글 이동
                    sql_query(" update {$g5['board_new_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");

                    // 추천데이터 이동
                    sql_query(" update {$g5['board_good_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
                }
            }



bold체로 되어 있는 부분이 복사할때 서로 다른 것으로 만들어 준다. 
그 후  생성된 tmp_bf_file을 소스 파일에도 카피 해주고, 데이타 베이스도 업데이트 해준다~ 
끝!