웹마스터 팁
랜덤으로 (최근) 게시물 추출하기..
2007.11.02 10:49
사이트 규모가 작거나 꼭 필요한 경우가 아니라면 사용하지 않으시는게 좋을 것 같습니다.
랜덤으로 (최근) 게시물 추출하는 것이 의외로 간단하네요..
simulz님에게 절대적인 힌트를 얻었고요..
query에서 random 옵션을 써본적이 없었는데..
rand()함수를 알게되고 query에 rand를 적용하는 것도 simulz님 덕에 알게 되었습니다.
랜덤 최근 게시물 위젯을 만들려면..
두 곳만 수정하시면 됩니다.
먼저..
newest_document 폴더에서
newest_document.class.php 파일에서.
function proc($args) { 이 함수 안에..
if(!in_array($order_target, array('list_order','update_order','rand()'))) $order_target = 'list_order';
위 줄을 찾아 빨간색 'rand()'만 삽입하세요..
그리고
conf 폴더의 info.xml 파일에서
<extra_vars> 중에
<var id="order_target"> 정렬 대상을 설정하는 부분이 있지요.
여기에 </var> 앞에
<options>
<name xml:lang="ko">랜덤 추출</name>
<value>rand()</value>
</options>
이것만 추가 하시면 됩니다.
이렇게 하면 랜덤으로 게시물을 추출할 수 있더군요..
최근게시물 위젯 모듈을 그대로 사용하고 위 부분만 수정하시면
최근게시물 위젯의 모든 스킨들에 다시 설정하거나 수정할 필요없이 자동으로 동일하게 적용할 수가 있겠네요..
다른 위젯들도 모듈에서 위와 같이 수정하면 적용할 수 있을 듯 합니다.
단.. XE 업데이트시 위젯도 업뎃되면 수정된 부분을 확인하시고 사용해야된다는 것 주의하시고...
댓글 13
-
주하니
2007.11.02 12:13
-
핑크플로이드
2007.11.02 14:31
ORDER BY RAND() 하시면...
랜덤하게 몇건을 가져오는게 아니라...
전체를 가져와서 랜덤하게 추출합니다...
더군다나 index도 타지 않구요...
몇만건 까지는 괜찮아도...
몇십 몇백만건이면...
서버부하(CPU + Memory)가 상당할것입니다...
난수를 만들어 난수의 조건을 만족하는 글을 뽑아오는 방법을 써야하는데...
예전에 PHPSCHOOL QnA에 올렸었는데...
헉...
머리아프다...^^;;; -
Simulz
2007.11.05 00:01
난수로 추출하는 것도 좋은 방법이겠군요... document_srl을 난수 발생시켜서 추출하되, 없는 문서는 다시 추출하여 원하는 갯수만큼 출력을 하는 거죠;;; 말은 쉬운데 막상 적용하려니 ㅎㅎ -
지허
2007.11.05 09:03
document_srl 번호가 일련번호로 붙는다면 해볼만 한데
document_srl을 어떻게 부여하는지 모르겠더군요..
또 번호가 직관적이지 않기 때문에.. 일반화 시키려면 document_srl이 아닌 다른 데서 해결책을 찾아야 하는데...
랜덤으로 보여줄 게시판이 한정적이라고 한다면(자유게시판 내용 같은 것을 랜덤 보여줄리는 없을 테니까요..)
그 게시판에만 일련번호를 부여하는 확장변수를 만들어 주면
랜덤으로 몇개의 번호를 찾고 그 번호에 해당하는 레코드만 찾아주는 방법도 가능하리라 생각됩니다.
레코드를 삭제해서 빈 번호가 생길 때를 대비해서
해당 게시판의 일련번호용 확장변수만 다시 일련번호로 정리하기 위한
스크립트만 php파일로 하나 만들어 두면 될 것 같습니다.
어떤 방법이건 document 테이블에서 직접 order by rand로 랜덤 추출하지 않는 이상
좀 복잡한 코딩이 필요할 것 같네요..
별도의 스크립트 파일을 만들려면
제로보드4처럼 보드들이 별도의 table로 존재한다면 조금 수월하겠지만
document테이블에 모든 내용이 들어가니.. 흠. where 절에서 module_srl 값 조건을 주기만 하면 될 듯..
update 명령으로 일련번호용 확장변수만 일련번호로 들어가도록 루프를 돌리면 될 텐데..
이렇게 준비하고...
이것을 랜덤으로 추출하기 위한 위젯은 어쨌든 새로 만들어야 할 것 같군요..
흠냐... 당분간 xe 손본 시간이 없을 것 같은데... 쩝..... -
제임쓰
2007.11.05 11:47
특정 조건에 만족하는 추천한 게시물 중에서 뽑아오는 것은 어떻게 처리하면 좋을까요?
-
지허
2007.11.05 12:38
특정 조건이란게 무엇을 말씀하는 것인지..
게시글을 여러 조건에 따라 뽑아오는 위젯들은 위젯 프로그램에 많이 올라와 있는데요..
특히 simulz님이 많이 올려 놓으셨는데,
대충 사이트에서 필요할 것 같은 경우의 수만큼
위젯화 되어 있는 것 같은데요..
그 외에 특정한 조건이란 것이 무엇일까요? -
김경해
2007.11.12 00:42
최근 게시물을 뽑아오는 루틴을 쓰면 어떻게 될 수 있지 않을까요?
예를 들어 최근 게시물을 10개 로딩해서 그 중 3개를 랜덤으로 출력한다면 부하도 적을 듯 하고, 코딩도 어떻게 되지 않을까 싶은데;;; 저는 코딩을 거의 할 줄 몰라서 직접 할 수 없는게 한이네요...ㅠㅠ -
주하니
2007.11.27 07:21
0.2.6 웹진형 최근 게시물에서 랜덤 쓸려면 어디를 수정해야 할까요? -
지허
2007.11.28 09:38
제가 작성한 랜덤 팁은
newest_document 수준에서 적용하는 것이기 때문에..
팁처럼 newest_document.class.php와 info.xml을 수정했다면
newest_document 아래의
skin에 있는 것은 동일하게 적용될 것으로 예상됩니다.
즉 skin은 별도로 수정할 필요가 없는 것이지요..
팁처럼 수정했다면
페이지에 위젯을 추가하고
skin을 선택하고 정렬대상만 랜덤을 선택하면 됩니다.
저는 특수한 경우만 랜덤을 사용할 것이기 때문에..
newest_document을 복사해서
newest_document_rand 위젯을 새로 만들어서 위의 팁을 적용하고
스킨은 별도로 만들어서 사용했습니다.
범용성은 없는 것이라 공개하진 않았습니다.
랜덤으로 추출할 게시판도 확장변수를 사용한 특수한 용도로 사용하는 것입니다.
이런 경우가 아니라면 별도의 위젯 프로그램을 만드는 과정없이 그대로 사용해도 좋을 것입니다.
일반적인 경우이고 newest_document의 범용성 있는 스킨에 적용할 것이라면
위의 팁만 적용하고 그대로 사용할 수 있습니다.
위젯 프로그램 수준에서 파일을 수정하는 팁이지만
기존 스킨의 실행에 영향을 미치는 수정이 아니기 때문에
랜덤 추출을 사용할 스킨에 미치는 영향 이외에 다른 영향은 없습니다.
단, 랜덤 추출이 서버에 큰 위험을 줄 수 있다고 하니 주의해서 사용하기 바랍니다. -
주하니
2007.11.28 17:30
답변 감사합니다. ^^ -
주하니
2007.11.28 17:43
근데 웹진형 위젯 webzine.class.php 에서는
function proc($args) { 이 함수 안에..
if(!in_array($order_target, array('list_order','update_order','rand()'))) $order_target = 'list_order';
위 줄을 찾아 빨간색 'rand()'만 삽입하세요..
이 부분 자체가 없습니다. 그래서 그런지 잘 안되네요. -
서강정
2008.03.13 15:09
이미지 최근글도 랜덤으로 출력하려면 어덯게 하는가요.
고수님들 올려주시면 안될까요 ? -
배워서남준다
2010.12.18 18:49
어느 분이 최근 이미지 랜덤으로 출력하고 싶어하셔서 한번 적용을 해봤는데 XE에서도 잘 되네요.
스킨 폴더내의 content.html 파일안에
<!--@foreach($widget_info->content_items as $key => $item)-->
위에
{@shuffle($widget_info->content_items)}
을 추가하시면 됩니다.
전체 게시글에서 랜덤으로 가져오는 것이 아니라,
최근 게시글중에서 랜덤으로 출력하는 것입니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
애드온에서 모바일 환경 구분 코드 | misol | 2010.12.24 |
회원가입후 1주일이 지나지 않은 계정에 한하여 탈퇴 제한하기 [1] | Arp | 2010.12.23 |
BGM 등을 배경을 투명하게 iframe 으로 넣는 팁 [3] | 푸른커튼 | 2008.02.05 |
로그인 & 파일 첨부 문제 [3] | peter99 | 2009.06.29 |
지오피아 게임 제로보드 XE 연동 [5] | 다른사람 | 2009.06.30 |
XE에서 설문조사시 비회원 참여하는 방법 있을까요? [1] | hellosamyoo | 2010.10.12 |
게시판에서 비회원 메일 주소 확인하기 | 똑디 | 2009.10.12 |
[생초보팁] 회원가입시 홈페이지 블로그주소 않나타내기 ㅋ [4] | 에혀라X | 2010.12.05 |
카페24 외부페이지로 트래픽 확인하기 [1] | teryboy | 2010.10.09 |
확장변수값 이미지로 대체하여 나타내기 (실시간 응대목적) [12] | sm3 | 2009.06.10 |
게시판 글 검색시 검색 대상 선택을 자유롭게 고치기 [6] | June Oh | 2009.07.15 |
랜덤으로 (최근) 게시물 추출하기.. [13] | 지허 | 2007.11.02 |
쉬운설치가 제대로 동작하지 않는 분들 [4] | 하늘03 | 2010.01.22 |
텍스타일 (Textyle) 에서 첨부파일 용량 제한 늘리는 방법. [1] | sejin7940 | 2010.11.27 |
분류가 있는 게시판에서 전체분류모드로 게시물 클릭시 딜레이 현상 [2] | Sx3 | 2007.08.30 |
ftp나 mysql 암호 변경시 일어나는 ''db 접속시 에러' XE | 샷타이거 | 2010.12.08 |
플래시로 만들어진 글자 타이핑보고 만들었어요. | web | 2010.12.09 |
[생초보팁] 페이지(page) 줄간격과 부분 웹폰트 | 에혀라X | 2010.12.11 |
[생초보팁] 레이아웃 수정시 HTML 넣는 칸 넓히기 -_- | 에혀라X | 2010.12.12 |
[생초보팁] 웹진최근게시물 요약글 링크걸기 [1] | 에혀라X | 2010.12.12 |
좋네요 .. 오늘 명언이나 좋은글 등을 활용하기에 딱 좋습니다. 추천 한방 하고 갑니다. ^^