php 기반의 일반 게시판에서 새로등록된글/읽은글 표시해주는 기능 구현에 대해..

망치의 이미지

phpbb 나 drupal 을 보면 새로 등록된 글, 이미 읽은글에 대해 표시를 해줘서 게시물을 골라읽기 편하게 해주는데요.. 구체적으로 어떤식으로 구현돼있는건지 궁금합니다. 지금 0보드 같은 일반보드에 해당 기능을 넣어보려하고 있거든요.

각 게시물마다 읽었을때 DB 에 해당 게시물을 읽은것에 대한 정보를 기록해두는건지.. 아니면 다른 간단한 방법을 사용하는건지 궁금합니다.

단순히 생각하기에 게시물을 읽었을때 기록해두는것이라면 해당 사용자가 가입기간이 길수록, 또는 '모두 읽은것으로 표시' 등등을 했을때 좀 심각할듯한데.. 어떤 방법이 있는지 조언 부탁드립니다..

lacovnk의 이미지

phpbb 소스를 보시는 것이 편하겠습니다 ㅎㅎ

저도 궁금합니다. drupal 같은 경우 안 읽은 글이 안 사라지고.. phpbb같은 경우 특정 조건 때 사라집니다.

dormael의 이미지

drupal은 지금 보니까 history라는 테이블을 이용하는듯 합니다.

게시물아이디,사용자아이디,타임스탬프

이렇게 해서 row를 구성하고 각 게시물마다 그 유저에 해당하는 row를 가져와봐서 없으면 새글, 있을때 게시물의 최종수정 타임스탬프와 history의 타임스탬프를 비교해 업데이트 된건지 아닌지를 판단하는 듯 합니다.

게시물을 읽으면 history 테이블에 INSERT나 UPDATE를 할테구요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

wariua의 이미지

드루팔의 경우 테이블을 하나 만들어서 사용자가 어떤 글타래를 볼 때마다 history라는 테이블에 (사용자ID, 글타래ID, 현재시각) 레코드를 추가 내지 갱신합니다. 그리고는 글타래 목록 표시를 할 때는 그 테이블을 참고해서 새 글타래 여부, 새 댓글의 갯수 등을 알아냅니다. 단 읽지 않은 새 글이 끝도 없이 많아지는 걸 방지하기 위해 마지막 갱신 시점이 한 달 이상 지난 글타래는 새 글타래/댓글 계산에서 제외합니다.

phpbb에서 어떻게 되어 있는지는 모르겠지만, 위 방식을 살짝 응용하면 '모두 읽은 것으로 표시' 기능도 충분히 구현 가능할 겁니다. 가령 사용자가 '모두 읽은 것으로 표시'를 선택할 때마다 (사용자ID, 0, 현재시각) 레코드를 추가 내지 갱신하고, 새 글타래를 찾을 때 글타래ID가 0인 레코드를 우선적으로 고려하고, ...

Drupal 소스에서...

& 이런, 늦었군요 :)
----
$PWD `date`

$PWD `date`

망치의 이미지


별 수 없이 테이블을 따로 만들어서 각 글에 대한 정보를 기록해둬야하는군요..

일반 보드에 적용하려니.. 음.. 나름대로 대공사(?)가 될것같습니다. ㅡ.,ㅡ;;
어떻게 하면 작업량을 최소화 하면서 효과적으로 적용될지 고민해봐야겠습니다. 흐으..

조언 감사드립니다.

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.