Thứ Sáu, 29 tháng 3, 2013

Các câu hỏi thường gặp khi sử dụng XenForo

http://vietxf.org/threads/cac-cau-hoi-thuong-gap-khi-su-dung-xenforo.3427/#post-26069
Chủ đề này sẽ trả lời một số các câu hỏi thường gặp của các bạn khi sử dụng XenForo xây dựng diễn đàn. Mục đích của chủ đề là giảm thiểu các topic trùng lặp về câu hỏi và bookmark một số chủ đề quan trọng trên VietXF.ORG

Câu hỏi sẽ được phân chia theo từng nhóm mục nội dung hỏi để người dùng dễ tìm kiếm và áp dụng

  1. Đặc điểm và chức năng của XenForo
  2. Cài đặt / Nhập dữ liệu (import) / Nâng cấp
  3. Cấu hình và Amincp
  4. Giao diện và thiết kế
  5. Chỉnh sửa và Đồng bộ template
  6. Hàm điều kiện
  7. Phát triển XenForo
  8. Xử lý sự cố
Một số các chia sẻ khác và bookmark chủ đề quan trọng

Chủ đề sẽ liên tục được update bởi BQT VietXF.ORG. Mọi thông tin trong chủ đề này đã được chia sẻ kiểm tra nên độ chính xác là tương đối cao, các bạn hãy liên hệ với BQT nếu có thêm các ý kiến đóng góp

Chân thành cám ơn các thành viên đã đóng góp xây dựng nội dung

Đặc điểm và chức năng

Tôi có thể sử dụng HTML trong bài post được không?
XenForo chỉ cho phép sử dụng BB Code trong bài viết, HTML không hỗ trợ.

Làm thế nào để ngừng hiển thị BBCode trong bài viết?
Sử dụng thẻ plain để chấm dứt BBcode trong 1 đoạn: Tôi không muốn [b]in đậm[/b] ở đây

Tôi có thể sử dụng BB Code ở Page không?
Trong Page chỉ sử dụng HTML, BB Code không hỗ trợ

Tại sao các ảnh trên Forum của tôi không hiển thị dạng Lightbox?
Lightbox chỉ hỗ trợ popup từ file ảnh đính kèm dạng thumbnail. Lightbox sẽ load toàn bộ các ảnh đính kèm đang hiển thị tại trang đó

Tại sao avatar động của tôi không làm việc?
Ảnh đại diện Avatar được thu nhỏ lại sau khi upload lên và chức năng resize ảnh sẽ không hỗ trợ ảnh động. Tuy nhiên nó sẽ “động” ở member card và trong profiles. Để hiển thị ảnh động trên toàn forum thì server của bạn phải hỗ trợ PECL imagick extension, sau đó bạn vào lựa chọn tại đây ACP -> Options -> Attachments: Default Image Processor.

RSS Feed chính của forum nằm ở đâu vậy?
RSS feed nằm tại đường dẫn /forums/-/index.rss (tùy thuộc vào thư mục cài của bạn có tên là gì)

Tại sao tôi không thể search được từ với 3 ký tự hoặc ít hơn?
Chức năng MySQL Full Text đã giới hạn từ tìm kiếm quá ngắn. Chú ý là từ phiên bản XenForo 1.1 trở lên có hỗ trợ độ dài của từ tìm kiếm: ACP -> Options -> Search Options: Search Minimum Word Length

Tại sao tôi không thể tìm chính xác từ muốn tìm?
Chức năng tìm kiếm có hạn chế từ để tránh việc tìm các từ quá chung chung và không tồn tại trong forum.

Khi nào và bằng cách nào số lượng bài viết và số thành viên được Update?
Số lượng bài viết và thành viên được update tự động thông qua Cron (Rebuild Board Totals Counter) 10 phút 1 lần.

Tại sao thành viên bị ban lại vẫn hiển thị như thành viên thường?
Bạn hãy chắc chắn rằng mình đã tạo ra nhóm thành viên cấm: ACP -> Options -> User Discouragement and Discipline: Add User Group on Ban.
Chú ý rằng thành viên cấm sẽ không xuất hiện trong danh sách và trong kết quả tìm kiếm nhưng trang profile thì vẫn có thể truy cập

Làm sao để di chuyển bài post của tôi từ chủ đề này sao chủ đề khác?
Có 2 bước làm: phải chuyển bài post thành 1 topic mới và tiếp theo gộp topic đó với topic cần di chuyển, bài post sẽ hiển thị theo đúng trình tự thời gian
Cài đặt / Import / Nâng cấp

Tôi nên cài XenForo trực tiếp vào thư mục gốc hay vào thư mục con nào đó?
Đây là vấn đề cá nhân của bạn, nó tùy thuộc vào mục đích xây dựng website. Nếu bạn có kế hoạch cài đặt thêm các mã nguồn khác như CMS hay 1 Home page thì nên sử dụng thư mục con như /forum/. Chú ý rằng bạn không thể tạo ra 2 file có cùng tên ở cùng thư mục. Ví dụ: index.php

Sự khác nhau giữa bản nâng cấp và bản full?
Bản nâng cấp sẽ không có các file sau
.htaccess
library/config.php
data
internal_data

