alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
1. Xenforo là gì? Tại sao nên xây dựng forum bằng Xenforo



Xenforo là gì? Tại sao nên xây dựng forum bằng Xenforo chứ không phải các mã nguồn khác? Điểm thu hút của mã nguồn Xenforo là gì? Các bước để xây dựng một diễn đàn bằng Xenforo như thế nào? Tại sao mã nguồn này lại được sử dụng phổ biến đến vậy? Bài viết này, chúng tôi sẽ mang đến bạn những câu trả lời chi tiết nhất.

Xenforo là gì?
Xenforo là mã nguồn mở được xây dựng bởi các lập trình viên – những người tách ra từ nhóm vBullentin (vBB). Đây là mã nguồn mở được sử dụng để xây dựng nên các diễn đàn rất phổ biến trong những năm gần đây. Xenforo được xây dựng trên nền tảng web 2.0 và XHTML tối ưu tốt nhất vì thế nó được rất nhiều khách hàng chọn để thiết kế website diễn đàn bởi đặc điểm dễ sử dụng và tiện dụng của mình.

Nếu bạn là một người yêu thích lập trình website hay đang có ý định xây dựng cho mình 1 forum thì đây là một mã nguồn tốt giúp bạn tạo nên một diễn đàn. Trong số các mã nguồn được sử dụng để xây dựng forum như phpBB, myBB, vBulletin(vBB) … thì Xenforo được mọi người lựa chọn nhiều hơn cả trong những năm gần đây bởi khả năng tối ưu SEO tốt, dễ sử dụng, load nhanh và quan trọng là chi phí rẻ hơn nhiều so với các mã nguồn khác.

Tại sao nên xây dựng forum bằng Xenforo chứ không phải các mã nguồn khác?
Rất nhiều các diễn đàn lớn đã và đang dần chuyển từ vBB sang Xenforo không phải bởi trào lưu mà bởi tính thông dụng, quản lý đơn giản và tùy biến nhanh chóng của nó. Đặc biệt, nếu các bạn không thành thạo về code web cũng có thể tự mình tạo ra 1 diễn đàn bằng mã nguồn Xenforo với rất nhiều các hướng dẫn được chia sẻ trên mạng. Mọi thứ chỉ đơn giản như việc bạn cài một phần mềm lên máy tính, đọc hướng dẫn là có thể sử dụng được rồi.

Phiên bản của mã nguồn Xenforo đầu tiên 1.0 Beta đã được nhóm phát triển đưa ra vào khoảng giữa năm 2010 với giá bán ban đầu là 140$. Nếu bạn mua vào tuần đầu tiên, giá chỉ còn 100$ trong khi vBB lúc đó có giá 199$.


Tại sao bạn nên sử dụng mã nguồn Xenforo để xây dựng forum.
Điểm thu hút của mã nguồn Xenforo là gì?
– Tính dễ sử dụng, dù bạn là người không rành về code web thì vẫn có thể xây dựng lên 1 diễn đàn với Xenforo

– Code tối ưu cực nhẹ, rất hiếm khi xảy ra lỗi web

– Tốc độ load nhanh

– Tối ưu SEO tốt nhất

– Khả năng tùy biến cao

Các bước để xây dựng một diễn đàn bằng Xenforo
Khi thực hiện một công việc nhiều lần, tự động bạn sẽ biết cách làm sao để sắp xếp thứ tự công việc một cách hợp lý để mang lại hiệu quả cao nhất, nếu quy trình đó không ổn sẽ dẫn đến một việc phải làm đi làm lại nhiều lần, giẫm chân nhau.
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Hướng dẫn customize diễn đàn xenforo:

1. Tăng chiều rộng diễn đàn:

Appearance - Styles - Tên style - Style Property Groups
Chọn Page Width Controller
Tăng max-width lên 100%

2. Chỉnh sửa font chữ mặc định:
Vào ACP - Styles - Style Properties - Message Elements - Message Text
Chọn: "Times New Roman", Arial,Georgia,Times, serif
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Bỏ popup member card khi click vào profile thành viên:
Admin CP - Appearance - Style Properties - Overlays and Tooltips - Enable Overlays

Tiếp đó vào js/xenforo/xenforo.js
Bỏ đoạn bôi đỏ:
XenForo.register("a.OverlayTrigger, input.OverlayTrigger, button.OverlayTrigger, label.OverlayTrigger, a.username, a.avatar","XenForo: OverlayTrigger");
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Cách chèn unfollow, noindex vào thẻ meta tag một số forum trong diễn đàn xenforo:
Tìm đoạn code dưới đây:
Code:
<xen:container var="$head.canonical">
   <link rel="canonical" href="{xen:link 'canonical:threads', $thread, 'page={$page}'}" /></xen:container>
Thay bằng đoạn code:
Code:
<xen:if is="in_array({$thread.node_id}, array(80,81,82))">
<xen:container var="$head.robots">
   <meta name="robots" content="noindex" /></xen:container>
<xen:else />
<xen:container var="$head.canonical">
   <link rel="canonical" href="{xen:link 'canonical:threads', $thread, 'page={$page}'}" /></xen:container>
