Jump to content
IPSViet.com

Sign in to follow this  
Bim

Template Logic & Template Tags

Recommended Posts

Hidden Content

    Give reaction to this post to see the hidden content.

TEMPLATE LOGIC

Nói về cách lập trình trong template ở các bản 3.x, mình rất ghét mỗi khi dùng if mà có nhiều else, template cho front end thì dùng dạng

Hidden Content

    Give reaction to this post to see the hidden content.

Còn có else thì nó chỉ hỗ trợ một else, thêm cái else nữa nó báo lỗi.

Hidden Content

    Give reaction to this post to see the hidden content.

Cho nên mỗi khi mà else nhiều quá thì phải quăng hẳn nó vào một cái <php> sau đó mới đưa giá trị xuống. Còn nói về template cho ACP còn khủng khiếp hơn, phải dùng thêm tùm lum các thứ để nó hiểu là code PHP như

Hidden Content

    Give reaction to this post to see the hidden content.

Qua 4.0 thì cảnh đó đã được giải thoát, cách lập trình template của IPS 4.0 đã đổi mới hoàn toàn. Mỗi template bit được viết trong 1 file *.phtml để có thể dễ dàng chỉnh sửa trong Dev Mode hoặc Designer Mode. Theo cá nhân mình thì cấu trúc của nó dễ nhìn hơn, giúp dễ dàng viết code PHP hơn cho template.

Ví dụ câu lệnh if

Hidden Content

    Give reaction to this post to see the hidden content.

Hidden Content

    Give reaction to this post to see the hidden content.

Câu lệnh foreach

Hidden Content

    Give reaction to this post to see the hidden content.

Hỗ trợ một vài shorcuts (viết tắt của một số giá trị thông dụng thường dùng)

  • request.var viết tắt của IPSRequest::i()->var
  • member.var viết tắt của IPSMember::loggedIn()->var
  • settings.var viết tắt của IPSSettings::i()->var
  • theme.var viết tắt của IPSTheme::i()->settings['var']
  • cookie.var viết tắt của IPSRequest::i()->cookie['var']

Ví dụ thay vì viết full code

Hidden Content

    Give reaction to this post to see the hidden content.

Bạn có thể viết tắt

Hidden Content

    Give reaction to this post to see the hidden content.

Nhìn vô cùng dễ thương phải ko?

Còn raw PHP thì dùng

Hidden Content

    Give reaction to this post to see the hidden content.

 

TEMPLATE TAGS

Để viết template tốt hơn, bạn cũng cần nắm rõ các tags, một vài tag bạn còn có thể dùng được trong CSS rất tiện lợi.

Một template tag có dạng

Hidden Content

    Give reaction to this post to see the hidden content.

Nếu có thêm option thì

Hidden Content

    Give reaction to this post to see the hidden content.

Language Strings

Hidden Content

    Give reaction to this post to see the hidden content.

Dùng hiển thị giá trị của ngôn ngữ.

Options:

  • sprintf dùng như 

    Hidden Content

      Give reaction to this post to see the hidden content.
  • pluralize chỉ dùng khi một chuỗi sử dụng pluralizing logic
  • wordbreak thêm cái <wbr> vào.

Dates & Times

Hidden Content

    Give reaction to this post to see the hidden content.

Dùng định dạng thời gian. Có thể dùng chung với HTML5 <time>

Options:

  • norelative hiển thị ngày tháng theo địa phương. Chỉ cần đặt nó norelative="true".
  • dateonly chỉ hiển thị ngày

Member Data

Hidden Content

    Give reaction to this post to see the hidden content.

Hiển thị thông tin của thành viên (đã đăng nhập). 

Options:

group trả về giá trị từ thông tin group của thành viên. Ví dụ IPSMember::loggedIn()->group[ $key ] - Để dùng nó chỉ cần đặt group="true".
id dùng nó với các thành viên với ID chỉ định, không phải là ID của thành viên đăng nhập.
raw đặt nó là raw="true" để chặn các lỗ hỏng XSS (rất ít dùng)

Settings

Hidden Content

    Give reaction to this post to see the hidden content.

Trả về giá trị của setting

Theme Settings

Hidden Content

    Give reaction to this post to see the hidden content.

Giá trị setting của theme

