필요에의해 갤러리형태의 게시판의 리스트를 무한으로 구현해야 했다.

잘 찾아보니 http://webpaper.kr/show/98&page=1&stx=%EC%8A%A4%ED%81%AC%EB%A1%A4 에서 

개발 후 방법을 공유하신게 있어서 커스터마이징 후 기록을 위해 남김

 

 

게시판 스킨/list.skin.php 하단에 아래 코드를 넣어준다. 

물론 게시판 형태에 따라 일부 수정은 해야한다. 

게시판에 리스트 영역의 다음페이지를 불러와 코드를 붙이는 방식.

<script>
var total_page = "<?=$total_page?>";
var now_page = "<?=$page?>";
var roll_page = now_page;


$(window).scroll(function() {
    var chkBtm = parseInt($(document).height()) - parseInt($(window).height());

    if (chkBtm == $(window).scrollTop()) {
        roll_page++;
        if (roll_page <= total_page) {
            callContent(roll_page, 'append');
        }
    } else if ($(window).scrollTop() == 0) {
        now_page--;
        if (now_page > 0) {
            callContent(now_page, 'prepend');
        }
    }
});

function callContent(a, b) {

    var url = "<?=G5_BBS_URL?>/board.php?bo_table=<?=$bo_table?>&page=" + a;
    var tbody = "";
    var thtml = "";
    $.ajax({
        type: "POST",
        url: url,
        dataType: "html",
        success: function(html) {
            tbody = html.split('<article>');
            thtml = tbody[1].split('</article>');
            setTimeout(function() {
                if (b == 'append') {
                    // $(".tbl_head01").find('tbody').append(thtml[0]);
                    $("#fboardlist").append(thtml[0]);

                } 
            }, 1000);

        },
        error: function(xhr, status, error) {
            alert(error);
        }
    });
}
</script>

아래는 최하단 스크롤 부분. 

$(window).scroll(function(){
     
    // 최하단일 경우를 체크하기 위해 최하단 위치값을 지정
    // 화면 문서전체의 길이에서, 현재 창 높이를 뺀 것이 최하단 값
    var chkBtm = parseInt($(document).height()) - parseInt($(window).height());
     
    if(chkBtm == $(window).scrollTop()){        
        // 최하단으로 도달했을 경우
        console.log('바닥입니다!');
    }else if($(window).scrollTop() == 0){
        // 최상단으로 도달했을 경우
        console.log('꼭대기입니다!');
    }
});

오토셋뿐만 아니라 기존에 사용하고 있는 웹호스팅에서 다른 웹호스팅 회사로 이전할 때도 모두 동일합니다.

phpMyAdmin 기준으로 작성되었습니다.

 

대부분의 웹호스팅 회사들은 phpMyAmin을 기본으로 지원하고 있습니다.

호스팅 관리 페이지 등에서 잘 찾아보면 접속 링크가 있을 겁니다.

 

1. PHPMYADMIN 접속(설치방법, Centos7 기준)

# yum -y install phpmyadmin

명령어 한줄로 설치 끝. 다만 외부에서 접속할 수 있도록 하기위해서 설정이 필요

최초엔 127.0.0.1 에서(로컬)만 접속이 된다. 

# nano /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>

AddDefaultCharset UTF-8


<IfModule mod_authz_core.c>

# Apache 2.4

<RequireAny>

Require ip 127.0.0.1

Require ip All granted

Require ip ::1

</RequireAny>

</IfModule>

위 부분에서 <RequireAny>  ~ </RequireAny> 사이에 

Require all granted 를 추가하고, httpd 재시작

# service httpd restart

백업 및 복사 방법

 

 

1. 오토셋이나 기존에 사용하던 웹호스팅에서 DB 백업하기

 


 

왼쪽 데이터베이스 목록에서 백업할 DB를 선택 후 상단 메뉴 중 내보내기 클릭

 

 


 

 

퀵 (전체를 즉시 백업합니다)

커스텀 (원하는 테이블만 선택해서 백업합니다)

 

이번 내용은 홈페이지 전체 서버 이전이 목적이기 때문에 퀵을 선택 후 백업.

커스텀은 특정 게시판이나 특정 테이블만 옮기고 싶을 때 선택해서 백업하면 됩니다. 

실행 버튼 누르면 gnuboard5.sql 파일이 자동으로 컴퓨터에 생성됩니다.
 

 

참고사항 (phpmyadmin 버전이 다른 경우)

 


 

