새글

    최근 180일 이내 등록된 새글 이에요.
  • 미묘한 차이지만 현재 리빌더의 메인페이지는 로딩에 약간의 흔들림이 있습니다.메인페이지의 로딩관련 어떤 방법이 좋을까요?(1) 직접 코딩을 한다.(2) layout.render.php 파일등 최적화가 진행될 가능이 있으므로 기존 리빌더 방식을 사용한다.최신글, 위젯에 직접 redis 캐시를 적용해도 메인페이지의 로딩이 그누보드5 순정에 비해 느낌으로 최신글, 위젯 출력에 많은 차이가 나는 상황이라..현재 리빌더는 원할한 기능 확장을 위한 것인지 모르겠지만,AI에 물어보니 (1) 과도한 PHP DOM 파싱 부하 (DOMDocument / DOMXPath)코드를 보면 DOMDocument를 생성하고 HTML을 로드(loadHTML)한 뒤, DOMXPath로 노드를 찾고, 자식을 붙이고, 다시 문자열로 변환(saveHTML)하는 무거운 작업을 수행하고 있습니다.특히 rb_replace_element_inner_html 함수 내부에서는 중첩된 레이아웃 개수만큼 매번 새로운 DOMDocument 객체를 또 생성하여 파싱하고 있습니다.이로 인해 PHP 서버의 CPU 연산량이 급증하여 서버가 HTML을 완성해 브라우저로 보내는 시간(TTFB) 자체가 길어지게 됩니다. 브라우저는 페이지의 일부분(또는 기본 레이아웃 텍스트)을 먼저 받고, 서버가 무거운 DOM 조작을 끝내고 나머지 위젯 HTML을 밀어낼 때까지 대기하게 되므로 체감 딜레이가 발생합니다.(2) 내부 스크립트 동적 인클루드 (rb_capture_layout_render_map)include $capture_script를 통해 레이아웃 렌더링 파일을 매번 동적으로 불러와 실행하는 구조 역시 페이지를 구성하는 과정에서 I/O 및 파싱 오버헤드를 가중시킵니다.
    rainbow 2026-08-16 질문과 답변
  • 레이아웃을 좌우로 나누거나 하는 베이직5종 이 부가기능에서 없어졌네요그럼 메인 레이아웃 분할은 어떻게 하는지요
    y키다리 2026-08-16 질문과 답변
  • 안녕하세요https://rebuilder.co.kr/bug/1443https://rebuilder.co.kr/bug/1593https://rebuilder.co.kr/item/7271443 게시글은 동작 오류라 하지만1593 게시글은 엄연한 동작버그 인데 말이죠727 게시글은... 아예 동작을 안하구요.727게시글의 수정 약속된 기간도 지났구요나머지 1443/1593 기능은 벌써 몇개월째... ㅜㅡㅜ
    bank365 2026-08-16 질문과 답변
  • 메인 로고 크기를 어떻게 해야 하는지요. 360*80으로 했는데 로고가 너무 작아보여서 가로,세로크기를 키우고 싶은데 크게 올려도 메인에 보이는건 작아 보여서요. 로고규격이 어떻게 되는지. 그리고 더 크게 나오게 할수 있는 방법이 있는지 여쭙겠습니다..
    y키다리 2026-08-15 질문과 답변
  • 모바일 환경에서 상단 메뉴 버튼 위치를 오른쪽으로 하는건 어떤가요?왼손잡이, 오른손잡이에 따라 달라질 수 있는데오른손잡이 일 때는 메뉴 버튼이 오른쪽에 있으면 상당히 편하더라구요. 한손으로 대부분이 처리가 되는..모바일 환경에서 상단 메뉴 버튼 출력을 왼쪽 또는 오른쪽으로 사용자 입장에서 선택하는 부분이 있어도 좋을꺼 같아요.메뉴 위치 하나로 사용자 사용감이 많이 달라짐을 느끼네요.
    rainbow 2026-08-14 개선/제안
  • 작성자 및 관리자 외 열람할 수 없습니다.
    비밀글 기능으로 보호된 글입니다.
    캡토 2026-08-14 질문과 답변
  • 작성자 및 관리자 외 열람할 수 없습니다.
    비밀글 기능으로 보호된 글입니다.
    캡토 2026-08-13 질문과 답변
  • 리빌더에서 기본 제공되는 rb.latest.thumb_left 같은 최신글 스킨에서여분필드 조건에 따라 출력되게 할 수 있나요?예를 들어 여분필드 wr_1의 값이 1인 게시물에서 최신글, 랜덤, 인기글 등의 기존 조건을 처리하는...latest.skin.php 파일 내부에 sql 코드를 넣어서라도 여분필드 조건에 따라 가능하면 코드를 어떻게 작성하면 되는지 질문드립니다.
    rainbow 2026-08-12 질문과 답변
  • 작성자 및 관리자 외 열람할 수 없습니다.
    비밀글 기능으로 보호된 글입니다.
    y키다리 2026-08-12 질문과 답변
  • 조금 귀찮은 작업을 해야합니다.에디터가 출력되는 write.skin.php 파일에서 아래 코드를 에디터가 출력되는 아래쪽에 넣어시면 됩니다.하단에 보면 글자수 카운트에 따라 카운트 숫자 색을 다르게 보이게도 적용할 수 있습니다.rb에디터에 글자수 카운트 기능이 들어가면 아래 코드는 사용할 필요 없습니다. ㅎㅎ아래 이미지처럼 에디터 조절바 바로 밑에 출력이 됩니다.<!-- 1. 글자 수 표시 레이아웃 (높이 조절바 밑에 이질감 없이 녹아들도록 스타일 수정) --><div class="rb-word-counter" id="rb_word_counter_box" style="text-align: right; padding: 5px 8px; font-size: 11px; color: #777; background: #fafafa; border: 1px solid #ddd; margin-top: 4px; margin-bottom: 15px; display: none;"> 현재 본문 글자 수: <strong id="pure_char_count" style="color: #007bff; font-size: 11px; font-weight: bold;">0</strong>자 <span style="font-size: 10px; color: #aaa;">(공백 포함·태그 제외)</span></div><!-- 2. 에디터 프레임 전체 구조 파악 및 하단 배치 스크립트 --><script>document.addEventListener("DOMContentLoaded", function() { var checkCount = 0; var findRbEditorFrame = setInterval(function() { checkCount++; // 1. 에디터 내부의 글자 입력 iframe 탐색 var editorIframe = document.querySelector("iframe[id^='editor_'], .se-wrapper-inner iframe, iframe"); // 2. [핵심] 리빌더 에디터 전체를 감싸고 있는 최외곽 박스(.sun-editor)를 탐색합니다. var sunEditorMain = document.querySelector(".sun-editor, .se-container, [class*='editor']"); var counterBox = document.getElementById("rb_word_counter_box"); if (editorIframe && editorIframe.contentWindow && editorIframe.contentDocument && sunEditorMain && counterBox) { var iframeDoc = editorIframe.contentDocument; var editorBody = iframeDoc.querySelector("#editor") || iframeDoc.body; if (editorBody) { clearInterval(findRbEditorFrame); // [위치 조정 핵심] 에디터 전체 박스(.sun-editor) 바로 '바깥쪽 아랫줄'에 카운터 박스를 밀어 넣습니다. // 높이 조절바는 에디터 박스 내부에 속해 있으므로, 박스 바로 아래에 붙이면 조절바 밑에 완벽히 달라붙습니다. sunEditorMain.parentNode.insertBefore(counterBox, sunEditorMain.nextSibling); counterBox.style.display = "block"; // 화면 노출 보장 // 최초 글자 수 세팅 updateWordCount(editorBody.innerHTML); // iframe 내부 실시간 감시 기동 var observer = new MutationObserver(function(mutations) { updateWordCount(editorBody.innerHTML); }); observer.observe(editorBody, { childList: true, characterData: true, subtree: true }); } } if (checkCount > 50) clearInterval(findRbEditorFrame); }, 300); // 글자 수 정제 및 출력 함수 function updateWordCount(htmlContent) { if (!htmlContent) { document.getElementById('pure_char_count').innerText = 0; return; } var tempDiv = document.createElement("div"); tempDiv.innerHTML = htmlContent; var pureText = tempDiv.textContent || tempDiv.innerText || ""; // 연속된 공백 및 줄바꿈 제거 (서버 PHP 검증 규칙과 100% 일치) // pureText = pureText.replace(/\s+/g, ''); // 줄바꿈이나 연속된 띄어쓰기를 딱 1칸의 스페이스로 압축하고 앞뒤 공백을 자릅니다. pureText = pureText.replace(/\s+/g, ' ').trim(); var textLength = pureText.length; document.getElementById('pure_char_count').innerText = textLength; var countEl = document.getElementById('pure_char_count'); if (textLength >= 1000) { countEl.style.color = '#28a745'; } else if (textLength >= 500) { countEl.style.color = '#fd7e14'; } else { countEl.style.color = '#007bff'; } }});</script>write.skin.php 에 적용한 예제입니다. 적용할 위치 참고하세요. <!-- 내용 { --> <div class="rb_inp_wrap"> <ul> <div class="wr_content <?php echo $is_dhtml_editor ? $config['cf_editor'] : ''; ?>"> <?php if($board['bo_write_min'] || $board['bo_write_max']) { ?> <!-- 최소/최대 글자 수 사용 시 --> <p id="char_count_desc" class="help_text">이 게시판은 최소 <strong><?php echo $board['bo_write_min']; ?></strong>글자 이상, 최대 <strong><?php echo $board['bo_write_max']; ?></strong>글자 이하까지 글을 쓰실 수 있습니다.</p> <?php } ?> <?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?> <?php if($board['bo_write_min'] || $board['bo_write_max']) { ?> <?php if(!$is_dhtml_editor) { ?> <div id="char_count_wrap"><span id="char_count"></span>글자</div> <?php } ?> <?php } ?> </div> <?php if(!$is_dhtml_editor) { ?> <style> .wr_content>textarea { overflow: hidden; } </style> <script> //에디터가 아닌경우 textarea의 높이 자동설정 $(document).ready(function() { $('.wr_content > textarea').on('input', function() { this.style.height = 'auto'; /* 높이를 자동으로 설정합니다. */ this.style.height = (this.scrollHeight) + 'px'; /* 스크롤 높이를 textarea에 적용합니다. */ this.style.minHeight = '300px'; }); }); </script> <?php } ?> </ul> </div> <!-- } --><!-- 1. 글자 수 표시 레이아웃 (높이 조절바 밑에 이질감 없이 녹아들도록 스타일 수정) --><div class="rb-word-counter" id="rb_word_counter_box" style="text-align: right; padding: 5px 8px; font-size: 11px; color: #777; background: #fafafa; border: 1px solid #ddd; margin-top: 4px; margin-bottom: 15px; display: none;"> 현재 본문 글자 수: <strong id="pure_char_count" style="color: #007bff; font-size: 11px; font-weight: bold;">0</strong>자 <span style="font-size: 10px; color: #aaa;">(공백 포함·태그 제외)</span></div><!-- 2. 에디터 프레임 전체 구조 파악 및 하단 배치 스크립트 --><script>document.addEventListener("DOMContentLoaded", function() { var checkCount = 0; var findRbEditorFrame = setInterval(function() { checkCount++; // 1. 에디터 내부의 글자 입력 iframe 탐색 var editorIframe = document.querySelector("iframe[id^='editor_'], .se-wrapper-inner iframe, iframe"); // 2. [핵심] 리빌더 에디터 전체를 감싸고 있는 최외곽 박스(.sun-editor)를 탐색합니다. var sunEditorMain = document.querySelector(".sun-editor, .se-container, [class*='editor']"); var counterBox = document.getElementById("rb_word_counter_box"); if (editorIframe && editorIframe.contentWindow && editorIframe.contentDocument && sunEditorMain && counterBox) { var iframeDoc = editorIframe.contentDocument; var editorBody = iframeDoc.querySelector("#editor") || iframeDoc.body; if (editorBody) { clearInterval(findRbEditorFrame); // [위치 조정 핵심] 에디터 전체 박스(.sun-editor) 바로 '바깥쪽 아랫줄'에 카운터 박스를 밀어 넣습니다. // 높이 조절바는 에디터 박스 내부에 속해 있으므로, 박스 바로 아래에 붙이면 조절바 밑에 완벽히 달라붙습니다. sunEditorMain.parentNode.insertBefore(counterBox, sunEditorMain.nextSibling); counterBox.style.display = "block"; // 화면 노출 보장 // 최초 글자 수 세팅 updateWordCount(editorBody.innerHTML); // iframe 내부 실시간 감시 기동 var observer = new MutationObserver(function(mutations) { updateWordCount(editorBody.innerHTML); }); observer.observe(editorBody, { childList: true, characterData: true, subtree: true }); } } if (checkCount > 50) clearInterval(findRbEditorFrame); }, 300); // 글자 수 정제 및 출력 함수 function updateWordCount(htmlContent) { if (!htmlContent) { document.getElementById('pure_char_count').innerText = 0; return; } var tempDiv = document.createElement("div"); tempDiv.innerHTML = htmlContent; var pureText = tempDiv.textContent || tempDiv.innerText || ""; // 연속된 공백 및 줄바꿈 제거 (서버 PHP 검증 규칙과 100% 일치) // pureText = pureText.replace(/\s+/g, ''); // 줄바꿈이나 연속된 띄어쓰기를 딱 1칸의 스페이스로 압축하고 앞뒤 공백을 자릅니다. pureText = pureText.replace(/\s+/g, ' ').trim(); var textLength = pureText.length; document.getElementById('pure_char_count').innerText = textLength; var countEl = document.getElementById('pure_char_count'); if (textLength >= 1000) { countEl.style.color = '#28a745'; } else if (textLength >= 500) { countEl.style.color = '#fd7e14'; } else { countEl.style.color = '#007bff'; } }});</script> <!-- 비회원 { --> <?php if ($is_name) { ?> <div class="rb_inp_wrap"> <ul class="guest_inp_wrap"> <lebel class="help_text">작성자 정보를 입력해주세요. 비밀번호는 게시글 수정 시 사용됩니다.</lebel>
    rainbow 2026-08-11 팁과노하우
  • Uploaded Image
  • rb에디터에서 글 작성하면서 주소를 넣으면 해당 주소의 메타정보가 하단에 나타납니다.혹시 주소를 넣었는데 메타정보가 뜨지 않는다면먼저 아래 사항을 수정해 보세요.그누보드의 config.php 파일에서 아래 내용에 정확하게 사용하고 있는 도메인을 넣어보세요. 그러면 해결이 될 수 있습니다.define('G5_DOMAIN', '');define('G5_HTTPS_DOMAIN', '');
    rainbow 2026-08-11 팁과노하우
  • 그누보드7을 설치하고 리빌더 2.2.6.3을 덮어씌어서 설치 가능한지요.
    y키다리 2026-08-11 질문과 답변
  • memo_auto_send($title, $link_url, $recv_id, $send_id)위 함수를 이용하면 어느 곳에서든 메세지를 보내고 싶은 곳에서 적용해서 쉽게 메세지를 보낼 수 있는데요.추가 보완이 필요한 부분이 회원이 각 메세지 전송 여부 설정하는 부분이 없다는 것입니다. (1) 회원별로 알림 설정을 할 수 있는 알림 설정 테이블과 해당 필드(2) hook을 이용해 기존회원 및 신규회원 별로 알림 설정의 초기값을 입락할 수 있는 코드(3)  memo_auto_send($title, $link_url, $recv_id, $send_id) 함수에 회원별로 알림 설정을 할 수 있는 코드 추가(4) 회원 마이페이지에서 각종 알림 온/오프 설정할 수 있는 페이지만 구성을 하면 기존에 페이지마다 알림 설정한 부분 수정없이 바로 적용해서 회원이 각종 알림을 받고 싶은지 쉽게 구현을 할 수 있는데요. 리빌더 앞으로 계획에 알림 메세지 확장 부분이 계획에 있는지 궁금합니다. 
    rainbow 2026-08-10 질문과 답변
  • 작성자 및 관리자 외 열람할 수 없습니다.
    비밀글 기능으로 보호된 글입니다.
    bank365 2026-08-10 질문과 답변
  • 일반페이지에서 시스템메시지 전송할 때 아래 코드를 활용해서 하면 되나요?추가적으로 불러와야 하는 코드가 있나요?memo_auto_send($board['bo_subject'].'에 새글이 등록 되었습니다.', G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id, $config['cf_admin'], "system-msg");
    rainbow 2026-08-09 질문과 답변