Tất cả các phiên bản phải được cài theo thứ tự hay tôi có thể bỏ qua 1 số version?
Bạn có thể nâng cấp từ phiên bản hiện tại lên bất kỳ phiên bản nào tiếp theo.

Làm sao để di chuyển phần cài đặt đến 1 thư mục khác?
Bạn cần thay đổi thông tin URL trước tại ACP -> Options -> Basic Board Information và di chuyển file đến thư mục mới. Bạn có thể reset lại server để cập nhật thay đổi nhanh hơn.

Tôi có thể di chuyển mục cài đặt sang tên miền khác hoặc host khác không?
Backup database và tất cả các files lại. Sao chép lên server mới sau đó thay đổi thông tin file library/config.php cho đúng thông tin data mới, restore data mới và đừng quên CHMOD 2 mục datainternal_data về 0777. Cuối cùng bạn update lại Board URL ở ACP -> Options -> Basic Board Information.

Chú ý: nếu bạn di chuyển sang host mới thì phải kiểm tra xem host đó đã bật mod_rewrite chưa vì có thể ảnh hưởng đến Friendly URLs của bạn

Những thông tin và dữ liệu nào được import vào XenForo?
Forum, bài viết, user, attachments, và avatars được import, Styles, template code, HTML, và CSS không được import mà phải xử lý bằng tay.

Làm sao để import các nhóm thành viên mặc định và tự tạo từ vBulletin vào XenForo?
Tất cả nhóm thành viên và trạng thái mặc định sẽ được import, bất kỳ nhóm nào khác ID từ 1-7 sẽ trở thành nhóm tự tạo sau khi import

“Outdated templates” là gì và tại sao tôi cần phải revert chúng? Tôi không thể sử dụng các template cũ?
Nếu template được thay đổi phiên bản (ví dụ: từ 1.0 sang 1.1) và bạn đã sửa vào template đó thì chúng sẽ bị coi là cũ. Đây là chức năng cập nhật mặc định của XenForo khi có template update và hệ thống không tự ghi đè lên bản template cũ. . Bạn có thể tắt chức năng này bằng cách sửa trong core của XenForo nhưng tôi khuyến cáo là không nên can thiệp vì có thể chức báo update này giúp bạn tìm ra lỗi bung của template và hỗ trợ revert lại bản cũ

Làm sao để so sánh sự thay đổi code khi tôi dung chức năng revert template?
Trước khi bạn revert thì nên sử dụng trình hỗ trợ soạn thảo như Notepad++ hoặc Dreamweaver để so sánh 2 bản
Cấu hình và quản trị AminCP

Làm sao để loại bỏ index.php ra khỏi URL?
Bạn phải bật chức năng Friendly URLs tại ACP -> Options -> Search Engine Optimisation (SEO): Use Full Friendly URLs

Tôi có thể thay đổi cấu trúc URL không?
Chức năng tắt bật friendly URLs và sự riêng biệt của URL forum nên bạn không thể thay đổi cấu trúc được

Những cái gì được lưu lại trong hệ thống file?
Chỉ có Avatar và File đính kèm mới lưu trong hệ thống file, tất cả các thứ khác bao gồm cả template đều được lưu trong Database

Làm thế nào để thay thế Logo XenForo bằng Logo của tôi?
Upload ảnh logo của bạn lên server và thay đổi đường dẫn tại ACP -> Styles -> Style Properties -> Header and Navigation -> Settings: Header Logo Image Path

Làm sao để thay thế XenForo Facebook Like logo bằng logo của tôi?
Upload logo của bạn lên server và thay thế đường dẫn ACP -> Styles -> Style Properties -> Header and Navigation -> Settings: Facebook Open Graph Logo. Vì chế độ lưu bản ghi cache nên có thể mất 1 vài ngày logo của bạn mới được update trên server của Facebook

Làm sao để tôi tích hợp Facebook vào diễn đàn?
Bạn có thể tham khảo tại đây: Hướng dẫn tích hợp Facebook vào XenForo

Làm cách nào lựa chọn style mặc định cho từng diễn đàn?
Bạn có thể tạo trong ACP ở từng node và check khu vực Override user style choice, lựa chọn style bạn muốn hiển thị ở diễn đàn đó

Làm thế nào để tạo 1 trang riêng biệt?
Bạn có thể tham khảo tại:……..

Làm sao để thay đổi kích thước Avatar?
Kích thước mặc định của avatar có 3 dạng (s, m, l) bạn chỉ có thể thay đổi trong nhân XenForo còn trong template thì không thể.

Làm sao để phân quyền trong XenForo?
Bạn có thể tham khảo tại: Tìm hiểu về phân quyền (permissions) trong Xenforo

Làm sao để hạn chế các từ cấm?
Bạn thêm các từ cấm tại đây: ACP->Option->Censoring

Sự khác nhau giữa Super Administrator và Administrator?
Administator không thể tạo và chỉnh sửa Super Administrator được, Super Administrator luôn có quyền cao nhất tại ACP

Làm sao để tạo thêm các Super Administrator khác?
Bạn có thể thêm ID user tại library/config.php bằng cách thêm vào sau dấu phẩy
$config['superAdmins'] = '1, 2, 3';
Chú ý: User đó phải là 1 Administrator

