Hướng Dẫn Sửa Giao Diện (Skin) Trong DirectAdmin | Sửa code skin DirectAdmin

Chào mừng bạn đến với dataonline. Hướng dẫn này được thiết kế để giúp bạn bắt đầu thực hiện chỉnh giao diện code skin DirectAdmin đầu tiên của mình. Hệ thống skin (giao diện, theme) rất đơn giản trong thiết kế nhưng có thể rất mạnh mẽ khi sử dụng đúng cách. Những điểm chính bạn cần hiểu là:

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

Hệ Thống Token – code skin DirectAdmin

Định nghĩa: Token là một tên đại diện cho một giá trị được lưu trữ trong bộ nhớ. Khi tên này được sử dụng giữa các dấu gạch dọc | (shift+backslash), hệ thống token của DirectAdmin sẽ thay thế tên và các dấu gạch dọc với giá trị đã được gán cho nó. Ví dụ:

Token name: USERNAME

Token value: Gary

Use: Hello |USERNAME|, how are you today?

Result: Hello Gary, how are you today?

Giá trị của token có thể là bất kỳ chuỗi nào và có thể chứa ký tự xuống dòng. Các token được sử dụng khá thường xuyên trong DirectAdmin để hiển thị các bảng đầy đủ (<table> đến </table>) nhằm trình bày thông tin cho người dùng. DirectAdmin tự động tải trước nhiều token có thể 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ể tìm thấy trong tài liệu token.

Càng có nhiều quyền hạn trong tài khoản DirectAdmin của bạn, bạn càng có nhiều Default Tokens. Ví dụ, một Quản trị viên có token mặc định có thể xem tổng băng thông sử dụng của toàn bộ máy chủ, trong khi một Người dùng không thể thấy token này. Điều quan trọng cần lưu ý là vì Quản trị viên là một phần mở rộng của Người dùng, nên bất kỳ giá trị nào mà Người dùng có thể thấy, Quản trị viên cũng có thể thấy.

Webpages Nhúng

Giống như tất cả các skin, có rất nhiều trang web được sử dụng để tạo ra skin. Có thể có một trang dành cho tài khoản email, một trang khác dành cho cơ sở dữ liệu, danh sách này khá dài. Tuy nhiên, giữa tất cả những trang web đó, có những điểm tương đồng chung thường xuyên xuất hiện. Những điểm này thường bao gồm tiêu đề và chân trang của trang, cũng như một vài thứ khác như bảng kiểu (style sheets) và tài liệu javascript. Cách đơn giản nhất để tạo tất cả các trang này là sao chép và dán tiêu đề và chân trang vào từng trang một cách thủ công, rồi điền nội dung vào giữa chúng. Mặc dù cách này có thể hoạt động, nhưng nếu bạn phát hiện một lỗi chính tả trong tiêu đề ví dụ, bạn sẽ phải tìm và thay đổi lỗi đó qua từng trang một cách thủ công vô số lần.

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

Liệu có hợp lý hơn khi chỉ viết tiêu đề và chân trang MỘT LẦN, lưu chúng vào các tệp riêng và chèn vào phần trên và dưới của mỗi trang mà chúng ta muốn không? Tất nhiên là hợp lý rồi! Và bạn biết không, bạn có thể làm được!

DirectAdmin hỗ trợ webpages nhúng, cho phép bạn làm điều đó, chèn các tài liệu khác vào trang web của bạn, bất cứ đâu bạn muốn. Hãy xem một ví dụ đơn giản:

Văn bản cần hiển thị trong tiêu đề: Chào mừng đến với DirectAdmin!
Văn bản cần hiển thị trong chân trang: Đây là phần cuối của tệp.

Tạo một tệp, gọi là header.html. Sau đó chèn những gì bạn muốn vào tiêu đề: Chào mừng đến với DirectAdmin!

Tiếp theo, tạo một tệp khác và gọi là footer.html để vui vẻ: 
Chèn văn bản: Đây là phần cuối của tệp.

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

|HTM_HEADER|

Chào bạn, đây là nội dung trang web của tôi. Nội dung này sẽ thay đổi cho
mỗi trang web, nhưng văn bản phía trên và dưới sẽ không thay đổi.