</xen:if>
Trong đó 80,81,82... là ID của forum muốn đặt noindex, nofollow
 

16nhannt

Helpee
Bài viết
2
Points
1
Merge (gộp) bài viết từ 2 forum khác nhau:
Search
Batch Update Threads
Chọn forum gốc
Chọn các bài viết muốn chuyển đi dựa vào các tiêu chí như số bài trả lời, số lượt xem --> Search
Chọn forum muốn chuyển đến
Chọn update threads
 

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Xenforo 2
1. Thay đổi kích thước logo

Vào extra.less thêm đoạn css sau:
Code:
.p-header-logo.p-header-logo--image img {
    max-width: 100% !important;
    max-height: 100px !important;
}
2. Bỏ latest profile post ở sidebar:
Admin Control Panel -> Appearance -> Widgets

3. Đổi màu Node/Forum list:
ACP - Appearance - Style properties - Node/Forum list

4. Đổi font awesome node:
Thêm đoạn css sau vào extra.less
Code:
.node-icon .unread i:before {
    content: "\f032" !important;
    color: #CC3300;
}
.node-icon i {
    -webkit-transform: rotate(45deg) !important;
    -moz-transform: rotate(45deg) !important;
    -ms-transform: rotate(45deg) !important;
    -o-transform: rotate(45deg) !important;
    transform: rotate(45deg) !important;
}
Trong đó rotate(45deg) là để xoay font 45 độ

5. Hiện subforum ở main page:
Admin Control Panel - Appearance - Style properties - Node/Forum list - Sub-forums display style - Listed below node

6. Lựa chọn mặc định theo dõi bài viết của mình khi tạo thread mới:
ACP - Appearance - Templates
Chọn helper_thread_options
Tìm dòng code:
Code:
<xf:checkboxrow label="{$label}" rowtype="{$rowType}">
            <xf:option name="watch_thread" value="1" slected="$watchChecked"
                label="{{ phrase('watch_this_thread...') }}">
Thay bằng
Code:
<xf:checkboxrow label="{$label}" rowtype="{$rowType}">
            <xf:option name="watch_thread" value="1" checked="checked"
                label="{{ phrase('watch_this_thread...') }}">
7. Đặt link vào prefix để lọc theo chủ đề:
ACP - Appearance - Templates
Chọn thread_view
Thay đoạn code
Code:
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>
Bằng đoạn code
Code:
<xf:h1><a href="{{ link('threads', $thread) }}">{{ prefix('thread', $thread) }}{$thread.title}</a></xf:h1>
hoặc
Code:
<xf:h1><a href="{{ link('forums', $forum, {'prefix_id': $thread.prefix_id}) }}">{{ prefix('thread', $thread) }}</a><a href="{{ link('threads', $thread) }}">{$thread.title}</a></xf:h1>
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Với xenforo 2, bạn sẽ cần phát huy hết thế mạnh của Custom thread fields và Custom user fields. Đây là một trong những công cụ cải tạo việc lọc và tìm kiếm bài viết, thành viên rất tốt cho xenforo.
Nếu bạn muốn thêm một thread field có tên là "giá tiền", ở đó người dùng nhập vào giá bán (chỉ nhập số), khi đó giá tiền hiện ra sẽ là: 123000000 (123 triệu). Tuy nhiên, xenforo mặc định đó chỉ là 1 số bình thường, không có dấu phân cách phần triệu - nghìn - đơn vị do đó bạn sẽ rất khó xác định đó là số bao nhiêu. Để có thể chuyển 123000000 thành 123,000,000 VNĐ thì bạn cần làm như sau:
Bước 1: Bạn vào ACP - Appearance - Templates chọn custom_fields_macros và tìm dòng:
Code:
<xf:macro name="custom_field_value"
                            arg-definition="{$fieldDefinition}"
                            arg-value="{$set.{$fieldDefinition.field_id}}" />
Bước 2: Bạn thay toàn bộ đoạn code trên bằng đoạn code dưới đây:
Code:
<xf:if is="$fieldId == 'gia_tien'">
                        {$fieldDefinition.getFormattedValue($set.{$fieldDefinition.field_id})|currency}
                    <xf:else />
                        <xf:macro name="custom_field_value"
                            arg-definition="{$fieldDefinition}"
                            arg-value="{$set.{$fieldDefinition.field_id}}" />
                    </xf:if>
Chú ý: Bạn cần đổi field ID mà bạn muốn định dạng số, trong trường hợp này mình đặt field ID là gia_tien
Muốn bỏ 2 chữ số không đằng sau dấu phẩy thì thay {$fieldDefinition.getFormattedValue($set.{$fieldDefinition.field_id})|currency} bằng {$fieldDefinition.getFormattedValue($set.{$fieldDefinition.field_id})|currency('VND')}

Để thêm VNĐ vào sau giá tiền, bạn vào ACP - Language, chọn ngôn ngữ mặc định (của mình là English (US)), tìm đến currency format chọn Others. Tại đây bạn thêm vào {value} VNĐ - Save lại là xong.