Làm sao để tất các các truy cập từ domain có www. và không có www. đều về site của tôi?
Bạn có thể chỉnh file .htacess theo cách:
Thay thế:
<IfModule mod_rewrite.c>
        RewriteEngine On
 
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^(data|js|styles|install) - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
</IfModule>
Bằng
<IfModule mod_rewrite.c>
        
RewriteEngine On
        RewriteCond 
%{HTTP_HOST} ^example.com$ [NC]
        
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
        
RewriteCond %{REQUEST_FILENAME} -[OR]
        
RewriteCond %{REQUEST_FILENAME} -[OR]
        
RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule 
^.*$ - [NC,L]
        
RewriteRule ^(data|js|styles|install) - [NC,L]
        
RewriteRule ^.*$ index.php [NC,L]
</
IfModule>
Làm sao để tôi có thể bảo mật được file admin.php?
Bạn có thểm tham khảo thêm tại đây: Bảo vệ AdminCP & thư mục Install bằng .htaccess

Tôi có thể kiểm tra thông tin PHP của server ở đâu?
Bạn kiểm tra thông tin tại http://www.youdomain.com/forum/admin.php?tools/phpinfo

Làm thế nào để thay đổi đường dẫn đến mục JavaScript từ đường dẫn mặc định /js/?
Bạn sửa trong file library/config.php bằng cách thêm
$config['javaScriptUrl'] = 'new_js_url';
Trong đó 'new_js_url' là đường dẫn mới của bạn đến thư mục Javascript mới

Làm sao để bật chức năng Cache cho XenForo?
Bạn tham khảo thêm tại chủ đề: Toàn tập về Cache trong XenForo
Giao diện và thiết kế

Tôi làm cách nào để thay thế 1 styles mới cho diễn đàn?
Truy cập ACP -> Styles -> Create a New Styles (tạo 1 style mặc định để có thể chỉnh sửa) hoặc ACP -> Styles -> Import a style -> lựa chọn file XML của style (sau khi đã upload file vào thư mục styles)

Làm cách nào để fix độ rộng của style?
Bạn chỉnh tại ACP -> Styles -> Style Properties -> General: Page Width Controller, nhập dữ liệu sau vào trường Miscellaneous:
width: 992px;
margin: 0 auto;
Chú ý: độ rộng 992px có thể thay đổi giá trị theo ý muốn của bạn

Làm sao để thêm các trường giá trị thông tin phía dưới avatar user (số bài viết, được thích, nơi ở,…)?
Bạn thêm các trường đó tại ACP -> Styles -> Style Properties -> Message Elements

Tôi thay đổi màu của các nhóm user ở đâu?
Bạn thay đổi tại ACP->User->User Groups -> Administrator -> User Name CSS: color: red;. thay đổi màu của các nhóm user theo ý bạn.

Tôi chỉnh màu của giao diện ở đâu?
Bạn có thể chỉnh tại ACP -> Styles -> Style Properties -> Color Palette. Hoặc dùng chức năng Search template để chỉnh tiểu tiết khi bạn đã có key tìm kiếm.

Làm thế nào để chỉnh màu sắc và font chữ hiển thị tại Quote box hoặc một số BB Code khác?
Bạn chỉnh tại ACP -> Styles -> Style Properties -> BB Code Elements.

Làm sao để chỉnh màu chữ và màu nền của naviation tabs?
Bạn thêm vào EXTRA.css template:
.navTabs .navTab.PopupClosed .navLink {
color: @primaryDark;
background-color: @primaryLight; }
Thay đổi màu cho phù hợp

Làm sao để chỉnh màu chữ và nền của navigation tabs khi trỏ chuột vào (hover)?
Bạn thêm vào EXTRA.css template:
.navTabs .navTab.PopupClosed .navLink:hover {
color: @secondaryDark;
background-color: @secondaryLight; }
Thay đổi màu cho phù hợp

Làm sao để thay đổi màu nền của từng Category?
Thêm vào EXTRA.css template:
.nodeList .node_x .categoryStrip {
background-color: @primaryLighter; }
Thay thế node_x với giá trị ID của node đó, ví dụ, node_10. Thay đổi màu cho phù hợp

Làm sao để thay đổi icon cho mỗi forum?
Bạn tham khảo thêm tại: Mỗi box 1 icon (Custom Node icon)

Làm sao để tạo ra style riêng cho các bài post của staff?
Bạn có thể add thêm class .staff CSS vào EXTRA.css, ví dụ:
.staff {
font-weight: bold;
color: red; }
Làm sao để tạo ra tiền tố (prefix) trước các tiêu đề?
Bạn có thể tạo tại đây: ACP -> Applications -> Thread Prefix ->Create New Thread Prefix .

Làm sao để xóa bỏ tiêu đề forum ở ngoài trang chủ?
Bạn thêm vào EXTRA.css template:
.forum_list .titleBar {
display: none; }
hoặc
.forum_list .titleBar h1 {
font-size: 0px; }
Chú ý có thể ảnh hưởng đến SEO của website

Làm cách nào để giới hạn kích thước ảnh trong bài post?
Bạn thêm vào EXTRA.css template:
.bbCodeImage {
max-width: 50%; }
Chú ý là bạn nên chọn giá trị % hơn là giá trị px và sau khi bạn resize thì click chuột vào ảnh sẽ cho kích thước gốc.