phpmyadmin 버전이 예전 버전이라면 퀵이나 커스텀 선택 창이 아니라 위 화면처럼 뜰 겁니다.

조금 차이만 있을 뿐 과정은 동일합니다.

 

 

2. 신규 웹호스팅에 접속해서 백업해 놓은 DB 복구하기

 

로컬 서버나 기존 웹호스팅 계정에서 백업한 DB 파일을 신규 웹호스팅 서버에 복구하는 방법입니다.

국내에서 많이들 사용하는 cafe24 웹호스팅으로 진행해보겠습니다. 

보안 이슈로 인해서 최근 카페24 호스팅 관리 메뉴에서 phpmyadmin이 사라졌네요. 직접 설치하는 방법입니다.

 

 

DB 복구하기

 


 

phpmyadmin 접속 후 왼쪽 데이터베이스에서 본인 아이디로 생성된 DB를 선택하고 상단 메뉴 중 import 클릭

파일 선택 창에서 autoset 이나 기존 서버에서 백업했던 DB 파일을 선택 후 실행하면 DB는 복구 완료됩니다.

 

 

 

여기서 주의 사항이 있는데 (Maximum size: 21,504 KB)​ 이 부분입니다.

허용 용량 제한이 있어서 db 용량이 너무 크면 phpmyadmin​에서는 에러가 뜰 겁니다.

분할해서 하는 방법도 있지만 이럴 땐 쉘창에서 복구 명령어로 직접 하는 게 낫습니다.

이 내용은 별도로 강좌 글을 올려놓겠습니다 

 

 

3. 홈페이지 전체 파일 및 DATA 파일 이전하기

 

작업한 파일과 폴더 전체를 FTP로 신규 웹호스팅 서버에 그대로 업로드한 후 DATA 폴더 퍼미션을 707로 변경합니다.

기존 웹호스팅에서 다른 웹호스팅으로 이전할 때도 ftp로 기존 웹호스팅에 접속 후 모든 파일을 받아서
신규 웹호스팅으로 그대로 업로드하면 됩니다.

* 일부 파일은 다운 실패가 뜨는 경우가 있는데 대부분 session 파일일 겁니다. 세션 파일은 신경 안 써도 됩니다.

* 이전 후에도 이미지가 안 보인다거나 일부 문제가 생기면 DATA 폴더 하위 폴더까지 퍼미션을 707로 변경해보세요.

 

 

4. DB 설정 파일 수정하기

 

신규 웹호스팅에 옮겼던 data/dbconfig.php 파일 내용을 반드시 수정해야 합니다.

 

define('G5_MYSQL_HOST', 'localhost');

define('G5_MYSQL_USER', 'root');

define('G5_MYSQL_PASSWORD', 'autoset');

define('G5_MYSQL_DB', 'gnuboard5');

define('G5_MYSQL_SET_MODE', false);​ 

 

기존 DB 정보를 신규 웹호스팅 서버 DB 정보로 수정해서 다시 올리면 서버 이전이 완료됩니다.

일부 웹호스팅 회사 중 HOST 가 localhost 가 아닌 곳도 있으니 확인해서 수정하세요.

 

출처 : http://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=23

 

1. iframe 주소 확인

<iframe src="https://tv.naver.com/embed/11099859?autoPlay=true" frameborder="no" scrolling="no" marginwidth="0" marginheight="0" width="936" height="526" allow="autoplay" allowfullscreen=""></iframe>

=>'tv.naver.com' 부분 화긴

 

2. ./plugin/htmlpurifier/safeiframe.txt

파일을 열고

tv.naver.com/

을 한줄 추가해준다. (끝에 슬래쉬 / 까지 포함)

 