|HTM_FOOTER|

Kết quả của trang web này sẽ là:

Chào mừng đến với DirectAdmin!

Chào bạn, đây là nội dung trang web của tôi. Nội dung này sẽ thay đổi cho
mỗi trang web, nhưng văn bản phía trên và dưới sẽ không thay đổi.

Đây là phần cuối của tệp.

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

Chuyển giá trị giữa các trang

Rất thường xuyên, bạn sẽ cần chuyển một số dữ liệu giữa các trang. Lý do chính để làm điều này là để giữ một mảnh dữ liệu giống nhau, và chèn nó vào mỗi trang một cách động. Ví dụ, một Người dùng có thể có nhiều hơn một tên miền, vì vậy nếu họ tạo một tài khoản email, chúng ta sẽ muốn biết tên miền mà tài khoản email sẽ được tạo ra. Để làm điều này, chúng ta sẽ chuyển tên miền giữa tất cả các trang từ nơi chúng ta chọn tên miền cho đến trang web nơi chúng ta tạo email. Cách chúng ta làm điều này là sử dụng 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ị của nó sau tên tệp mà chúng ta muốn hiển thị.

http://www.domain.com:2222/HTM_EMAIL_POP_CREATE?DOMAIN=domain.com
Điều này sẽ hiển thị trang web liên kết với HTM_EMAIL_POP_CREATE và thay thế bất kỳ
trường hợp nào của |DOMAIN| với domain.com

Bạn có thể chuyển nhiều token bằng cách sử dụng phương pháp này bằng cách đơn giản sử dụng ký tự &. Ví dụ:

http://www.domain.com:2222/HTM_SOME_PAGE?DOMAIN=domain.com&name=gary
Điều này sẽ hiển thị tệp liên kết với HTM_SOME_PAGE và thay thế tất cả
trường hợp của |DOMAIN| với domain.com và tất cả trường hợp của |name| với gary.

Thêm Token vào trong trang web code skin DirectAdmin

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

header.html: (HTM_HEADER)

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

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

|?TITLE=Đây là Tiêu đề DirectAdmin!|
|HTM_HEADER|
Nội dung trang
|HTM_FOOTER|

Như bạn có thể 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ị bên phải dấu “=” sẽ được chèn vào token, sau đó được lưu vào bộ nhớ. Bất kỳ yêu cầu nào đối với |TITLE| sẽ chèn văn bản “Đây là Tiêu đề DirectAdmin!” vào tiêu đề của trang web.

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

  • Chỉ thiết lập một token trên mỗi dòng, tức là bạn chỉ có thể gán một token trên mỗi dòng và toàn bộ chuỗi từ |? đến | không thể trải dài qua nhiều dòng.
  • Luôn thiết lập token với giá trị mà bạn muốn sử dụng trước khi bạn cố gắng sử dụng nó. Làm ngược lại sẽ giống như ăn một chiếc bánh và sau đó mới cắt
  • Bạn có thể sử dụng các token nhúng bên trong giá trị, nhưng thay vì sử dụng dấu gạch dọc |, bạn sẽ dùng ký tự “ (dấu backtick, nằm phía bên trái số 1 trên bàn phím).
    |?TITLE=Chào mừng đến với DirectAdmin `USERNAME`|
    Điều này sẽ thiết lập tiêu đề của trang web là: "Chào mừng đến với DirectAdmin gary"
    (giả sử bạn đã thêm token tiêu đề như trong ví dụ trên).
  • Bạn có thể thiết lập token bất kỳ lúc nào bạn muốn, mỗi lần bạn thiết lập nó sẽ ghi đè lên giá trị cũ.
  • Bạn có thể ghi đè bất kỳ token nào trong bộ nhớ, bao gồm các token mặc định, token được truyền từ GET, và token được tạo ra 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 về skin này chủ yếu sử dụng chỉ các loại tệp HTM_ để truy cập dữ liệu trong các tệp cấu hình. Trên thực tế, DirectAdmin sử dụng nhiều lệnh khác ngoài HTM_ vì một skin với văn bản thuần túy sẽ rất đơn giản. Dưới đây là danh sách các lệnh:

  • HTM_: Dùng cho các tệp HTML cơ bản.
  • IMG_: Dùng cho hình ảnh mọi loại.
  • CSS_: Dùng cho bảng kiểu (style sheets).
  • CMD_: Dùng cho các lệnh thay đổi máy chủ.
  • DYN_: Dùng cho các token động.