Làm thế nào để cấm sử dụng hình ảnh và thẻ quote trong chữ kỹ thành viên?
Bạn thêm vào EXTRA.css template:
.signature .bbCodeImage, .signature .bbCodeBlock {
display: none !important; }
Làm sao để tôi đặt 1 ảnh hoặc 1 module quảng cáo trên góc phải header?
Bạn sửa trong template ad_header
Chỉnh sửa và đồng bộ hóa giao diện

Có cách nào tốt nhất đề chỉnh sửa CSS nếu không sử dụng thư viện Style Properties?
Tôi khuyên bạn nên sử dụng template EXTRA.css vì file này không bao giờ bị ghi đè khi bạn nâng cấp hoặc revert template.

Tôi làm cách nào để tìm kiếm các phần cần chỉnh sửa trong template?
Bạn nên sử dụng chức năng phân tích của trình duyệt, tìm đến khu vực cần chỉnh và quan tâm nhiều đến các class; ví dụ:

<div id="content" class="forum_list">, cái cần chỉnh là class forum_list và bạn tim kiếm các template có chứa cụm từ “forum_list

Tôi nên chỉnh template nào để áp dụng cho toàn bộ các trang?
Đó là template PAGE_CONTAINER

Tôi nên thêm các đoạn JavaScript vào đâu khi cần thiết?
Bạn nên thêm vào các template sau: PAGE_CONTAINER, page_container_js_head or page_container_js_body
Nếu bạn sử dụng PAGE_CONTAINER thì nó tác động đến tất cả các trang.
Nếu bạn sử dụng page_container_js_head nó sẽ tác động đến khu vực header của PAGE_CONTAINER
Nếu bạn sử dụng page_container_js_body nó sẽ tác động đến khu vực body của PAGE_CONTAINER sau thẻ footer.
Nhưng cách trên còn phụ thuộc vào độ lớn của đoạn script bạn muốn thêm vào để nhằm đảm bảo độ load

Làm sao để tôi đính kèm 1 template vào khu vực nào đó?
Bạn sử dụng đoạn code để chèn vào template: <xen:include template="name_of_template" />

Làm sao để đính kèm 1 template CSS?
Bạn sử dụng đoạn code để chèn vào template: <xen:require css="name_of_css_template.css" />

Làm sao để đính kèm 1 file JavaScript?
Bạn sử dụng đoạn code để chèn vào template: <xen:require js="name_of_javascript_file.js" />

Làm sao để comment trong 1 template nhằm mục đích ghi chú hoặc loại bỏ hiển thị đoạn code?
Bạn sử dụng đoạn thẻ sau vào các khu vực muốn ghi chú hoặc muốn ẩn trong template
<xen:comment>Nội dung cần ghi chú hoặc ẩn</xen:comment>
Chú ý là khi sử dụng <xen:comment> thì đoạn code sẽ không hiện thị khi view source

Làm cách nào để add sidebar vào các page hoặc template khác?
Bạn sử dụng đoạn code sau:
<xen:sidebar>
Nội dung của sidebar
</xen:sidebar>

Tôi làm cách nào để chèn 1 sidebar mà không có khu vực member, avatar ở trên top?
<xen:sidebar>
<
xen:container var="$noVisitorPanel">1</xen:container>
<
xen:if is="!{$noVisitorPanel}">Nội dung của sidebar</xen:if>

</
xen:sidebar>

Làm cách nào để xóa bỏ đường dẫn điều hướng breadcrumbs khỏi 1 số trang hoặc forum cụ thể?
Bạn sửa trong PAGE_CONTAINER template and bọc các thẻ div có chứa breadBoxTopbreadBoxBottom với điều kiện sau:
<xen:if is="{$quickNavSelected} != 'node-x'">
<
div class="breadBoxTop">
<
xen:if is="{$topctrl}"><div class="topCtrl">{xen:raw $topctrl}</div></xen:if>
<
xen:include template="breadcrumb"><xen:set var="$microdata">1</xen:set></xen:include>
</
div>
</
xen:if>

<
xen:if is="{$quickNavSelected} != 'node-x'">
<
div class="breadBoxBottom"><xen:include template="breadcrumb" /></div>
</
xen:if>
Thay thế node-x với ID diễn đàn đó, ví dụ: node-10.

Đối với page, thay thế <xen:if is="{$quickNavSelected} != 'node-x'"> với <xen:if is="{$contentTemplate} != 'name_of_template'">, trong đó name_of_template là template bạn muốn tác động, ví dụ bạn ko muốn hiển thị thanh điều hướng ở trang chủ diễn đàn thì bạn thay thế thành <xen:if is="{$contentTemplate} != ' forum_list '">

Tôi có thể những biến số có sẵn ở đâu?
Biến số chung:
2 biến có sẵn trong template:

$visitor – Đây là biên tương tự như $bbuserinfo trong vB. Nó lấy giá trị đối với các thành viên đang đăng nhập và sử dụng trong trường user của bảng xf_user. Ví dụ bạn có thể sử dụng biến này để chỉnh sửa vào template với các điều kiện sau:
{$visitor.user_id}
{$visitor.username}
{$visitor.user_group_id}