Để định dạng số nhiều field, bạn thêm đoạn code này vào trên thẻ <xf:else /> và đổi tên ID cho phù hợp:
Code:
<xf:elseif is="$fieldId == 'field_id_muon_dinh_dang'" />
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Đưa giá tiền ra ngoài thread list view
Sau khi định dạng xong giá tiền như post bên trên, giá tiền sẽ xuất hiện khi người dùng click vào link để đọc nội dung thread. Tuy nhiên, nếu muốn giá tiền hiện ra bên ngoài thread list, để người dùng có thể xem qua giá tiền và quyết định có nên click vào link đó hay không thì bạn làm như sau:
Vào ACP - Appreance - Templates chọn thread_list_macro tìm dòng:
Code:
<xf:if is="!$forum">
                            <li><a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a></li>
                        </xf:if>
Bạn chèn thêm đoạn code sau đây vào bên dưới:
Code:
<xf:if is="$thread.node_id == 220 OR $thread.node_id == 207 OR $thread.node_id == 206 OR $thread.node_id == 183 OR $thread.node_id == 196">
                            <xf:if is="{$thread.custom_fields.gia_tien}">
                                <div class="price_items">
                                    {$thread.custom_fields.getFormattedValue("gia_tien")|currency}
                                </div>
                            </xf:if>
                        </xf:if>
Trong đó $thread.node_id là những id của mục mà bạn muốn giá tiền hiện ra khi duyệt forum list. Ở đây mình chọn node ID: 220, 207, 206, 183 và 196.
$thread.custom_fields.gia_tien là id của field giá tiền
 
Last edited:

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Tạo thumbnail ảnh đính kèm khi share trên facebook, twitter:
Mở template thread_view, tìm đoạn code:
Code:
<xf:macro template="metadata_macros" name="metadata"
        arg-description="{$fpSnippet}"
        arg-shareUrl="{{ link('canonical:threads', $thread) }}"
        arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />
thay bằng đoạn code:
Code:
<xf:if is="{$thread.FirstPost.Attachments.first().thumbnail_url}">
    <xf:macro template="metadata_macros" name="metadata"
        arg-description="{$fpSnippet}"
        arg-shareUrl="{{ link('canonical:threads', $thread) }}"
        arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}"
        arg-imageUrl="{{ link('canonical:attachments', $thread.FirstPost.Attachments.first()) }}" />
<xf:else/>
    <xf:macro template="metadata_macros" name="metadata"
        arg-description="{$fpSnippet}"
        arg-shareUrl="{{ link('canonical:threads', $thread) }}"
        arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />
</xf:if>
 

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Loại bỏ prefix ở tiêu đề thread

Vào ACP - Appearance - Templates chọn thread_view, thay đoạn code
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
bằng đoạn code:
<xf:title page="{$page}">{$thread.title}</xf:title>
 

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Nếu copy đường link dán vào facebook nó không load ảnh đính kèm đầu tiên trong bài viết mà hiện logo của diễn đàn thì vào ACP - Appearance - Style and Templates - Style properties chọn Meta Logo URL và đưa vào đây đường link hình ảnh có kích thước nhỏ. Khi đó facebook sẽ ưu tiên load ảnh có kích thước lớn hơn là ảnh đầu tiên trong bài viết.
 

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Cách khắc phục lỗi 503 Service Unavailable

Mã nguồn khi chạy chiếm rất nhiều tài nguyên database dễn đến lỗi “Có lỗi xảy ra từ máy chủ. Xin thử lại sau.” dưới đây là hướng dẫn fix lỗi khi diễn đàn bạn gặp phải lỗi này.

Đầu tiên bạn truy cập vào hosting và vào phpmyadmin database của diễn đàn.

database xenforo


Hình ảnh database cấu trúc của Xenforo

Tiếp theo bạn tìm kiếm table “xf_session”. check vào bảng đó và kéo xuống bên dưới.



Để sửa lỗi “Có lỗi xảy ra từ máy chủ” bạn chọn Repair table của bảng xf_session.

hướng dẫn sửa lỗi máy chủ xenforo


Sau khi bấm chọn Repair table hệ thống sẽ báo bạn “Your SQL query has been executed successfully.”. Lúc này bạn truy cập lại forum xem website đã hoạt động chưa nhé.

Có lỗi xảy ra từ máy chủ. Xin thử lại sau. Là một trong số lỗi hay gặp nhất của xenforo. Chính vì vậy khi bạn gặp phải trườn hợp lỗi mã nguồn này hãy sử bằng cách mình hướng dẫn. Hãy lưu lại liên kết này khi bạn cần nhé.
 

alexandra

Người bảo vệ
Staff member
Bài viết
923
Points
18
Muốn chuyển URL /forums/ thành /diendan/ vào Setup - Navigation - Route filters
 

Người giúp online

No members online now.

Thống kê

Chủ đề
10,802
Bài viết
17,018
Người giúp
5,271
Thành viên mới nhất
jessicatran
Top