Hướng Dẫn Tuỳ Chỉnh Giao Diện (Skin) Trên DirectAdmin Đầy Đủ Nhất Cho Quản Trị Viên

Hướng Dẫn Tuỳ Chỉnh Giao Diện (Skin) Trên DirectAdmin Đầy Đủ Nhất Cho Quản Trị Viên

Chào mừng bạn đến với DirectAdmin Skins 101. Hướng dẫn này được thiết kế để giúp bạn bắt đầu tạo ra skin DirectAdmin đầu tiên của mình. Hệ thống skins có thiết kế khá đơn giản nhưng có thể rất mạnh mẽ nếu sử dụng đúng cách. Những điểm chính mà bạn cần phải nắm vững bao gồm:

Vui lòng tham khảo tài liệu skins để biết chi tiết về các token mặc định, token cho lệnh, và cách đóng gói skins.
Một khi bạn đã hiểu rõ những điểm chính này, việc tạo skin của riêng bạn sẽ chỉ bị giới hạn bởi trí tưởng tượng của bạn.

Hệ thống Token

Định nghĩa:
Một token là tên đại diện cho một giá trị được lưu trữ trong bộ nhớ. Khi tên này được đặt giữa các ký tự “pipe” | (Shift + Backslash), hệ thống token của DirectAdmin (tokenizer) sẽ thay thế cả tên và các ký tự pipe bằng giá trị đã được gán.Ví dụ:

Token name: USERNAME
Token value: Gary
Use: Hello |USERNAME|, how are you today?
Result: Hello Gary, how are you today?

Token có thể chứa bất kỳ chuỗi ký tự nào và có thể chứa ký tự xuống dòng. Các token được sử dụng rất thường xuyên trong DirectAdmin để hiển thị các bảng hoàn chỉnh (từ <table> đến </table>) nhằm trình bày thông tin cho người dùng. DirectAdmin đã nạp sẵn nhiều token có thể được sử dụng trên bất kỳ trang nào. Những token này được gọi là “Default Tokens” và có thể được tìm thấy trong tài liệu về tokens.

Số lượng token mặc định mà bạn có thể sử dụng phụ thuộc vào quyền hạn của tài khoản DirectAdmin của bạn. Ví dụ, một Administrator có token mặc định cho phép xem tổng mức sử dụng băng thông của toàn bộ server, trong khi một User thì không thể xem được token đó. Điều quan trọng cần lưu ý là vì Administrator là một mở rộng của User, nên bất kỳ giá trị nào mà một User có thể nhìn thấy, Administrator cũng có thể nhìn thấy được.

Các trang Web nhúng

Các skin đều bao gồm nhiều trang web được sử dụng để tạo skin. Có thể có một trang cho các tài khoản email, một trang cho các cơ sở dữ liệu, và danh sách có thể khá dài. Tuy nhiên, giữa các trang web này, về cơ bản có một số điểm chung nhất định, chẳng hạn như phần header và footer của trang, cùng một vài thành phần khác như style sheets và các tài liệu javascript.

Cách đơn giản nhất để tạo ra tất cả các trang này là copy và dán phần header và footer vào mỗi trang và sau đó điền nội dung vào giữa chúng. Mặc dù cách làm này có thể hoạt động, nhưng nếu bạn gặp lỗi chính tả trong phần header chẳng hạn, bạn sẽ phải đi qua từng trang web một và sửa lỗi đó rất nhiều lần.

Eureka! Có một cách hay hơn!

Sẽ hợp lý hơn nếu bạn chỉ viết header và footer một lần, lưu chúng vào các tệp riêng và sau đó chèn chúng vào đầu và cuối của mỗi trang mà bạn cần. Và đúng vậy, DirectAdmin hỗ trợ các trang web nhúng, cho phép bạn chèn các tài liệu khác vào trang web của mình ở bất cứ đâu bạn muốn. Hãy xem ví dụ đơn giản sau:

Text to be displayed in header: Welcome to DirectAdmin!
Text to be displayed in footer: This is the bottom of the file.

Create a file, lets call it header.html. Then insert what you want in the header:
Welcome to DirectAdmin!

Next, create another file and lets call it footer.html, just for the fun of it.
Insert the text:
This is the bottom of the file.

Giờ ta cần có cách gọi header và footer để chúng được chèn vào trang web. Phương pháp được sử dụng khá giống với hệ thống token, ngoại trừ việc các tệp sẽ bắt đầu bằng HTM_. Cách các token này được liên kết với các tệp sẽ được mô tả sau trong hướng dẫn. Chúng ta đặt tên header là HTM_HEADER và footer là HTM_FOOTER. Trang web của bạn sẽ có cấu trúc như sau:

|HTM_HEADER|

Hello, this is the content of my webpage. This content will change for
each webpage, but the text above and below will remain the same.

|HTM_FOOTER|

Kết quả khi hiển thị trang web sẽ như sau:

Welcome to DirectAdmin!

Hello, this is the content of my webpage. This content will change for
each webpage, but the text above and below will remain the same.

This is the bottom of the file.

Phần HTM_HEADER và HTM_FOOTER là tất cả những gì bạn cần chèn vào trong mỗi trang web để có header và footer đầy đủ. Thông thường bạn sẽ sử dụng cú pháp HTML chứ không chỉ là văn bản đơn thuần. Bạn thường sẽ mở thẻ <html> trong header và đóng thẻ </html> trong footer. Điều này giúp bạn không phải lặp lại nhiều lần, tiết kiệm thời gian. Lưu ý rằng bạn không bắt buộc phải đặt tên token của header và footer là HTM_HEADER và HTM_FOOTER; bạn có thể đặt tên chúng theo ý mình miễn là chúng được liên kết đúng với các tệp trong các tệp conf được thảo luận sau đây.

Truyền giá trị giữa các trang

Rất thường xuyên, bạn sẽ cần di chuyển một hoặc nhiều dữ liệu giữa các trang. Mục đích chính của việc này là để giữ nguyên một số dữ liệu và chèn nó vào mỗi trang một cách động. Ví dụ, một User có thể có nhiều domain; vì vậy, khi tạo một tài khoản email, ta sẽ cần biết tài khoản email đó thuộc domain nào. Để làm được điều này, ta sẽ truyền giá trị domain qua lại giữa các trang từ nơi chọn domain cho đến trang tạo email.

Cách thực hiện là sử dụng phương thức yêu cầu “GET”. Điều này được thực hiện bằng cách thêm tên token và giá trị sau tên tệp mà chúng ta muốn hiển thị. Ví dụ:

http://www.domain.com:2222/HTM_EMAIL_POP_CREATE?DOMAIN=domain.com
this will show the web page linked to with HTM_EMAIL_POP_CREATE and replace any
instances of |DOMAIN| with domain.com

Trang web liên kết với HTM_EMAIL_POP_CREATE sẽ được hiển thị và tất cả các chỗ có |DOMAIN| sẽ được thay bằng domain.com.

Bạn có thể truyền nhiều token cùng lúc bằng cách sử dụng ký tự &. Ví dụ:

http://www.domain.com:2222/HTM_SOME_PAGE?DOMAIN=domain.com&name=gary
This will show the file linked to with HTM_SOME_PAGE and replace all instances
of |DOMAIN| with domain.com and all instances of |name| with gary.

Trang hiển thị file liên kết với HTM_SOME_PAGE sẽ thay thế tất cả các chỗ chứa |DOMAIN| bằng domain.com và tất cả chỗ chứa |name| bằng gary.

Thêm Token trong một trang Web