$xenOptions – Giống như biến $vboptions trong vB. Chứa các cài đặt trong bảng xf_option của database. Các chỉ số option_id có giá trị từ bản ghi trong table đó. Ví dụ: bạn có thể sử dụng biến trên để tạo ra các điều kiện sau trong template:
{$xenOptions.attachmentExtensions}
{$xenOptions.boardActive}
{$xenOptions.contactEmailAddress}
Ngoài ra bạn có thể tìm thêm các biến khác để phục vụ cho việc chỉnh sửa và gọi biến tại các file PHP trong core (ControllerPublic) ví dụ các biến liên quan đến Thread, Forum,…. library/XenForo/ControllerPublic/Thread.php

Tôi có thể tìm các chức năng trợ giúp hiển thị ở đâu?
Dữ liệu về các hàm trợ giúp như (hiển thị màu thành viên, avatar, title,…. Được quy định trong file library/XenForo/Template/Helper/Core.php. Ví dụ bạn muốn đồng bộ hiện thị màu và style của thành viên ở vị trí nào đó trong template, bạn sử dụng chức năng hỗ trợ xen:helper bạn sử dụng đoạn sau
{xen:helper username, $visitor}
Nó sẽ gọi các thuộc tính trong file Core.php mà kết nối với hàm helperUserName theo đoạn code dưới đây:

/**
          * List of callbacks for the "helper" template tag. Maps the helper name (key)
          * to a callback (value).
          *
          * Data received by this callback is not escaped!
          *
          * @var array
          */
        
public static $helperCallbacks = array(
                
'avatar'        => array('self''helperAvatarUrl'),
                
'avatarcropcss' => array('self''helperAvatarCropCss'),
                
'username'      => array('self''helperUserName'),
                
'usertitle'    => array('self''helperUserTitle'),
                
'richusername'  => array('self''helperRichUserName'),
                
'userblurb'    => array('self''helperUserBlurb'),
                
'sortarrow'    => array('self''helperSortArrow'),
                
'json'          => array('XenForo_ViewRenderer_Json''jsonEncodeForOutput'),
                
'clearfix'      => array('XenForo_ViewRenderer_Css''helperClearfix'),
                
'cssimportant'  => array('XenForo_ViewRenderer_Css''helperCssImportant'),
                
'snippet'      => array('self''helperSnippet'),
                
'bodytext'      => array('self''helperBodyText'),
                
'bbcode'        => array('self''helperBbCode'),
                
'highlight'    => array('XenForo_Helper_String''highlightSearchTerm'),
                
'striphtml'    => array('self''helperStripHtml'),
                
'linktitle'    => array('XenForo_Link''buildIntegerAndTitleUrlComponent'),
                
'wrap'          => array('self''helperWrap'),
                
'wordtrim'      => array('self''helperWordTrim'),
                
'pagenumber'    => array('self''helperPageNumber'),
                
'dump'          => array('self''helperDump'),
                
'type'          => array('self''helperType'),
                
'implode'      => array('self''helperImplode'),
                
'rgba'                    => array('XenForo_Helper_Color''rgba'),
                
'unrgba'        => array('XenForo_Helper_Color''unrgba'),
                
'fullurl'      => array('XenForo_Link''convertUriToAbsoluteUri'),
                
'ismemberof'    => array('self''helperIsMemberOf'),
                
'twitterlang'  => array('self''helperTwitterLanguage'),
                
'listitemid'    => array('XenForo_Template_Helper_Admin''getListItemId'),
        );
Nếu bạn chỉ sử dụng
<xen:username user="$visitor" />
Thì nó chỉ gọi mỗi chức năng username helper và bỏ qua các chức năng khác (avatar, title,…) Dựa vào đó để bạn lựa chọn chức năng riêng biệt cho hiện thị giao diện
Khai báo điều kiện

Các khai báo điều kiện dưới đây sẽ chỉ làm việc ở các template có hỗ trợ đối số và tham số.

Khai báo có thể mở rộng thêm bằng cách sử dụng AND, OR<xen:else />

Thay thế dấu == với != ở Ví dụ dưới đây sẽ thay đổi điều kiện từ true sang false.
Ví dụ: <xen:if is="{$visitor.user_id} == x"> là true, <xen:if is="{$visitor.user_id} != x"> là false.

Trong trường hợp 1 đối số chỉ chứa 1 tham số thì ta chèn dấu! trước tham số để có tác dụng tương như trên
Ví dụ: <xen:if is="{$visitor.user_id}"> là true, <xen:if is="!{$visitor.user_id}"> là false.

Khi thao tác với “arrays” thì ! sẽ được đặt trước đối số.
Ví dụ, <xen:if is="in_array({$forum.node_id}, array(x, y, z))"> là true, <xen:if is="!in_array({$forum.node_id}, array(x, y, z))"> là false.

Tùy thuộc vào template đang thao tác, bạn có thể phải sử dụng $user thay vì $visitor; $visitor luôn thể hiện các user đang đăng nhập, $user là thể hiện các user đang được xử lý (ví dụ: message author, member list, list of online users,…)

Khi bạn thao tác vào template PAGE_CONTAINER, bạn có thể bỏ qua các biến của các template view (như: category_view, forum_view, thread_view,...) bằng cách sử dụng xen:container. Nó sẽ có tác dụng đối với bất kỳ template nào có chứa hoặc hiển thị template PAGE_CONTAINER; ví dụ như header hay ad_header.
Ví dụ như để sử dụng biến $forum.node_id bạn cần phải add vào template PAGE_CONTAINER đoạn code
<xen:container var="$forumId">{$forum.node_id}</xen:container>.
Tương tự với biến $threadId, bạn sẽ thêm vào đoạn: <xen:container var="$threadId">{$thread.thread_id}</xen:container>.

Các biến số x, y, z ở các ví dụ dưới đây cần phải thay thế bằng các con số với giá trị thực.

Làm sao để ẩn nội dung đối với khách, chỉ áp dụng cho thành viên đăng nhập?
Bạn thêm vào trong template cần áp dụng đoạn code sau
<xen:if is="{$visitor.user_id}">
Đoạn hiện thị cho thành viên đăng nhập
</xen:if>

Làm sao để hiển thị nội dung với khách và ẩn với thành viên đăng nhập?
<xen:if is="!{$visitor.user_id}">
Nội dung dành cho khách
</xen:if>

Làm sao để hiển thị đồng thời các nội dung khác nhau dành cho khách và cho thành viên?
<xen:if is="{$visitor.user_id}">
Nội dung cho thành viên
<xen:else />
Nội dung cho khách
</xen:if>

Làm sao để hiển thị nội dung cho nhóm user cụ thể?
<xen:if is="{xen:helper ismemberof, $visitor, x}">
Nội dung dành cho nhóm user có ID là x
</xen:if>

Làm sao để ẩn nội dung cho nhóm user cụ thể?
<xen:if is="!{xen:helper ismemberof, $visitor, x}">
Ẩn nội dung này với nhóm ID x
</xen:if>

Làm cách nào để hiển thị / ẩn nội dung cho nhiều nhóm user riêng biệt?
<xen:if is="{xen:helper ismemberof, $visitor, x, y}">
Nội dung này dành cho các nhóm có ID là x hoặc y
</xen:if>

<xen:if is="!{xen:helper ismemberof, $visitor, x, y}">
Ẩn nội dung này với nhóm x hay y
</xen:if>

Làm sao để hiển thị nội dung cho Admin?
<xen:if is="{$visitor.is_admin}">
Nội dung này chỉ dành cho Admin
</xen:if>

Làm sao để hiển thị nội dung cho nhóm Mod?
<xen:if is="{$visitor.is_moderator}">
Nội dung này dành cho Mod
</xen:if>

Làm sao để hiển thị nội dung cho cả Admin và Mod?
<xen:if is="{$visitor.is_admin} OR {$visitor.is_moderator}">
Nội dung này dành cho cả Admin và Mod
</xen:if>

Làm sao để hiển thị nội dung cho 1 mem cụ thể nào đó?
<xen:if is="{$visitor.user_id} == x">
Nội dung này chỉ dành cho member có ID là x
</xen:if>

Làm sao để hiển thị nội dung cho nhiều thành viên cụ thể?
<xen:if is="in_array({$visitor.user_id}, array(x, y, z))">
Nội dung này chỉ dành cho các thành viên x, y và z
</xen:if>

Làm sao để hiển thị nội dung sau bài viết đầu tiên trong mỗi chủ đề?
<xen:if is="{$post.position} == 0 AND !{$message.conversation_id}">
Nội dung này hiển thị ngay sau bài viết đầu tiên
</xen:if>

Nếu bạn muốn hiển thị cả trong các phần hội thoại riêng thì sử dụng đoạn code sau:
<xen:if is="{$post.position} == 0">
Nội dung này hiển thị sau bài viết đầu tiên ở cả chủ đề và hội thoại
</xen:if>

Làm sao để hiển thị nội dung ngay sau bài viết x ở mọi trang trong cùng 1 chủ đề?
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND !{$message.conversation_id}">
Nội dung này sẽ hiển thị sau bài viết x ở mỗi trang trong 1 chủ đề
</xen:if>

Nếu bạn muốn hiển thị cả trong các phần hội thoại riêng thì sử dụng đoạn code sau:
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x">
Nội dung này sẽ hiển thị sau bài viết x ở mỗi trang trong 1 chủ đề và hội thoại
</xen:if>

Làm sao để hiển thị nội dung sau bài x ở mọi trang nhưng chỉ trong forum y hoặc z?
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND in_array({$thread.node_id}, array(y, z))">
Nội dung này sẽ hiển thị sau bài viết x ở mỗi trang trong 1 chủ đề nhưng chỉ áp dung cho forum y hoặc z
</xen:if>

Làm sao để hiển thị nội dung sau bài x trên mọi trang ngoại trừ forum y hoặc z?
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND !in_array({$thread.node_id}, array(y, z))">
Nội dung này sẽ hiển thị sau bài viết x ở mỗi trang tronddeef1 chủ đề ngoài trừ forum y hoặc z
</xen:if>

Làm sao để hiển thị nội dung ở 1 trang cụ thể?
<xen:if is="{$contentTemplate} == 'xyz'">
Nội dung này hiển thị ở template xyz
</xen:if>

Làm sao để hiển thị nội dung ở 1 category cụ thể ?
<xen:if is="{$category.node_id} == x">
Nội dung này hiển thị ở category ID = x
</xen:if>
Chú ý rằng để làm được việc này, bạn phải có category set như một Page tại ACP -> Options -> Node & Forum List: Create Pages for Categories.

Làm sao để hiển thị nội dung ở 1 forum cụ thể ?
<xen:if is="{$forum.node_id} == x">
Nội dung này chỉ có ở forum x
</xen:if>

Nếu muốn thêm forum thì bạn áp dụng:
<xen:if is="in_array({$forum.node_id}, array(x, y, z))">
Nội dung này chỉ có ở forum x , y, và z
</xen:if>

Làm sao để hiển thị nội dugn ở 1 chủ đề cụ thể?
<xen:if is="{$threadId} == x">
Nội dung này chỉ hiển thị ở chủ đề x
</xen:if>

Nếu muốn thêm chủ đề thì bạn áp dụng:
<xen:if is="in_array({$threadId}, array(x, y, z))">
Nội dung này chỉ hiển thị ở chủ đề x, y, và z
</xen:if>

Làm sao để hiển thị nội dung ở 1 bài post cụ thể?
<xen:if is="{$postId} == x">
Nội dung này chỉ hiện thị ở bài post x
</xen:if>

Nếu muốn thêm bài viết khác thì bạn áp dụng:
<xen:if is="in_array({$postId}, array(x, y, z))">
Nội dung này chỉ hiện thị ở bài post x, y, và z
</xen:if>

Làm sao để hiển thị nội dung nếu tác giả bài post cùng chính là tác giả của chủ đề?
<xen:if is="{$post.user_id} == {$thread.user_id}">
Nội dung cần hiển thị
</xen:if>

Làm sao để hiển thị nội dung với thành viên có số bài viết =0?
<xen:if is="{$visitor.message_count} == 0">
Nội dung cần hiển thị
</xen:if>

Làm sao để hiển thị nội dung với thành viên có nhiều hơn x bài?
<xen:if is="{$visitor.message_count} > x">
Nội dung cần hiển thị
</xen:if>

Làm sao để hiển thị nội dung với thành viên có ít hơn x bài
<xen:if is="{$visitor.message_count} < x">
Nội dung cần hiển thị
</xen:if>

Làm sao để hiển thị nội dung với khách truy cập từ các máy tìm kiếm?
<xen:if is="{$visitor.from_search}">
Nội dung cần hiển thị
</xen:if>
Phát triển XenForo

Làm sao để bật tab Development trong ACP?
Bạn phải bật chế độ debug bằng cách thêm vào file library/config.php
$config['debug'] = true;
Chú ý: Không nên bật tùy tiện chế độ này khi site đang hoạt động ổn định, chỉ khi nào bạn cần phát triển thêm tính năng thì mới nên bật.

Làm sao để bật chế độ debug cho 1 IP đặc biệt?
Sửa file library/config.php
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1'){$config['debug'] = true;}
Thay IP 127.0.0.1 cho phù hợp.

Làm thể nào để kiểm tra 1 biến số cụ thể có sẵn trong template không?
Thêm đoạn code này vào template:
{xen:helper dump$ten_bien}
Thay thế ten_bien với giá trị thực. Nếu một array được trả về sau đó nó có sẵn, trong trường hợp nếu NULL được trả về thi nó không có sẵn.

Làm sao để tắt tất cả các listeners?
Thêm vào library/config.php:
$config['enableListeners'] = false;
Làm sao để tắt chức năng thông báo lỗi?
Thêm vào library/config.php:
error_reporting(0);
Chú ý: thông báo lỗi này hiển thị ở ngoài forum và trong ACP server error log.

Làm sao để chặn email được gửi đi?
Thêm vào library/config.php:
$config['enableMail'] = false;
Xử lý sự cố

Nếu bạn đang gặp vấn đề với diễn đàn của bạn, có 1 số bước kiểm tra cơ bản có thẻ xác định được nguyên nhân hoặc cung cấp thêm thông tin. Các bước sau có thể sẽ giúp bạn trong hầu hết các trường hợp:
  • Xác nhận tất cả các file hiện tại bằng cách sử dụng ACP -> Tools -> File Health Check.
  • Kiểm tra cập nhật template, phrase và revert lại. Đọc thêm tại bài viết này để biết thêm thông tin.
  • Xác nhận style bạn đang dùng là tương thích với phiên bản XenForo của bạn. Nếu bạn còn nghi ngời thì kiểm tra vấn đề đó với style mặc định. Bạn có thể tạo ra style mặc định trong trường hợp bạn đã chỉnh tại ACP -> Styles ->Creat a new style
  • Xác nhận các Add-on bạn đã cài là tương thích với phiên bản XenForo hiện tại đang dùng.
  • Vô hiệu hóa tất cả các Add-on, nếu vấn đề được giải quyết thì bạn bắt đầu bật từng Add-on riêng lẻ để kiểm tra và xác định nguyên nhân.
  • Kiểm tra lỗi ACP -> Tools -> Server Error Log.
  • Kiểm tra thư mục cài đặt theo nhật ký báo lỗi trên server.
  • Nếu bạn sử dụng cPane hoặc các phần mềm quản trị tương tự thì hãy kiểm tra nhật ký lỗi trên server và trên các server khác. Có thể yêu cầu nhà cung cấp server hỗ trợ nếu bạn không thể truy cập.
Một số các thao tác liệt kê dưới đây có thể là nguyên nhân gây ra diễn đàn ngưng hoạt động và kết quả là mất dữ liệu hoặc bị hỏng nặng. Chỉ có sự cố gắng hết sức mới cứu vãn được tình hình và nếu bạn tự tin vào những việc bạn đang làm.

Làm sao để kiểm tra thông tin PHP trên server?
Kiểm tra tại http://www.example.com/forum/admin.php?tools/phpinfo.

Tôi đã chỉnh sửa nhận các tiêu bản template, làm thế nào để restore chúng hoặc xây dựng lại dữ liệu tổng thể mà không phải re-installation?
Điều hướng đến đường dẫn cài đặt http://www.example.com/forum/install/ và click vào Rebuild Master Data.

Tôi cố nâng cấp nhưng hệ thông hướng tôi cài đặt mới, tôi phải làm sao để không ghi đè lên dữ liệu cũ?
Có thể bạn đã upload tập tin từ gói full chứ không phải gói nâng cấp. Hoặc bạn đã tải đúng tập tin nhưng sai vị trí. Kiểm tra thư mục data và internal_data không bị ghi đè. Nếu có, bạn sẽ phải khôi phục lại các tập tin từ một bản sao lưu. Để tiếp tục nâng cấp, bạn sẽ cần phải đảm bảo các thông tin chính xác trong library/config.php và thay thế file internal_data/install-lock.php.

Tôi thấy có 1 trống, có cách nào xem chi tiết nguyên nhân lỗi không?
Trang trống đôi khi do lỗi ngăn chặn. Bạn thêm đoạn sau vào library/config.php:
ini_set('display_errors'true);
Hoặc nếu bạn ở trong server thì thêm đoạn sau vào file .htaccess
php_value display_errors 1
Tôi gặp vấn đề liên quan đến Add-on, có cách nào nhanh nhất đề disable tất cả Add-on không?
Thêm vào library/config.php
$config['enableListeners'] = false;
Sau khi import, tất cả các đoạn hội thoại của tôi để ở trạng thái “chưa đọc”, làm thế nào để tôi đánh dấu đã đọc?
Bạn chạy queries sau:
UPDATE xf_conversation_recipient SET last_read_date UNIX_TIMESTAMP();UPDATE xf_conversation_user SET is_unread 0;UPDATE xf_user SET conversations_unread 0;
Chú ý là đoạn queries này sẽ đánh dấu toàn bộ trên cả các user khác.

Sau khi import dữ liệu, có một số lượng lớn bài viết và chủ đề được chuyển trạng thái chờ kiểm duyệt, có cách nào duyệt tất cả các bài đó không?
Có, bạn chạy query sau dành cho chủ đề:
DELETE FROM xf_moderation_queue WHERE content_type = 'thread';
UPDATE xf_thread SET discussion_state = 'visible' WHERE discussion_state = 'moderated';
DELETE FROM xf_data_registry WHERE data_key = 'moderationCounts';
Và query sau dành cho post
DELETE FROM xf_moderation_queue WHERE content_type = 'post';
UPDATE xf_post SET message_state = 'visible' WHERE message_state = 'moderated';
DELETE FROM xf_data_registry WHERE data_key = 'moderationCounts';
Có cách nào di chuyển bài post từ forum này sang forum khác không?
Có, bạn chạy query sau:
UPDATE xf_thread SET node_id = y WHERE node_id = x;
Thay thế x = ID của forum đang có bài post và y = ID của forum mới. Chú ý sau khi thay thế xong thì rebuild cache tại ACP -> Tools -> Rebuild Caches.

Tôi gặp phải lỗi giới hạn bộ nhớ PHP memory limit khi upload 1 file lớn, làm sao để tôi tăng thêm giới hạn?
Thêm vào file php.ini đoạn sau:
upload_max_filesize = 10M
post_max_size = 10M
Hoặc bạn thêm vào file .htaccess
php_value upload_max_filesize 10M
php_value post_max_size 10M
Sửa lại giá trị Mb cho phù hợp.

Tôi nhận được báo lỗi liên quan đến kích thước bộ nhớ khi thực hiện một chức năng nhất định, tôi phải làm sao để tăng thêm bộ nhớ?
Để tăng bộ nhớ bạn thêm vào library/config.php đoạn code:
ini_set('memory_limit', 256 * 1024 * 1024);
Thay đổi các số cho phù hợp. Để xóa bỏ giới hạn thì đưa giá trị về -1.

Tôi nhận được báo lỗi nghiêm trọng liên quan đến giới hạn thời gian tối đa khi thực hiện một số chức năng nhất định, làm sao để tăng giới hạn tối đa hoặc xóa bỏ giới hạn đó?
Để tăng giới hạn tối đa, bạn sửa file php.ini:
max_execution_time = 180
Hoặc thêm vào file library/config.php:
ini_set('max_execution_time', 180);
Hoặc sửa file .htaccess
php_value max_execution_time 180
Sửa giá trị (tính bằng giây) cho phù hợp. Đề xóa bỏ giới hạn thì cho giá trị về 0.
Chú ý giá trị ở file library/config.php sẽ luôn được chấp nhập khi chúng theo sau bất kỳ giá trị cụ thể nào của XenForo.


Không có nhận xét nào:

Đăng nhận xét