Tại sao lại có tiền tố của template template_iêu và chủ đề_


7

Sự khác biệt giữa những cái này trong tên hàm là gì? Tôi có thể ghi đè lên từng cái trong template.php, vì vậy?


Bạn đã bỏ lỡ một chút rằng ... nó template_process_/ template_preprocess_. Đó là sự khác biệt - một là chức năng chủ đề, một là chức năng xử lý / tiền xử lý cho chủ đề
Clive

Vì vậy, họ đã sử dụng từ "mẫu" thay vì "chủ đề" chỉ để tránh xung đột tên?
xét thấy

1
Tôi không chắc chắn, đó là một câu hỏi hay! Tôi không thể nhận xét về động lực để đặt tên cho các chức năng đó (chúng quay lại một vài phiên bản Drupal, trước thời gian của tôi với CMS) nhưng tôi nghĩ đó là một sự phản hồi từ các quy ước về php_template của Drupal 5/6 hoặc một cái gì đó tương tự. Tôi chưa bao giờ hỏi tại sao họ làm điều đó, chỉ học cái nào sẽ sử dụng khi nào và ở đâu :)
Clive

Điều khiến nó khó hiểu hơn một chút là bạn có thể sử dụng MYMODULE_thay vì template_hoặc theme_trong một mô-đun tùy chỉnh cho bất kỳ mô-đun nào bạn viết. Vì vậy, về cơ bản, bạn có thể coi một trong hai như hook_trong một mô-đun. Đây không phải là một cái gì đó tôi có một nắm bắt tốt về bản thân mình. Tôi nghĩ rằng tôi cần đọc lại phản hồi của @ kiamlaluno một hoặc hai lần nữa. Câu hỏi thú vị.
cdmo

Câu trả lời:


3

Các hàm có tên bắt đầu bằng theme_ là các móc chủ đề, trong khi các hàm có tên bắt đầu bằng template_ là các hàm tiền xử lý và các hàm xử lý được thực hiện bởi mô đun thực hiện móc chủ đề tương đối.

Ví dụ: theme_image () là một hook hook theme hiển thị hình ảnh. template_pre process_node () là hàm tiền xử lý được thực hiện bởi mô đun Node, mô đun này thực hiện móc chủ đề nút . (Xem các dòng mã đầu tiên của node_theme () , triển khai hook_theme () được thực hiện bởi mô-đun Node.) Có các mô-đun khác có thể thực hiện chức năng tiền xử lý cho móc chủ đề nút , nhưng đối với các mô-đun đó, chức năng tiền xử lý đó được đặt tên MYMODULE_preprocess_node(), không template_preprocess_node().

Một chủ đề có thể thực hiện cả hook hook theme (xem bartik_menu_tree () ) và hàm tiền xử lý (xem bartik_pre process_node () ). Sự khác biệt là bartik_menu_tree()ghi đè cài đặt mặc định ( theme_menu_tree () ) khi chủ đề hiện tại là chủ đề Bartik, trong khi bartik_preprocess_node()không ghi đè template_preprocess_node(), nhưng nó được thực thi sau nó. (Xem tài liệu cho chủ đề () .)

Đối với việc sử dụng hai tiền tố, lý do là để ghi lại mục đích của hàm. Ngay cả khi theme_ được sử dụng trong cả hai trường hợp, sự khác biệt giữa theme_image()theme_preprocess_node()vẫn sẽ rõ ràng, nhưng nó sẽ yêu cầu bạn đọc những gì tiếp theo theme_. Với cách thực hiện hiện tại, bạn chỉ cần đọc từ đầu tiên của tên hàm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.