Giải thích chi tiết về từng loại:

  • HTM_: Dùng cho các tệp HTML cơ bản. Nó không thực thi bất kỳ hành động nào, có nghĩa là không có gì thay đổi trên máy chủ khi hoàn thành.
  • IMG_: Dùng cho hình ảnh. Ví dụ: <img src=”IMG_LOGO”>, trong tệp cấu hình: IMG_LOGO=images/logo.gif.
  • CSS_: Dùng cho bảng kiểu. Chức năng của nó giống như HTM_ và sẽ được phân tích cú pháp để thay thế các token. Nó có thể được chèn vào trang bằng cách sử dụng |CSS_NAME| hoặc có thể được nhập khẩu bằng <style src=”CSS_NAME”>.
  • CMD_: Có thể nói đây là loại quan trọng nhất. Nó hoạt động giống như HTM_ ngoại trừ việc DirectAdmin sẽ thực hiện một số công việc để lấy thông tin không phải mặc định hoặc thay đổi máy chủ khi hoàn thành (ví dụ: tạo tài khoản email). Những lệnh này thường tạo ra các token không phải mặc định mà chỉ có thể truy cập sau khi lệnh được thực hiện.
  • DYN_: Đây 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 khi tệp đó được gọi. Ví dụ:Tệp HTM_FILE được gọi bằng /HTM_FILE?DYN_NAME=HTM_USER
    Nội dung của tệp HTM_FILE:
    Đây là một token: |DYN_NAME|
    Cuối tệp

Điều này sẽ chèn HTM_USER vào token DYN_NAME trong tệp. HTM_USER sau đó được coi là một token và nội dung của HTM_USER sẽ được chèn vào. Về cơ bản, bạn có thể chọn tệp nào sẽ được chèn vào token khi gọi nó. Tính năng này không được sử dụng trong bất kỳ skin nào của DirectAdmin, nhưng có thể hữu ích cho một số nhà thiết kế skin.

Ba tệp cấu hình chính để lưu trữ thông tin đường dẫn

Như đã đề cập trước đó, các token HTM_ phải được liên kết với một tệp cụ thể. Các tệp cấu hình là cách để thực hiện điều này. Định dạng của một tệp cấu hình rất đơn giản, chúng ta sẽ sử dụng header và footer làm ví dụ:

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 “=” là tên mà bạn sử dụng để truy cập vào tệp, còn giá trị bên phải là đường dẫn đến tệp đó. Như bạn có thể thấy, bạn có thể sử dụng tệp HTM_ dưới dạng token hoặc dưới dạng webpages. Ví dụ: bạn có thể nhập 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| trong một tệp khác để chèn nó.

Bây giờ chúng ta đã xác định được các tệp này có tác dụng gì, hãy thảo luận về lý do tại sao lại có ba tệp này.

Có ba loại tài khoản trong hệ thống DirectAdmin, đó là Quản trị viên (Admin), Đại lý bán lại (Reseller), và Người dùng (User). Mỗi loại tài khoản có quyền truy cập khác nhau và có thể thực hiện các hành động khác nhau. Người dùng là loại tài khoản có quyền hạn thấp nhất trong ba loại. Tài khoản Đại lý bán lại được xây dựng từ tài khoản Người dùng, nhưng có nhiều tính năng và công cụ hơn. Điều này là vì Đại lý bán lại là Người dùng, nhưng có một bộ lệnh hoàn chỉnh hơn bao quanh bộ lệnh Người dùng hiện có. Quản trị viên cũng tương tự, là phần mở rộng của Đại lý bán lại. Điều này có nghĩa là Quản trị viên là Đại lý bán lại và là Người dùng, do đó họ có thể làm bất cứ điều gì ở bất kỳ cấp độ quyền truy cập nào.

