Tạo thống kê diễn đàn phpBB3 (Top X stats)

February 3, 2012
Để có thể dễ dàng theo dõi, quan sát các bài viết mới, thành viên mới,... trên diễn đàn thì việc tạo bảng thống kê diễn đàn là hết sức cần thiết. Dưới đây là bài viết hướng dẫn tạo bảng thống kê cho diễn đàn phpBB3 (Topx Stats phpBB3), các bạn có thể xem trước demo tại trang chủ Diễn đàn Giải trí hoặc hình minh họa bên dưới.
Thống kê phpBB3
Bảng thống kê diễn đàn mã nguồn phpBB3

Hướng dẫn:
- Download thư mục Root về Tại đây
- Giải nén và Up lên host (File topx.php cùng hàng với index.php nhé)
- Mở Index.php
Tìm:
$user->setup('viewforum');
Chèn vào sau nó đoạn code này:
$user->setup('topX');
- Mở style/subsilver2/template/index_body.html
Tìm:
<!-- INCLUDE forumlist_body.html -->
Chèn vào trước nó đoạn code này:
<!-- INCLUDE topx.html -->
Bạn chỉ việc lưu lại, vào Bảng điều khiển của Quản trị viên ~> Tổng quát ~> Dọn sạch bộ nhớ đệm ~>Vậy là xong rồi đó!^^
Trên đây là mình hướng dẫn cài bảng thống kê cho giao diện Subsilver2. Đối với giao diện khác các bạn làm cũng tương tự nhé!
---------------------------------------
UPDATE (16/04/2012)
Để trả lời cho câu hỏi của bạn số 1 ở comments bên dưới. Mình upload folder Root_tab mà mình đang sử dụng (đã thêm các Tab ngoài Bài viết mới, chủ đề nóng,..)
Các bạn download về. Sau đó sửa 3 file:
- topx.php (Sửa lại ID forum (màu đỏ) hiển thị phù hợp từng Tab (màu xanh)),
if(substr($mode,9,1)=='1') $lp_forums_constraint = " AND f.forum_id IN (33) "; //Cau hinh forum_id nhu trong CPLatestPosts
if(substr($mode,9,1)=='2') $lp_forums_constraint = " AND f.forum_id IN (34) ";
if(substr($mode,9,1)=='3') $lp_forums_constraint = " AND f.forum_id IN (35) ";
if(substr($mode,9,1)=='4') $lp_forums_constraint = " AND f.forum_id IN (31,205,206) ";
if(substr($mode,9,1)=='5') $lp_forums_constraint = " AND f.forum_id IN (95) ";
- Root_tab\styles\giaodiencuaban\template\topx.html (Thêm/Xóa bớt Tab mình đã chèn).
<li id="topx_col_1" class=""><span style="padding: 0px 8px;"><a onclick="return false;" href="#">{L_LP_COL_1}</a></span></li>
<li id="topx_col_2" class=""><span style="padding: 0px 8px;"><a onclick="return false;" href="#">{L_LP_COL_2}</a></span></li>
<li id="topx_col_3" class=""><span style="padding: 0px 8px;"><a onclick="return false;" href="#">{L_LP_COL_3}</a></span></li> (....Tương tự.....)
- Root_tab\language\vi (en)\topX.php (Đặt tên\Chỉnh sửa theo thứ tự từng tab tương ứng)
Chúc các bạn thành công!
  1. Anonymous Anh có thể hướng dẫn thêm cách tạo thêm tab cho mox topx không anh. Mặc định nó chỉ có tab: "Bài viết mới nhất", "Được xem nhiều nhất", "Chủ đề nóng" cảm ơn anh
  2. Đỗ Phú Quý @1: Em xem phần Update (16/04/2012) nhé!
  3. Anonymous làm sao để biết ID forum là gì hả anh?
  4. Minh Tùng Cảm ơn anh nhiều
  5. Đỗ Phú Quý @3: Khi em mở 1 chuyên mục nào đó em sẽ thấy liên kết có dạng yourdomain/viewforum.php?f=35. Thì 35 chính là ID forum đó em!
    @4: Không có gì!^^
  6. khanhprince9x Cậu hướng dẫn cái MOD , chatonline và MOD đóng khung thông tin thành viên
  7. Minh Tùng Em muốn chỉnh font size của các bài viết hiện trên topx thì phải sửa ở vậy đâu anh.
  8. Anonymous @Minh Tùng: Bạn sửa file .css nhé.
  9. Anonymous Mình làm như hướng dẫn báo lỗi

    Lỗi tổng quát
    Language file ./language/en/topX.php couldn't be opened.
  10. Anonymous @9: Có lẽ bạn đang sử dụng ngôn ngữ EN? Nếu vậy bạn thử change sang VI thử.
    Bạn lưu ý: Trong folder Root_tab chỉ có lang Vi. Do đó, nếu bạn muốn nó chạy trên lang EN thì bạn đổi tên thư mục Vi~> En.
  11. Anonymous Mình làm đc rồi, nhưng nó ko full màn hình, chỉ hiển thị đc 1/2 chiều ngang web thôi, fai làm thế nào để nó full hả bác
  12. admin Mình đã cài được rồi, chạy ok. Nhưng có chút vấn đề nhỏ,mong được chỉ giáo.
    Các tiêu đề bài viết hiển thị không đúng dòng của nó, bị lệch mất chút xíu. Không biết cách chỉnh sửa thế nào?
  13. Đỗ Phú Quý @11: Bạn thử sử dụng file topx.html trong Root_tab nhé! (Thay vì dùng topx.html trong file Root.zip)
    @12: Tất cả những lỗi nhỏ về hiển thị bạn cố gắng mở file vietvbb_topx.css để cân chỉnh lại nhé (Chú ý các giá trị số!).
  14. admin Cảm ơn bạn !
    Một lỗi nữa phát sinh là:
    - khi click vào link trong phần thống kê thì bị đăng xuất
    - sau khi đăng nhập thì lại không quay lại chuyên mục cũ mà quay về trang chủ.
  15. Danh Em muốn hiển thi top 10 thay vì 15, nhưng hình list lại cố định 15. em muốn xóa cái hình list thì làm sao hả anh?
  16. Đỗ Phú Quý @Danh: Em có thể sử dụng phần mềm chỉnh sửa ảnh cắt ngắn chiều dài hình list.gif được mà. Nếu em muốn xóa thì mở file topx.html ra, sau đó tìm và xóa dòng này <td><img src="{T_THEME_PATH}/images/list.gif" /></td> (Nhớ xóa cả 2 chỗ nhé!)
    Lúc này em cũng cần phải thay đổi giá trị chiều cao bảng thống kê bằng cách đổi giá trị height:308px thành giá trị nhỏ hơn (Anh nghĩ tầm 203 là đẹp)
  17. Đỗ Phú Quý @admin (14): Tự động out khi bấm vào bài viết trong TopX thông thường là do bạn đem forum về chạy trên Localhost, hoặc domain khác (vấn đề cookie). Bạn chạy trên tên miền chính của bạn thì ko vấn đề gì!. Nếu bạn đã thực hiện đúng theo hướng dẫn này mà vẫn còn bị lỗi, xin tiếp tục gửi ý kiến để chúng ta cùng nhau xem lại.
  18. Hồ Trương Phi mình bị lỗi khi xem mục thông kê Được cám ơn nhiều trong topX, Mong Phú Quý giúp mình với. Demo : boy9x.mobi
    Thanks.

    SQL ERROR [ mysqli ]

    Unknown column 'user_thanked' in 'field list' [1054]

    SQL

    SELECT user_id, username, user_colour, user_thanked FROM phpbb_users WHERE user_type NOT IN (2, 1) AND user_thanked <> 0 AND user_id NOT IN (2) ORDER BY user_thanked DESC LIMIT 15

    BACKTRACE

    FILE: [ROOT]/includes/db/mysqli.php
    LINE: 182
    CALL: dbal->sql_error()
  19. Đỗ Phú Quý @Hồ Trương Phi: Server chứa diễn đàn bạn đang bảo trì nên mình vào ko được.
    Bạn bị lỗi vậy là đúng, bởi vì muốn hiện Top Thanks thì bạn phải hack thêm MOD Thanks for post nữa, hoặc bỏ luôn tùy chọn xem Top Thanks trên Top X Stats. Để bỏ tùy chọn xem Top Thanks trên Top X Stats bạn làm như sau:
    - Mở file topx.html. Tìm và xóa dòng <option value="topthanked">{L_TTOP_THANKED}</option>
    - Mở file topx_reporn.html. Tìm và xóa luôn đoạn code từ <!-- BEGIN topx_thanked --> đến <!-- END topx_active -->
    - Mở file topx.php: Tìm và xóa luôn đoạn code từ case 'topthanked': đến break;.
    - Lưu 3 file này lại là xong!
    Cũng khuya rồi, mình đi ngủ đây. Có gì thắc mắc bạn cứ để lại câu hỏi tại đây nha. Lúc khác mình sẽ trả lời. Chào bạn!
  20. Hồ Trương Phi Mình đã add mod Thanks for posts rồi mà :-?
  21. Anonymous @11: Set table width (50%) in ../template/topx.html. (<td width=50%...)

    @12: Edit ../template/topx_reporn.html. Change heidht from 19.2px to 20px.

    @15: The original list.gif is 300px height. Each number is 20px height. To change the number of rows listed, do:
    1. Use photoshop to edit list.gif.
    2. Edit root/topx.php : Set $col_num = ...
    3. Edit file ../template/topx.html : Change height from 308px to ... (200px if 10 rows)
  22. Đỗ Phú Quý @21: Thanks for your support! :)
  23. web20 bài viết hay cho mình copy đi về blog nhé
  24. Anonymous chào anh Quý,

    hiện tai e đã cài và sử dụng TOPX, nhưng sau đó thấy load dử liệu rất chậm và thường xuyên treo forum. nên tạm thời e gỡ ra. ( mặc dù dữ liệu e ko nhiều).

    e mong muốn khắc phục vấn đề này và Tạo TOPX chia thêm một số chuyên mục mới.

    e có thể nhờ a hỗ trợ được ko ạ ? ( e sẽ hậu tạ hay thương lượng về chi phí ). e rất cần, mong anh giúp em.
    email của e là: madaothanhcong1989@yahoo.com

    rất mong a giúp e giải quyết vấn đề này.
    thanks anh!
  25. chi bác Quý cho mình hỏi, mình đang xài thank for post 1.3.4 : https://www.phpbb.com/customise/db/mod/thanks_for_posts/
    Giờ mình muốn nhúng vào mod này thì làm sao, theo mình biết thì mặc định mod này là đi kèm với mod ajax thank post 0.2.1
  26. Vi*e^t Ngo^' Xin lỗi mình copy đoạn Code nhầm rồi. Xin đính chính lại là đây mới là đoạn Code chuẩn. Nhờ bác Admin xóa hộ comment trên với. Các bạn mở file Topx.php và sửa nhé:

    case 'topthanked':
    if (($user_thanked = $cache->get('_topx_thanked')) === false)
    {
    $user_thanked = array();

    $sql = 'SELECT COUNT(t.post_id) AS tally, u.user_id, u.username, u.user_colour
    FROM ' . THANKS_TABLE . ' t
    LEFT JOIN ' . USERS_TABLE . ' u ON t.poster_id = u.user_id
    GROUP BY t.poster_id
    ORDER BY tally DESC';
    $result = $db->sql_query_limit($sql, 5);

    while ($row = $db->sql_fetchrow($result))
    {
    $user_thanked[$row['user_id']] = array(
    'user_id' => $row['user_id'],
    'username' => $row['username'],
    'user_colour' => $row['user_colour'],
    'user_thanks' => $row['tally'],
    );
    }
    $db->sql_freeresult($result);

    $cache->put('_topx_thanked', $user_thanked, $cache_time);
    }

    foreach ($user_thanked as $row)
    {
    $shortusername=utf8_strlen($row['username'])>$char_username_limit?utf8_substr($row['username'],0,$char_username_limit-3).'...':$row['username'];
    $username_string = get_username_string('full', $row['user_id'], $shortusername, $row['user_colour']);

    $template->assign_block_vars('topx_thanked',array(
    'S_SEARCH_ACTION' => append_sid("{$phpbb_root_path}search.$phpEx", 'author_id=' . $row['user_id'] . '&sr=posts'),
    'THANKED' => $row['user_thanks'],
    'USERNAME_FULL' => $username_string
    ));
    }
  27. chi cám ơn @Vi*e^t Ngo^', mình làm đc rồi
  28. Vi*e^t Ngo^' @admin (14): Để sửa lỗi tự logout khi mở link bài viết qua TOPX bạn nên thiết lập lại thông số Cookie và máy chủ như bài viết dưới đây:
    http://chothuongmai.vn/@forum/showthread.php?p=765
    Sau đó vào ACP trong phần Tổng quan nhấn dọn sạch bộ nhớ là mọi thứ lại OK ngay. Chúc bạn thành công. Qua đây cũng cảm ơn Admin đã có bài viết hay và nhiệt tình với cả nhà nhé.
  29. Vi*e^t Ngo^' Mình cũng có câu hỏi với cả nhà là có cách nào để thêm phần những bài viết được xem nhiều nhất không? Xin chia sẻ để hoàn thiện TOPX MOD nhé. Cảm ơn.
  30. Voi Con @Vi*e^t Ngo^': Cám ơn bạn đã nhiệt tình hỗ trợ nhé!. Mình xin chia sẽ câu trả lời cho comments #29 của bạn. Cách thêm tab Bài viết xem nhiều:
    - Mở file tempalte/topx.html, tìm đoạn mã:
    <ul class="tabs">
    Trong file này sẽ có 2 đoạn mã giống trên. Mình sẽ chèn đoạn mã dưới đây vào ngay sau đoạn mã vừa tìm được (Mã thứ 2 từ trên xuống nhé):
    <li id="topx_mostview" class=""><span style="padding: 0px 8px;"><a onclick="return false;" href="#">{L_TMOST_VIEW}</a></span></li>
    Lưu file này lại là xong!
    - Để sửa lại tên tab theo ý mình thì vào file language/vi/topX.php để sửa lại nhé! (Tìm đến TMOST_VIEW để sửa!)
  31. Vi*e^t Ngo^' @Voi Con: Cảm ơn bạn đã chia sẻ. Mình đã thực hiện như bạn chỉ dẫn nhưng trong mục xem nhiều thì lại không hiện được bài viết nào. Mình đoán là không có Code cho phần TMost_View. Bạn có cách nào để khắc phục lỗi trên không. Cảm ơn bạn.
  32. Voi Con @Vi*e^t Ngo^' (31): Chắc TOPX của bạn không phải download từ trên về phải ko? Tại vì mình hướng dẫn từ bản download ở trên đã có sẵn code TMOST_VIEW rồi.
    Bạn thêm cột TMOST_VIEW này vào nhé:
    - Mở file topx.php, tìm:
    }else if(substr($mode,0,9)=='topx_col_'){
    Chèn đoạn mã dưới đây vào ngay trên đoạn mã vừa tìm được:
    }else if($mode=='topx_mostview'){
    $sql_select='MAX(t.topic_views) as topic_views, u.user_id, u.username, u.user_colour, t.topic_title, t.forum_id, t.topic_last_post_id, p.post_time, t.topic_replies, f.forum_name, t.topic_last_poster_id, t.topic_last_poster_name, t.topic_last_poster_colour,t.topic_time';
    $sql_order='topic_views DESC';
    $tiep=false;

    - Mở file template/topx_reporn.html, tìm:
    <em title="{L_POSTER}" style="float: right; padding-top: 2px;padding-right: 1px;">
    Chèn đoạn mã dưới đây vào ngay dưới đoạn mã vừa tìm được:
    <!-- IF topic_rows.MOSTVIEW_MODE --><span style="font-style:normal;">{L_VIEWS} <b>{topic_rows.VIEWS}</b> {L_TIMES}</span><!-- ENDIF -->
    - Mở file language/vi/topX.php, bạn chèn thêm hàng 'TMOST_VIEW' => 'Xem nhiều',
    - Bấm lưu lại các file. Vào ACP Xóa bộ nhớ đệm nữa là xong!
  33. Vi*e^t Ngo^' Cảm ơn bạn Voi Con nhiều nhé. Mình cũng tải TOPX ở trang này thôi. Nhưng cuối cùng nhờ bạn hướng dẫn mình đã khắc phục xong rồi.
  34. Vi*e^t Ngo^' Cảm ơn bạn Voi Con nhiều nhé. Mình cũng tải TOPX trên trang Blog này thôi. Nhưng cuối cùng thì mình cũng đã hoàn thành thêm vào phần bài viết xem nhiều. Mình cũng có một chút góp ý: Mod TopX còn một phần nữa mình thấy chưa hoàn thiện là việc chưa cho phép chọn số lượng hiển thị bài viết trong các mục. Bên VBB mình thấy phần thống kê này làm khá tốt.
  35. Luan Dang xuan Cho mình hỏi là mình muốn hiện các tab được xem nhiều, được trả lời nhiều thì mình phải chỉnh thế nào, thank bạn
  36. Luan Dang xuan mình cũng bị lỗi ko hiển thị được top thank nó cũng báo lỗi sql như bạn ở trên
  37. Voi Con @Luan Dang Xuan: Bạn xem lại các comments ở trên nhé!
  38. Anonymous Links Root_tab hình như bị die rồi bạn ơi.
  39. Voi Con @38: Bạn download lại thử nhé! :D
  40. Anonymous Root thì mình download được còn root_tab thì không. Ban nào download rồi gửi mail cho mình nha ileven113@yahoo.com,cảm ơn nhiều.
  41. tintin Rất hay.Thank Admin.Nhờ admin up lại Root_tab cho bà con tham khảo
  42. Erirk Rất hay.Thank Admin.Nhờ admin up lại Root_tab cho bà con tham khảo
  43. vo lam 2 Có cách nào bỏ Hẳn cái Mục Top Thanks Và Top user đi không Bạn?
    Mình đã thử xóa Hết Vùng TD trong TopX.html Nhưng Kết Quả box còn lại Cứ load mãi.. không Show bài viết..
  44. Trung Rất hay. Mình đã cài đặt thành công
    Bạn Quý ơi cho mình hỏi là mình muốn tăng ký tự hiển thị cho TopX này thì phải làm thế nào?
    Cụ thể:
    - Chủ đề: Hướng dẫn khắc phục giới hạn ký tự trong tiêu đề bài viết
    - Hiển thị ở TopX: Hướng dẫn khắc phục giới hạn ký tự trong tiêu đ...
    Mình cảm ơn bạn nhiều!
  45. truongcan Bạn ơi. Mình làm trên localhost nhưng mà nó ko hiện đc. khi vào Topx.php thì nó báo:
    Lỗi tổng quát
    template->_tpl_load_file(): File ./styles/prosilver/template/topx_reporn.html does not exist or is empty

    BACKTRACE

    FILE: (not given by php)
    LINE: (not given by php)
    CALL: msg_handler()

    FILE: [ROOT]/includes/functions_template.php
    LINE: 63
    CALL: trigger_error()

    FILE: [ROOT]/includes/template.php
    LINE: 437
    CALL: template_compile->_tpl_load_file()

    FILE: [ROOT]/includes/template.php
    LINE: 224
    CALL: template->_tpl_load()

    FILE: [ROOT]/includes/functions.php
    LINE: 4873
    CALL: template->display()

    FILE: [ROOT]/topx.php
    LINE: 211
    CALL: page_footer()
    Vào /styles/prosilver/template/topx_reporn.html hay topx.html thì đều 404 (dù nó vẫn trong htdocs) Cái file htm khác trong này vẫn bình thường.
  46. Phương Lê không được rồi :(
  47. Lawyer Nguyễn Ad ơi, giúp e
  48. Trọng Lý Hữu Bạn ơi cho mình hỏi là muốn cho nó gần gần lại nhau giữa 3 cái : bài mới và được xem nhiều và chủ đề nóng thì làm thế nào ạ ? Rồi bạn ơi mình muốn chỉnh font chữ giữa bài mới từ top 1-->15 cho chữ nó lớn thì làm thế nào đây bạn ?Rồi bên thành viên mới nó rộng lắm sao mà cái tên dài dài nó ko hiện ra đầy đủ hết. Rồi cho chữ Thống kê diễn đàn lớn lên thì làm sao bạn ? Rồi muốn cho chữ bởi : tác giả gần lại tiêu đề thì làm thế nào ạ. Mong bạn trả lời sớm và đầy đủ giúp mình ạ. Xin cảm ơn bạn nhiều lắm.thanks you very much!
  49. Trọng Lý Hữu Mình đã làm cách xóa các tab giống bạn nhưng trong trang chủ vẫn hiện các tab đó.bạn giúp mình với bạn ơi.
  50. Thuy Duong mình muốn ẩn thống kê khi logout khỏi diễn đàn thì làm sao ạ! các bạn giúp mình với....
  51. Thang Lam Mình cũng bị lỗi giống bạn @14

    - khi click vào link trong phần thống kê thì bị đăng xuất

    Admin hướng dẫn mình khắc phục, mình cảm ơn bạn ạ!