/skin/member/basic/register_form.skin.php 내 약 332번째 줄
        if(f.mb_password.value != f.mb_password_re.value)
        {
            alert("입력하신 비밀번호와 비밀번호확인이 일치하지 않습니다");
            return false;
        }

        if(f.mb_password.value.length<8)
        {
            alert("비밀번호는 문자, 숫자, 특수문자의 조합으로 8 이상으로 입력해주세요.");
            return false;
        }

        if(!f.mb_password.value.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
        {
            alert("비밀번호는 문자, 숫자, 특수문자의 조합으로 8 이상으로 입력해주세요.");
            return false;
        }

 

$(".idcheck").click(function(){

var msg = reg_mb_id_check();

 

if(msg == "" || msg == null){

// 중복된 아이디가 존재하지 않는다.

if(!confirm("가입할 수 있는 아이디입니다.\n현재 아이디를 사용하시겠습니까?")){

document.getElementById("reg_mb_id").value = "";

}

}

else

{

// 중복된 아이디가 존재한다.

alert(msg);

}

});

 

 

 

$x = 100000000

x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

=>  100,000,000

1. 투명배경 업로드

2. 기본위젯 설정

<table height="600"><tbody><tr><td /></tr></tbody></table>

3. image map 설정(메뉴 세개인 기준)

<img src="#이미지경로" border="0" usemap="#00" /> 
<map name="00" id="00">
 <area shape="rect" coords="10,465,155,515" href="#링크" target="_blank" /> 
</map>
<img src="#이미지경로" border="0" usemap="#00" /> 
<map name="00" id="00">
 <area shape="rect" coords="10,465,155,515" href="#링크" target="_blank" /> 
</map>
<img src="#이미지경로" border="0" usemap="#00" /> 
<map name="00" id="00">
 <area shape="rect" coords="10,465,155,515" href="#링크" target="_blank" /> 
</map>

4. 레이아웃 설정

5. 타이틀 제거

6

Table2excel 을 사용해 게시판 리스트를 엑셀로 다운로드 출력가능하다

1. 다운로드 버튼을 구현하고, 클릭 시 함수를 걸어준다.

2. 테이블 id를 설정

<input type="button" class="btn" value="excel 다운" onclick="ReportToExcelConverter()">
	
    <table id="table2excel">
    	<tr>
          <th>번호</th>
          <th>제목</th>
          <th>이름</th>
          <th>날짜</th>
        </tr>
        <tr>
       	  <td>1</td>
       	  <td>제목입니다</td>
       	  <td>작성자</td>
       	  <td>2019.10.22</td>
		</tr>
   </table>

3. Script 삽입

<script src="//cdn.rawgit.com/rainabba/jquery-table2excel/1.1.0/dist/jquery.table2excel.min.js"></script>
<script> 
  function ReportToExcelConverter() { 
  $("#table2excel").table2excel({ 
  exclude: ".noExl", 
  name: "Excel Document Name", 
  filename: "report" +'.xls', 
  fileext: ".xls", 
  exclude_img: true, 
  exclude_links: true, 
  exclude_inputs: true }); 
  };
 </script>

 

완료

[그누위즈] 에서 개발하신 텔레그램으로 푸쉬알람 받기 기능이다. 유용하게 사용중이다. 

[출처 : http://gnuwiz.com/bbs/board.php?bo_table=plugin_tip&wr_id=12&sca=%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8+%ED%8C%81

 

텔레그램의 채팅 bot을 이용해서 그누보드의 회원가입, 게시글 작성, 쪽지 전송 등

사이트에서 발생하는 여러가지를 알림으로 받아 볼 수 있도록 하는 플러그인 입니다.

 

상단에 첨부한 파일을 그누보드가 설치된 원하는 디렉토리에 넣어주시면 됩니다.

저의 경우에는 www/bbs 디렉토리에 해당 telegram_class.php 파일을 넣어두도록 하겠습니다.

 

우선 텔레그램의 계정이 있어야하며 텔레그램이 데스크탑에 설치되어 있어야합니다.

위의 과정은 모두 되어있다는 가정하에 진행하겠습니다.

 

1.https://telegram.me/botfather 링크에 접속합니다.

위와 같이 링크로 접속시 "Telegram Desktop 열기" 버튼을 클릭합니다.

그러면 BotFather 이라는 봇의 아버지와의 채팅이 시작됩니다.

이제 하단의 "START" 버튼을 클릭하고 채팅을 시작합니다.

위와 같이 채팅이 시작되면

채팅창에 아래와 같이 /newbot 을 입력하고 엔터를 누릅니다.

이어서 아래와 같이 자신이 생성할 봇의 이름을 입력합니다.

저는 이름을 "gnuwiz" 라고 생성 하겠습니다.

 



다음으로 본인이 생성한 "봇 이름_bot" 이라고 채팅창에 입력후 엔터를 누릅니다.

저 같은 경우에는 봇 이름이 "gnuwiz" 이기 때문에 "gnuwiz_bot" 이라고 입력했습니다.

정상적으로 봇이 생성되었다면 아래와 같이 고유 token 값이 출력됩니다.

해당 부분은 바로 사용하기 때문에 가지고 있어야합니다.

그리고 채팅창에서 뒤로가기 버튼을 클릭하고

친구목록중 친구를 찾는 부분에 방금 생성한 봇 아이디를 입력합니다.


 

그리고 방금 찾은 봇 아이디와 채팅을 시작합니다.

채팅창에는 아래의 양식으로 입력후 엔터를 누릅니다.

https://api.telegram.org/bot발급받은토큰값/getUpdates

위와 같이 해당 링크를 입력후 링크를 클릭합니다.

그러면 브라우저에 해당 링크가 열리면서 json 형태로 결과값을 리턴 받는데
우리가 필요한 값은 해당 부분중 id 부분의 고유 값이 필요합니다.


 

여기 까지 잘 따라왔다면 이제 첨부파일 telegram_class.php을 열어서 해당 부분에 각 값을 넣어주면 됩니다.

$chat_id 변수에는 방금 받은 id 값을 넣고

$bot_token 변수에는 이전에 받는 token 값을 넣습니다.

<?php

/* telegram_class.php */

 

class telegram_msg {

    

    private $chat_id = '427588447'; // id 값

    private $bot_token = '541841220:AAGrqV3dJpLX98utPtn2XFzEgZ_lHXaVIYo'; // token 값

 

    public function __construct() {

 

    }

...................

?>

 


위와 같이 값을 넣었다면 이제 텔레그램 푸쉬를 사용 할 준비가 되었습니다.

마지막으로 그누보드의 특정 실행 구간에 해당 클래스를 실행 할 소스를 추가해야합니다.

 

저는 예시로 회원가입, 게시글 작성, 쪽지 전송 부분에서만 작동하도록 만들어 놓았습니다.

 

1.회원가입시 알림

www/bbs/register_form_update.php 파일을 열어서 사용자 코드 실행 부분 아래에

해당 소스를 붙혀넣습니다.

<?php

/* www/bbs/register_form_update.php */

 

// 사용자 코드 실행

@include_once ($member_skin_path.'/register_form_update.tail.skin.php');

 

// 텔레그램 PUSH 코드 실행(gnuwiz)

@include_once(G5_BBS_PATH.'/telegram_class.php');

$telegram_msg = new telegram_msg();

$res = $telegram_msg->send();

?>

 


2.게시글 작성시 알림

www/bbs/write_update.php 파일을 열어서 사용자 코드 실행 부분 아래에

해당 소스를 붙혀넣습니다.

<?php

/* www/bbs/write_update.php */

 

// 사용자 코드 실행

@include_once($board_skin_path.'/write_update.skin.php');

@include_once($board_skin_path.'/write_update.tail.skin.php');

 

// 텔레그램 PUSH 코드 실행(gnuwiz)

@include_once(G5_BBS_PATH.'/telegram_class.php');

$telegram_msg = new telegram_msg();

$res = $telegram_msg->send();

?>

 

 

3.쪽지 전송시 알림

www/bbs/memo_form_update.php 파일을 열어서 사용자 코드 실행 부분 아래에

해당 소스를 붙혀넣습니다.

<?php

/* www./bbs/memo_form_update.php */

 

// 실시간 쪽지 알림 기능

$sql = " update {$g5['member_table']} set mb_memo_call = '{$member['mb_id']}' where mb_id = '$recv_mb_id' ";

sql_query($sql);

 

// 텔레그램 PUSH 코드 실행(gnuwiz)

@include_once(G5_BBS_PATH.'/telegram_class.php');

$telegram_msg = new telegram_msg();

$res = $telegram_msg->send();

 

?>

 

 

정상적으로 해당 부분에 소스를 추가했다면

아래와 같이 특정 동작시 알림을 받아 볼 수 있습니다.

최신글 스킨에서 

 

이런식으로 활용하기

 

 

<? php 
$profile_file = get_file($bo_table, $list[0]['wr_id']);
$header_file = get_file($bo_table, $list[1]['wr_id']);
?>
<? php $profile_src = $profile_file[0]['path'].'/'.$profile_file[0]['file']; ?>
<? php $header_src = $header_file[0]['path'].'/'.$header_file[0]['file']; ?>

 

 

관리자 확인

 

<?php if ($member[mb_level] >= 8 | $is_admin == 'super') { ?>

사용

 

 

로그인확인

if (!$is_memebr) {

로그아웃중

} else {

로그인중

}

 

if(defined('_INDEX_')) { // index에서만 실행

    include G5_BBS_PATH.'/newwin.inc.php'; // 팝업레이어

}

 

 

//전부띄우기 

<?php

    include G5_BBS_PATH.'/newwin.inc.php'; // 팝업레이어

?>

 

+ Recent posts