“Điều này áp dụng như thế nào vào skin?” bạn hỏi. 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 mà Đại lý bán lại có thể xem nhưng Người dùng không thể xem, cũng như các trang mà Quản trị viên có thể xem nhưng Đại lý bán lại không thể xem. Chính vì lý do này, chúng ta có ba tệp, mỗi tệp cấu hình cho một loại tài khoản.

Liệu tất cả các tệp của Người dùng mà Quản trị viên sử dụng sẽ được lưu trữ trong tệp cấu hình của Quản trị viên? Không. Vì Quản trị viên là phần mở rộng của Đại lý bán lại, mà Đại lý bán lại lại là phần mở rộng của Người dùng, Quản trị viên sẽ có thể đọc tất cả dữ liệu từ cả ba tệp. Điều này cho phép người tạo skin chỉ cần định nghĩa một tệp của Người dùng trong một tệp cấu hình duy nhất cho tất cả ba loại tài khoản.

Vậy làm thế nào để hệ thống hoạt động? Khi một Quản trị viên muốn truy cập tệp của Người dùng, chẳng hạn như HTM_EMAIL, đầu tiên, DirectAdmin sẽ cố gắng tìm tên đó trong tệp cấu hình của Quản trị viên. Nếu tìm thấy, hệ thống sẽ sử dụng tệp liên kết và gửi nó cho khách hàng. Nếu không tìm thấy, hệ thống sẽ tìm trong tệp cấu hình của Đại lý bán lại, sau đó đến tệp cấu hình của Người dùng, dừng lại khi tìm thấy tệp trong bất kỳ tệp cấu hình nào. Trong ví dụ này, HTM_EMAIL là một trang web của Người dùng, vì vậy Quản trị viên sẽ tìm thấy nó trong tệp cấu hình của Người dùng.

Quy trình hoạt động như sau: Hệ thống bắt đầu tìm trong tệp cấu hình của cấp độ quyền truy cập hiện tại, tìm kiếm tên. Nếu tìm thấy tên, nó sẽ trả về đường dẫn đến tệp; nếu không tìm thấy, hệ thống sẽ tiếp tục tìm trong tệp cấu hình của cấp độ quyền truy cập thấp hơn.

Tại sao không chỉ lưu tất cả tên và đường dẫn tệp trong một tệp cấu hình lớn? Lý do là vì sức mạnh thực sự của hệ thống nằm ở đây. Giả sử bạn muốn có một không gian chứa một số dữ liệu sẽ hiển thị cho tất cả các tài khoản ở mọi cấp độ. Vấn đề duy nhất là bạn muốn dữ liệu đó hiển thị khác nhau cho mỗi loại tài khoản. Để giải quyết vấn đề này, bạn chỉ cần tạo tên HTM_ trong tất cả ba tệp cấu hình và chỉ định chúng đến các tệp khác nhau trong mỗi tệp cấu hình. Điều này sẽ cho phép sử dụng cùng một token cho tất cả mọi người nhưng với dữ liệu khác nhau cho mỗi loại tài khoản. Đây là vì DirectAdmin sẽ bắt đầu tìm kiếm trong tệp cấu hình của cấp độ quyền truy cập hiện tại và dừng lại khi tìm thấy tên.

Ví dụ thực tế: Một ví dụ về điều này có thể thấy trong skin power_user. Một Quản trị viên sẽ thấy ba tab liên kết đến trang Quản trị viên, Đại lý bán lại hoặc Người dùng. Một Đại lý bán lại với cùng một token sẽ chỉ thấy hai tab liên kết đến trang Đại lý bán lại hoặc Người dùng. Cuối cùng, một Người dùng với token đó sẽ không thấy bất kỳ tab nào, vì sẽ chỉ có một tab duy nhất liên kết đến trang chính của họ.

Bằng cách sử dụng kỹ thuật này, bạn có thể dễ dàng thay đổi giao diện của skin cho các cấp độ tài khoản khác nhau, trong khi chỉ sử dụng một token để làm việc đó.

Để 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 *