Có một số trường hợp trong đó chúng ta có dữ liệu sẽ thay đổi trên mỗi trang, nhưng lại cần hiển thị trong header hoặc footer. Vì header và footer chỉ được lưu trữ trong một tệp duy nhất, thế nào để chèn các giá trị khác nhau vào những tệp này mà không cần sao chép chúng nhiều lần? Ví dụ, tiêu đề của một trang web được thiết lập trong header, nhưng bạn muốn tiêu đề thay đổi theo từng trang.

Để làm điều này, ta sẽ tạo một token tiêu đề trong tệp header: header.html (HTM_HEADER):

<html>
  <title>
    |TITLE|
  </title>

Bây giờ, trên mỗi trang web, bạn sẽ thiết lập token tiêu đề trước khi chèn header:

|?TITLE=This is the DirectAdmin Title!|

|HTM_HEADER|

Page Content

|HTM_FOOTER|

Như bạn thấy, bằng cách sử dụng dấu ? trước tên token và dấu = sau tên token, giá trị sau dấu = sẽ được chèn vào token TITLE và lưu trữ trong bộ nhớ. Sau đó, bất kỳ nơi nào có yêu cầu |TITLE| sẽ chèn vào văn bản “This is the DirectAdmin Title!” (trong trường hợp này, vào tiêu đề của trang web).

Một vài lưu ý khi thiết lập token:

● Chỉ được đặt một token trên mỗi dòng, nghĩa là bạn chỉ có thể gán một token trên một dòng và toàn bộ chuỗi từ |? đến | không được trải dài qua nhiều dòng.
● Luôn luôn gán token với giá trị mà bạn muốn sử dụng trước khi cố gắng sử dụng nó. Nếu không, việc đó giống như ăn một chiếc bánh rồi mới cắt lát.
● Bạn có thể sử dụng token lồng nhau bên trong giá trị, nhưng sử dụng ký tự ` (cách bên trái phím số 1 trên bàn phím) thay vì ký tự pipe “|”.
Ví dụ:

|?TITLE=Welcome to DirectAdmin `USERNAME`|
would set the title of the webpage as: Welcome to DirectAdmin gary
(assuming you've added the title token as in the above example)

● Bạn có thể đặt token nhiều lần; mỗi lần thiết lập sẽ ghi đè giá trị cũ.
● Bạn có thể ghi đè bất kỳ token nào trong bộ nhớ, bao gồm cả token mặc định, token được truyền qua GET, và token được tạo bởi các yêu cầu CMD_.

Các loại tệp và liên kết khác nhau

Hướng dẫn giới thiệu về skins chủ yếu sử dụng tiền tố HTM_ để truy cập dữ liệu trong các tệp conf. Trên thực tế, DirectAdmin sử dụng nhiều lệnh hơn chỉ là HTM_ bởi vì một skin chỉ chứa văn bản thuần túy sẽ quá đơn giản. Danh sách các lệnh bao gồm:

● HTM_
● IMG_
● CSS_
● CMD_
● DYN_

Phân tích từng loại:

  • HTM_: Được sử dụng cho các tệp HTML cơ bản. Nó không thực thi gì thêm, nghĩa là không thay đổi gì trên server khi sử dụng.
  • IMG_: Dùng cho hình ảnh thuộc bất kỳ định dạng nào.
    Cách sử dụng:<img src="IMG_LOGO">Tệp conf:IMG_LOGO=images/logo.gif
  • CSS_: Dùng cho style sheets. Chức năng của nó hoàn toàn giống như HTM_ và cũng được phân tích để thay thế token. Nó có thể được chèn vào trang bằng cách sử dụng |CSS_NAME| hoặc được import bằng cú pháp:<style src="CSS_NAME">
  • CMD_: Có lẽ là quan trọng nhất. Chức năng tương tự như HTM_ nhưng DirectAdmin sẽ thực hiện một số công việc để lấy thông tin không mặc định, hoặc sẽ làm thay đổi server khi hoàn thành (ví dụ: tạo tài khoản email). Các lệnh này thường tạo ra các token không mặc định chỉ có thể truy cập sau khi lệnh được thực thi.
  • DYN_: Là các token động. Chúng cho phép bạn chèn tên token vào một vị trí trong tệp tại thời điểm tệp được gọi.
    Ví dụ:

    This is the contents of HTM_FILE
    here is a token:
    |DYN_NAME|
    end of the file
  • Kết quả là:
    Token DYN_NAME sẽ được thay thế bằng HTM_USER. Sau đó, HTM_USER được coi là token và nội dung của token HTM_USER sẽ được chèn vào. Tóm lại, bạn có thể lựa chọn tệp nào sẽ được chèn vào token vào thời điểm gọi nó. Tính năng này không được sử dụng trong các skins kèm theo của DirectAdmin, nhưng có thể hữu ích cho một số nhà thiết kế skin.

3. Tệp Conf chính để lưu trữ thông tin đường dẫn

Như đã nêu, các token HTM_ phải được liên kết với một tệp cụ thể. Các tệp conf chính là cách để thực hiện điều này. Cấu trúc của một tệp conf khá đơn giản. Chúng ta lấy ví dụ về tệp conf chứa header và footer:

HTM_INDEX=index.html
HTM_HEADER=header.html
HTM_FOOTER=footer.html
HTM_EMAIL_POP_CREATE=email/create_email.html
HTM_SOME_PAGE=files/filename.html

Giá trị bên trái dấu bằng là tên bạn sử dụng để truy cập tệp; giá trị bên phải là đường dẫn của tệp. Bạn có thể sử dụng các tệp HTM_ như một token hoặc như một trang web. Ví dụ, bạn có thể gõ domain.com:2222/HTM_HEADER vào thanh địa chỉ để xem nội dung của tệp đó, hoặc sử dụng |HTM_HEADER| bên trong tệp khác để chèn nội dung của nó.

Giờ ta đã thiết lập được chức năng của các tệp conf, hãy cùng thảo luận lý do tại sao lại có ba tệp như vậy.

Trên hệ thống DirectAdmin, có ba loại tài khoản: Admin, Reseller và User. Mỗi loại tài khoản có quyền truy cập và khả năng thực hiện các thao tác khác nhau. Một User là loại tài khoản cơ bản nhất. Tài khoản Reseller được xây dựng dựa trên tài khoản User, nhưng có thêm nhiều tính năng và công cụ vì Reseller IS-A User (một tập hợp các lệnh mở rộng cho các lệnh User đã có). Tương tự, Admin là sự mở rộng của Reseller. Điều này có nghĩa là một Admin là cả một Reseller và một User, do đó có thể thực hiện mọi thao tác ở bất kỳ cấp độ truy cập nào.

Vậy làm thế nào để áp dụng điều này cho skins? Với các lệnh khác nhau dành cho từng loại tài khoản, sẽ có những trang web mà chỉ Reseller được thấy trong khi User thì không, cũng như những trang chỉ Admin mới có thể truy cập được. Chính vì vậy chúng ta có ba tệp conf, mỗi tệp dành cho một loại tài khoản.

Liệu có nghĩa là tất cả các tệp liên quan đến User của Admin đều được lưu trữ trong tệp conf của Admin?
Không. Vì Admin là sự mở rộng của Reseller, và Reseller lại là sự mở rộng của User, nên Admin có thể đọc được dữ liệu từ cả ba tệp conf. Điều này cho phép nhà tạo skin chỉ cần định nghĩa tệp của User một lần trong một tệp conf để dùng cho cả ba loại tài khoản.

Ví dụ minh họa: Một skin “power_user” cho phép Admin xem ba tab liên kết đến trang Admin, Reseller và User. Một Reseller với cùng token sẽ chỉ thấy 2 tab tương ứng với Reseller và User, trong khi một User sẽ chỉ thấy một tab dẫn đến trang chính của họ.

Sử dụng kỹ thuật này, bạn có thể thay đổi giao diện của skin cho các cấp tài khoản khác nhau chỉ với một token duy nhất.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *