Drupal cho phép bạn ghi đè tất cả các mẫu được sử dụng để tạo đánh dấu HTML để bạn có thể kiểm soát hoàn toàn đánh dấu đó
Drupal tải các mẫu dựa trên các quy ước đặt tên nhất định. Điều này cho phép bạn ghi đè các mẫu bằng cách thêm chúng vào chủ đề của bạn và đưa ra
Trang này so sánh PHPTemplate với Twig
Khi làm việc với tệp mẫu Twig, hầu hết các biến được ghi lại trong nhận xét cho tệp mẫu. Tuy nhiên, khi họ không, hoặc
Công cụ tạo khuôn mẫu Twig cung cấp một công cụ gỡ lỗi
Công cụ Twig cung cấp các tùy chọn để định cấu hình gỡ lỗi, tự động tải lại [biên dịch lại] các mẫu và lưu các mẫu đã biên dịch vào bộ đệm
Để biết mẫu nào đang tạo đánh dấu cho một phần tử cụ thể, bạn có thể sử dụng tùy chọn gỡ lỗi tích hợp của Twig. tùy chọn này
Bộ lọc trong Twig có thể được sử dụng để sửa đổi các biến. Các bộ lọc được phân tách khỏi biến bằng ký hiệu đường ống. Họ có thể có đối số tùy chọn
Twig cung cấp một số chức năng tiện dụng có thể được sử dụng trực tiếp trong Mẫu
Từ tài liệu chính thức của Twig. "Macro có thể so sánh với các chức năng trong ngôn ngữ lập trình thông thường. Chúng rất hữu ích để đặt thường xuyên
Thực hiện theo các phương pháp hay nhất này để cải thiện hiệu suất theo chủ đề Drupal 8, chuyển đổi lệnh gọi chủ đề Drupal 7 và cho phép tùy chỉnh mẫu Twig nhiều hơn
Ý tưởng chung trong Drupal 8 là bạn muốn tránh tạo html trực tiếp trong mã PHP của mô-đun tùy chỉnh của mình. Bạn muốn điều này đi
Chào mừng đến với thế giới của Twig. Twig là một ngôn ngữ tạo khuôn mẫu cho PHP, đây là một cách nói nhàm chán khi nói rằng đó là một công cụ được sử dụng để xuất các biến bên trong HTML. Nếu một dự án bạn đang thực hiện sử dụng Cành cây, thì bạn thật may mắn. thật dễ học, mạnh mẽ và vui vẻ khi làm việc cùng
Để làm cho điều này trở nên thú vị, hãy xây dựng thứ gì đó hữu ích với Twig như cửa hàng quần áo chim cánh cụt. Trên thực tế, tôi đã bắt đầu. Tôi có một thiết lập trang web nhỏ dưới gốc tài liệu của máy chủ web của tôi và một trang thử nghiệm có tên là
getName[] ?>
8Mẹo
Bạn muốn chạy mã này cục bộ?
Ngay bây giờ, tệp này chuẩn bị một số biến
getName[] ?>
1 và
getName[] ?>
2 và sau đó bao gồm một tệp khác// test.php
// setup some variables
$pageTitle = 'Suit Up!';
$products = array[
new Product['Serious Businessman', 'formal.png'],
new Product['Penguin Dress', 'dress.png'],
new Product['Sportstar Penguin', 'sports.png'],
new Product['Angel Costume', 'angel-costume.png'],
new Product['Penguin Accessories', 'swatter.png'],
new Product['Super Cool Penguin', 'super-cool.png'],
];
// render out PHP template
include __DIR__.'/templates/homepage.php';
Tệp
getName[] ?>
3 là mẫu thực tế. Nó có tất cả HTML và chúng tôi sử dụng
getName[] ?>
4 để lặp qua chúng và sau đó
getName[] ?>
5 để in ra một số biến
getName[] ?>
Thay vì sử dụng PHP, hãy viết mẫu của chúng ta bằng Twig. Mục tiêu của mẫu vẫn như cũ. để in ra các biến. Điều duy nhất sẽ thay đổi là cú pháp
Trong một tệp riêng, tôi đã thiết lập tất cả các công việc hậu trường để sử dụng Twig. Hãy bắt đầu bằng cách kết xuất một tệp
getName[] ?>
6 và một lần nữa chuyển nó sang các biến
getName[] ?>
1 và
getName[] ?>
2
getName[] ?>
1Nếu bạn tò mò về cách bạn thực sự thiết lập Twig, hãy xem mã tải xuống và xem tài liệu Cài đặt Twig
Nếu bạn là frontend developer thì không cần lo bước này. tất cả những gì bạn cần biết là vị trí của mẫu Twig và những biến nào bạn có quyền truy cập
Trong dự án của chúng tôi, Twig đang tìm kiếm các tệp mẫu trong thư mục
getName[] ?>
9, vì vậy hãy tạo
getName[] ?>
6 của chúng tôi ở đóGiống như trong PHP, bạn có thể viết bất cứ thứ gì và nó sẽ chỉ được hiển thị dưới dạng HTML trên trang
getName[] ?>
4Để xem tin nhắn tuyệt vời này, hãy truy cập tệp
getName[] ?>
11 trong trình duyệt của bạn. Điều này hoạt động vì chúng tôi đã tạo tệp
getName[] ?>
11 hiển thị mẫu
getName[] ?>
6. Bất cứ khi nào bạn đang tạo hoặc chỉnh sửa một trang, bạn sẽ cần tìm ra mẫu Twig nào đang được sử dụng cho trang đó. Không có khoa học chính xác về điều này và nó phụ thuộc vào cách ứng dụng của bạn được xây dựngHãy nhớ rằng chúng tôi đang chuyển một biến
getName[] ?>
1 vào mẫu của chúng tôi. Để hiển thị nó, hãy viết hai dấu ngoặc nhọn mở, tên của biến không có ký hiệu đô la, sau đó là hai dấu ngoặc nhọn đóng
getName[] ?>
9Khi chúng tôi làm mới trang, nó hoạt động. Chúng tôi vừa viết dòng đầu tiên của Cành cây. Bất cứ khi nào bạn muốn in một cái gì đó, chỉ cần mở Twig bằng hai dấu ngoặc nhọn, viết tên biến, sau đó đóng Twig. Một lát nữa chúng ta sẽ trở nên thú vị hơn với một số thứ được gọi là hàm và bộ lọc, nhưng đây là cú pháp cơ bản nhất trong Twig
Tiếp theo, biến
getName[] ?>
2 là một mảng mà chúng ta cần lặp qua. Twig đi kèm với thẻ for có thể lặp qua các mục giống như PHP's
getName[] ?>
4Hãy nhớ rằng bất kỳ thứ gì chúng ta nhập ở đây sẽ được in ra trên trang cho đến khi chúng ta "mở" Twig. Lần này, hãy mở Twig bằng cách gõ
getName[] ?>
17. Bây giờ chúng ta đang ở trong Cành cây, hãy sử dụng thẻ
getName[] ?>
18 để lặp qua
getName[] ?>
2.
getName[] ?>
40 sẽ là tên biến mà chúng tôi sử dụng cho mỗi mục khi chúng tôi lặp. Đóng Twig bằng cách thêm một
getName[] ?>
41 giống hệt. Không giống như khi chúng ta lặp lại biến
getName[] ?>
1, thẻ
getName[] ?>
18 cần một biến
getName[] ?>
44// test.php
// setup some variables
$pageTitle = 'Suit Up!';
$products = array[
new Product['Serious Businessman', 'formal.png'],
new Product['Penguin Dress', 'dress.png'],
new Product['Sportstar Penguin', 'sports.png'],
new Product['Angel Costume', 'angel-costume.png'],
new Product['Penguin Accessories', 'swatter.png'],
new Product['Super Cool Penguin', 'super-cool.png'],
];
// render out PHP template
include __DIR__.'/templates/homepage.php';
0Twig sẽ lặp qua từng mục trong
getName[] ?>
2 và thực hiện từng dòng trong khoảng từ
getName[] ?>
18 đến
getName[] ?>
44. Mỗi mục trong
getName[] ?>
2 chỉ là một chuỗi, vì vậy hãy in nó ra// test.php
// setup some variables
$pageTitle = 'Suit Up!';
$products = array[
new Product['Serious Businessman', 'formal.png'],
new Product['Penguin Dress', 'dress.png'],
new Product['Sportstar Penguin', 'sports.png'],
new Product['Angel Costume', 'angel-costume.png'],
new Product['Penguin Accessories', 'swatter.png'],
new Product['Super Cool Penguin', 'super-cool.png'],
];
// render out PHP template
include __DIR__.'/templates/homepage.php';
5Điều này hoạt động chính xác như trước đây. Chúng tôi có một biến
getName[] ?>
40, vì vậy chúng tôi có thể in nó bằng cách đặt nó bên trong hai dấu ngoặc nhọn mở và hai dấu ngoặc nhọn đóngVà khi chúng tôi làm mới, một Twig thành công khác. Chẳng bao lâu nữa, chúng ta sẽ có những chú chim cánh cụt đang bay
Vậy là chúng ta đã biết cách in một biến và cách lặp qua một biến là mảng hoặc tập hợp. Điều này có vẻ không nhiều, nhưng bạn đã thấy khá nhiều cú pháp của Twig. Để bắt đầu viết mã Twig trong HTML của bạn, chỉ có hai cú pháp khác nhau
Dấu ngoặc kép [
getName[] ?>
90] luôn được sử dụng để in một cái gì đó. Nếu bất cứ điều gì bạn cần làm sẽ dẫn đến một thứ gì đó được in ra màn hình, thì bạn sẽ sử dụng cú pháp này. Tôi gọi đây là thẻ "nói điều gì đó", bạn biết đấy, bởi vì đó là cách bạn "nói" trong TwigPhần trăm cong [
getName[] ?>
17] là cú pháp khác mà tôi gọi là cú pháp "làm gì đó". Nó được sử dụng cho những thứ như if và cho các thẻ cũng như những thứ khác "làm" điều gì đó.
getName[] ?>
17 thực sự dễ dàng vì chỉ có một số thứ có thể được sử dụng bên trong nó. Nếu bạn truy cập trang web của Twig, nhấp vào Tài liệu và cuộn xuống, bạn có thể thấy danh sách đầy đủ mọi thứ trong Twig. Tiêu đề "thẻ" hiển thị cho bạn mọi thứ có thể được sử dụng bên trong thẻ "làm gì đó", với nhiều chi tiết hơn về cách thức hoạt động của từng thứ này. Điều duy nhất bạn cần lo lắng bây giờ là nếu và vì. Chúng ta sẽ nói về một loạt những điều này sauVà đó là nó. Sử dụng cú pháp
getName[] ?>
90 "nói điều gì đó" để in và
getName[] ?>
17 "làm điều gì đó" khi bạn muốn làm một trong những điều trong danh sách này. Đây là hai cú pháp Twig duy nhất và chúng ta sẽ tìm hiểu thêm các công cụ có thể được sử dụng bên trong mỗi cú pháp nàyTrên thực tế, chúng tôi đã nói dối một chút. Có một cú pháp thứ ba, được sử dụng để bình luận.
getName[] ?>
95. Cũng giống như với cú pháp "nói điều gì đó" và "làm điều gì đó", hãy viết phần mở đầu
getName[] ?>
95 và cả phần kết thúc
getName[] ?>
97 ở cuối nhận xét của bạn
getName[] ?>
5Mẹo
Chúng tôi sẽ sử dụng cú pháp
getName[] ?>
98 trong phần còn lại của hướng dẫn này bất cứ khi nào chúng tôi ẩn một số phần của mẫu TwigBên trong Twig, khoảng trắng không thành vấn đề. điều này có nghĩa là chúng tôi có thể thêm hoặc xóa khoảng trắng bất cứ khi nào chúng tôi muốn
getName[] ?>
7Tất nhiên, điều này trông xấu hơn một chút, vì vậy chúng tôi thường chỉ giữ một khoảng cách giữa mọi thứ. Bên ngoài Twig [trong HTML cuối cùng], tất cả khoảng trắng được giữ giống như nó xuất hiện. Có nhiều cách để khiến Twig kiểm soát khoảng trắng trong tệp của bạn, chúng ta sẽ nói về điều này sau