Other Create your own helpers - Tạo helpers riêng của bạn

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
17,149
Được Like
12,745
Create your own helpers - Tạo helpers riêng của bạn 1.1

Helpers cung cấp các chức năng bổ sung mà bạn có thể sử dụng trong các template XenForo.

Hiện nay có rất nhiều Helpers, một số như sau:

avatar -> Helper để lấy URL avatar của người dùng.
username -> Tạo một đoạn trích ngắn <a href="members/username.123" class="username">Username</a>.
usertitle -> Helper để có được danh hiệu người dùng cho người dùng xác định.
richusername -> Kết quả đầu ra HTML cần thiết cho một tên người dùng phong phú (bao gồm các class đánh dấu phong cách hiển thị).
ismemberof -> Kiểm tra nếu người dùng là thành viên của một nhóm.
wordtrim -> Word trims và HTML thoát khỏi chuỗi cho trước.
autolink -> Tự động liên kết URLs trong văn bản gốc. Văn bản này nên nói chung đã được HTML escaped, bởi vì nó không thể được thực hiện sau các liên kết.

Bạn có thể gọi một helper trong các template theo cách này:
Mã:
{xen:helper NAME_OF_THE_HELPER, 'argument1', 'argument2'}

Nhưng nếu chúng ta muốn sử dụng một template tuỳ chỉnh helper?

Bước 1 - Bắt đầu

Khi bắt đầu hãy thường lệ bằng cách tạo ra các thư mục cho add-on, và trong đó có một listener. Đây là cấu trúc cuối cùng:

forumroot
--library
---SimpleHelper -> Thư mục mới
-----Listener.php -> Tập tin mới
---XenForo

Ok, khi được tạo ra, mở file Listener.php và thêm đoạn mã sau:
PHP:
<?php
//Our class name
class SimpleHelper_Listener
{
    /**
    * Listen to the "init_dependencies" code event.
    *
    * @param XenForo_Dependencies_Abstract $dependencies
    * @param array $data
    */
    public static function init(XenForo_Dependencies_Abstract $dependencies, array $data)
    {
        //Get the static variable $helperCallbacks and add a new item in the array.
        XenForo_Template_Helper_Core::$helperCallbacks += array(
            'echo' => array('SimpleHelper_Helpers', 'helperEcho')
        );
    }
}
?>

Những gì nó làm?
Chức năng này nghe Code Event Listener init_dependecies. Code event này được gọi khi người quản lý phụ thuộc tải dữ liệu mặc định của nó. Phát sinh trên hầu như tất cả các trang và là điều đầu tiên bạn có thể cắm vào.
Mã sau đây được $helperCallbacks tĩnh mà có danh sách của helpers, và hợp nhất mới, helpers đơn giản.
Mã:
XenForo_Template_Helper_Core::$helperCallbacks += array(
        'echo' => array('SimpleHelper_Helpers', 'helperEcho')
);

Chú ý rằng SimpleHelper_Helpers không tồn tại. Chúng ta sẽ tạo ra class này trong các bước tiếp theo.
Bây giờ chúng ta cần phải làm hai việc: tạo một add-on mới và tạo ra một event listener mới trong AdminCP.

Tạo add-on

Để tạo một add-on mới, đi đến AdminCP -> Development -> Create Add-on và điền vào với thông tin:

Add-on ID: SimpleHelper
Title: Simple Helper
Version String: 1.0.0
Version ID: 1

Lưu lại.

Tạo Event Listener

Đến AdminCP -> Development -> Code Event Listeners và tạo ra một listener mới sử dụng chức năng.

Listen to Event: init_dependecies
Execute Callback Class: SimpleHelper_Listener
Execute Callback method: init
Description: Add a new custom helper
Add-on: Simple helper

Lưu lại.

Bước 2 - Core

Bây giờ tất cả đều được thiết lập, chúng ta hãy tạo ra các chức năng mà sẽ xử lý các cuộc gọi đến helper echo.

Tạo thêm một tập tin:

forumroot
--library
---SimpleHelper
-----Helpers.php -> Our new file!
-----Listener.php
---XenForo

Mở tập tin mới (SimpleHelper/Helpers.php) và đặt đoạn mã sau:
PHP:
<?php
//Our class helper (we can put any helpers in here we want)
class SimpleHelper_Helpers
{
    public static function helperEcho ($string)
    {
        //We only return the argument, dont do nothing.
        return $string;
    }
}
?>

Hãy nhớ đoạn mã này trong Listener.php:
Mã:
'echo' => array('SimpleHelper_Helpers', 'helperEcho')

Như vậy chúng ta chỉ tạo ra một class SimpleHelper_Helpers và một chức năng helperEcho.

Tuy nhiên, như bạn có thể thấy, helper này không có gì! Nó chỉ mất một đối số (đầu tiên một) và sau đó trở lại như nó được.

Bước 3 - Testing

Hãy kiểm tra điều này.

Mở template forum_view và đặt đoạn code này ở đầu:
Mã:
{xen:helper echo, 'This is a custon helper! It does nothing!'}

Lưu lại.

Tới danh sách diễn đàn của bạn, làm mới trang và bạn sẽ thấy một cái gì đó như thế này:

1.PNG

Ok, nó hoạt động, nhưng làm thế nào chúng ta có thể làm cho điều này helper nhiều hơn một chút ..... helpish?

Bước 4 - Thêm chức năng

Hãy thay đổi những gì helper này làm. Mở tập tin SimpleHelper/Helpers.php và thay đổi helperEcho thành đoạn mã sau đây:
Mã:
public static function helperEcho ($string, $color)
{
    return "<font color=$color>$string</font>";
}

Mở forum_list và thay đổi cách gọi cho helper thành:
Mã:
{xen:helper echo, 'This is a custon helper! It does nothing!', 'red'}

Làm mới danh sách diễn đàn của bạn và xem những gì sẽ xảy ra. Nó sẽ biến tất cả các văn bản thành màu đỏ.

À chính nó đấy. Bạn có thể tạo helpers riêng của bạn theo cách này. Và chắc chắn, bạn có thể làm nhiều hơn sau đó chỉ cần echo một chuỗi trong màu đỏ.

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


Nguồn: xenforo.com​
 

Đính kèm

  • SimpleHelper.zip
    1.3 KB · Lượt xem: 1

Top Bottom