URLs (có thể dùng trong file CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Options:

seoTemplate giá trị dùng trong FURL Template
seoTitle title sử dụng cho Friendly URL
csrf nếu bật csrf="true" sẽ add key csrf vào url
fragment thêm #fragment vào cuối URL
noprotocol set noprotocol="true" sẽ trả về một URL không protocol
plain đưa về text gốc của URL không có các ký tự HTML mã hóa. Thường dùng cho plaintext email. Chỉ cần đặt plain="true"

Numbers

Hidden Content

    Give reaction to this post to see the hidden content.

Định dạng số dựa vào locale của user, ví dụ trên locale Việt Nam sẽ cho ra 1,000

File Size

Hidden Content

    Give reaction to this post to see the hidden content.

Định dạng dung lượng file. Ví dụ trên sẽ cho ra 1MB

Options:

decimal sử dụng decimal (1000 bytes = 1kB) thay vì binary (1024 bytes = 1kB).

CSS Prefixes (Có thể dùng trong file CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Thay vì dùng "-webkit-", "-moz-", "-ms-" and "-o-" cho transition, bạn chỉ cần dùng 1 dòng trên là đủ.

Template

Hidden Content

    Give reaction to this post to see the hidden content.

Đưa vào một template khác. Tất cả các option như trên là bắt buộc.

Images (có thể dùng trong CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Đưa về URL của file hình ảnh.

Expression (có thể dùng trong CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Thực hiện như PHP để trả về một giá trị.

Option:

raw đặt raw="true" để chặn các lỗ hỏng XSS.

Wordbreak (có thể dùng trong CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Thêm vào <wbr> nếu nội dung quá dài để tránh việc bị giãn layout.

Truncate (có thể dùng trong CSS)

Hidden Content

    Give reaction to this post to see the hidden content.

Cắt bớt text theo độ dài định sẵn.

Advertisements

Hidden Content

    Give reaction to this post to see the hidden content.

Hiển thị quảng cáo

 

Xong rồi, bài viết này đã mêu tả chi tiết về một template và liệt kê các template tags, là một admin của một site dùng IPS bạn không thể không biết những điều này, nó sẽ giúp ích rất nhiều cho bạn trong việc thiết kế theme, hay lập trình các plugins, apps về sau.

like
  • Like 8

Share this post


Link to post
Share on other sites

Bài viết rất chi tiết và bổ ích. Thanks bim. Mình cũng đang lần mò đóng docs của ips đây nhưng còn nhiều chỗ chưa hiểu (hoặc chưa thấy) bim có thể viết sơ sơ 1 tut về cái bbcode được ko

like

Share this post


Link to post
Share on other sites

V4 đã ko còn bbcode management nữa, thay vào đó là dùng trực tiếp kho plugin riêng của thằng ckeditor, down về và import vào. Muốn bbcode riêng phải viết hook, hôm nào bim viết tut.

like

Share this post


Link to post
Share on other sites

@Bim cho mình hỏi chút nhé. VD giờ muốn viết Hi username trên globaltemplate thì mình viết là Hi {member="name"} Nhưng nếu mình muốn chỉ hiện với group member thôi còn các group khác không hiện thì phải if thế nào, mình tìm hoài không ra

like

Share this post


Link to post
Share on other sites

Tự hỏi tự trả lời luôn

Hidden Content

    Give reaction to this post to see the hidden content.
nếu muốn in ra id của group thì viết

Hidden Content

    Give reaction to this post to see the hidden content.
like
  • Like 1

Share this post


Link to post
Share on other sites

Mình còn 1 câu hỏi nữa muốn hỏi bim là

mình viết Hi {member="name"} thì nó in ra tên rồi, giờ muốn nó hiển thị cả màu nick nữa thì phải làm sao. Hồi IPB 3 thì mình dùng IPSMember::makeNameFormatted nhưng không biết trên IPS4 thì phải làm sao

like

Share this post


Link to post
Share on other sites
{template="userLinkFromData" group="global" app="core" params="member.member_id, member.name, member.members_seo_name, member.member_group_id"}

 

like
  • Like 1

Share this post


Link to post
Share on other sites

hi, how do I make an array of that function?
 

Hidden Content

    Give reaction to this post to see the hidden content.

I tried

Hidden Content

    Give reaction to this post to see the hidden content.

and it did not work :(

like
Edited by Oprime

Share this post


Link to post
Share on other sites

hi, how do I make an array of that function?
 

Hidden Content

    Give reaction to this post to see the hidden content.

I tried

Hidden Content

    Give reaction to this post to see the hidden content.

and it did not work :(

It should be

Hidden Content

    Give reaction to this post to see the hidden content.

 

:)

like

Share this post


Link to post
Share on other sites
On 3/27/2015 at 2:13 PM, Bim said:

Hidden Content

    Give reaction to this post to see the hidden content.

 

like

@Bim cho mình hỏi với IPS 4.4 thì cách gọi user kèm với màu group vẫn như vậy hay có sự thay đổi nào khác không

like

Share this post


Link to post
Share on other sites
14 minutes ago, Bim said:

Chưa test nhưng hình như y chang đó

like

[[Template core/front/global/userLinkFromData is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

 

Max nhọ, không phải r bim ơi, mình chèn vào globalTemplate

like
Edited by backstrix

Share this post


Link to post
Share on other sites

Hidden Content

    Give reaction to this post to see the hidden content.

Thử này xem

like
  • Thanks 1

Share this post


Link to post
Share on other sites
12 hours ago, Bim said:

Hidden Content

    Give reaction to this post to see the hidden content.

Thử này xem

like

vẫn vậy, thôi để mình nghiên cứu thêm. 4-5 năm mới quay lại mò IPB, cái j cũng thấy mới :))

like

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...