Other All Topics Master Forums / Global Topics - Tất cả chủ đề Master Forums / Global Topics

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
16,728
Được Like
12,680
All Topics Master Forums / Global Topics - Tất cả chủ đề Master Forums / Global Topics

All Topics có thể hiển thị chủ đề được tạo ra trong diễn đàn con khác, bên trong một Subforum. Hoặc bạn có thể cài đặt bằng add-on ở đây.

All Topics - Master Forums cho Xenforo

Tập tin là Thread.php trong /library/XenForo/Model/

Dựa trên mã XF 1.1 bạn cần phải chỉnh sửa hàm prepareThreadConditions

Tìm mã:
PHP:
if (!empty($conditions['node_id']))
        {
            if (is_array($conditions['node_id']))
            {
                $sqlConditions[] = 'thread.node_id IN (' . $db->quote($conditions['node_id']) . ')';
            }
            else
          {
                $sqlConditions[] = 'thread.node_id = ' . $db->quote($conditions['node_id']);
            }
        }

Chỉnh sửa nó để giống như:
PHP:
//All Topic Edit by BOP5
        if (!empty($conditions['node_id']))
        {
            if (is_array($conditions['node_id']))
            {
                $sqlConditions[] = 'thread.node_id IN (' . $db->quote($conditions['node_id']) . ')';
            }
            else
            {
            //All topic mod manual edit by BOP5
            if ($conditions['node_id'] == 3)
              $sqlConditions[] = 'thread.node_id IN (3, 4, 5, 11, 15, 17, 18)';
            else
                $sqlConditions[] = 'thread.node_id = ' . $db->quote($conditions['node_id']);
            }
        }

Chỉnh sửa sẽ làm cho Forum ID 3 thành một "Master Forum" nó sẽ hiển thị tất cả chủ đề cho các diễn đàn với id 3, 4, 5, 11, 15, 17, và 18. Đừng quên liệt kê Master Forum chính nó trong danh sách của bạn.

Nếu bạn muốn có nhiều Master Forums bạn chỉ cần thêm lệnh elseif cho các master forums bổ sung, ví dụ:
PHP:
//All Topic Edit by BOP5
        if (!empty($conditions['node_id']))
        {
            if (is_array($conditions['node_id']))
            {
                $sqlConditions[] = 'thread.node_id IN (' . $db->quote($conditions['node_id']) . ')';
            }
            else
            {
            //All topic mod manual edit by BOP5
            if ($conditions['node_id'] == 3)
              $sqlConditions[] = 'thread.node_id IN (3, 4, 5, 11, 15, 17, 18)';
          elseif ($conditions['node_id'] == 6)
              $sqlConditions[] = 'thread.node_id IN (6, 7, 8, 9)';
            else
                $sqlConditions[] = 'thread.node_id = ' . $db->quote($conditions['node_id']);
            }
        }

Bây giờ nó sẽ làm cho Forum ID 6 cũng là "Master Forum" và hiển thị tất cả các chủ đề từ các diễn đàn 6, 7, 8, và 9.

Tuy nhiên sự lựa chọn cá nhân của tôi là luôn luôn để lại những bài viết sticky vào các diễn đàn native của nó và chỉ hiển thị những chủ đề không sticky từ "slave" (vì thiếu một thuật ngữ tốt hơn) các diễn đàn. Vì vậy, một Master Forum sẽ thấy Stickies riêng của mình và chủ đề không sticky cho các diễn đàn slave của nó.

Để làm điều này chúng ta cần thêm một chỉnh sửa, tiếp tục xuống trong cùng chức năng.

Tìm:
PHP:
if (isset($conditions['sticky']))
        {
            $sqlConditions[] = 'thread.sticky = ' . ($conditions['sticky'] ? 1 : 0);
        }

Và chỉnh sửa nó giống như này:
PHP:
if (isset($conditions['sticky']))
        {
          //All topic manual edit by BOP5
          if ($conditions['forum_id'] == 3 AND $conditions['sticky'] == 1)
            $sqlConditions[] = '(thread.sticky = 1 AND thread.node_id = 3)';
          elseif ($conditions['forum_id'] == 6 AND $conditions['sticky'] == 1)
            $sqlConditions[] = '(thread.sticky = 1 AND thread.node_id = 6)';
          else
              $sqlConditions[] = 'thread.sticky = ' . ($conditions['sticky'] ? 1 : 0);
        }

Trong ví dụ trên, chúng ta bao gồm gấp đôi Thạc sĩ đàn Master Forum từ trên xuống (Cả 3 và 6 là Master Forum)

Nếu bạn chỉ có một Master Forum xóa các khai báo "elseif ..." và các dòng mã trực tiếp bên dưới nó.

Nếu bạn có thêm Master Forum chỉ cần thêm nhiều khai báo elseif hơn.

Chúc các bạn thành công.


Nguồn: xenforo.com​
 

mdoanht

Private
Tham gia
17/04/2015
Bài viết
5
Được Like
0
Chào bác @PVS
Có tip nào hoặc addons nào tương tự chức năng này dành cho ver 2.1.x không bác?
 

Hướng dẫn sử dụng

XenForo 1 XenForo 2
Translate by PVS

Dịch vụ XenForo của VNXF

Mr. Tuấn

Mobile/Zalo: 0988 488 096

Telegram: bluekpro

Email: [email protected]

Nhà Tài Trợ

Mút Xốp Không Gian
pallet Thịnh Phát
Top Bottom