מדריך דרופל 7 – עיצוב ערכת עיצוב: tpl.php

‏ • Internet Israel

כאשר אנו נכנסים לדף מסוים בדרופל, המידע המופיע בדף קודם כל נאסף על ידי המערכת ממסד הנתונים, מעובד למשתני PHP ואז מודפס באמצעות קבצי ערכת העיצוב שהם קבצי PHP לכל דבר ועניין שהמשתנים בהם מגיעים מדרופל. כזכור לנו, כל ערכת עיצוב אמורה להיות תחת sites/all/themes. אם נסתכל על ערכת העיצוב garland שהעתקנו מבעוד מועד אל התיקיה. יש לנו את קובץ ה-info וקבצי ה-CSS שעליהם דיברנו במאמר. אנו נראה בנוסף לקבצי CSS גם קבצים הנגמרים בסיומת tpl.php אלו הם קבצים שערכת העיצוב משתמשת בהם. למה יש לנו יותר מקובץ אחד? זה תלוי בתכנים השונים ובערכת העיצוב הרלוונטית. באופן עקרוני דרופל מרנדרת את קבצי העיצוב על פי סדר היררכי – כך למשל קודם מרנדרים את ה-page, אחרי כן מרנדרים את ה-node שהוא התוכן בעצם ואז מרנדרים תוכן אחר כגון comments. נשמע מסובך? בואו ונסביר.

page.tpl.php

בואו ונפתח באמצעות וובמטריקס את page.tpl.php ונבחן אותו היטב:

page.tpl.php in webmatrix

אם נבחן היטב את הדף אנו נראה שהוא מורכב מ-HTML וממקומות שבהם משתני PHP מודפסים. את ה-HTML אין צורך להסביר והמשתנים הם משתני דרופל שמגיעים מהמערכת עצמה או ממקומות אחרים. בדף העיצוב אנו משתמשים אך ורק במשתנים ולא מבצעים פעולות חישוביות או מתכנתים משהו שהוא מעבר להדפסה. בסך הכל ה-HTML שמופיע ב-page.tpl.php ברובו זהה ל-HTML שאנו רואים, למעט התוכן – איפה התוכן? ה-HTML של התוכן מודפס באמצעות המשתנה:

<?php print render($page['content']); ?>

המשתנה הזו הוא התוכן של העמוד – כדי לבדוק את זה אפשר להכניס את האות A ואת האות B לפני התוכן ולראות:

דף

 

אבל מה יש בין A ל-B? מה זה המשתנה content הזה? זה בעצם ה-node, אותה יחידת תוכן בסיסית של דרופל. כל פריט תוכן נחשב כ-node. אחרי שדרופל יוצרת את ה-HTML הבסיסי עם page.tp.php היא עוברת ל-node.tpl.php ומרנדרת אותו.

node.tpl.php

בואו ונסתכל עליו באמצעות וובמטריקס:

node.tpl.php in webmatrix

אנו נראה שה-HTML שיש ב-node.tpl.php מופיע גם הוא בעמוד שלנו, בחלק של התוכן בין ה-A ל-B. על מנת להמחיש את זה נשים בתחילת הקובץ את האות C ובסוף הקובץ את האות D. זה מה שנקבל:

node

מה נראה אם נכנס לדף שיש בו כמה פריטי תוכן? כל פריט תוכן הוא בעצם node אז אנו נראה כמה פעמים את האותיות C ו-D (כיוון שכל node מרונדר באופן אוטומטי דרך node.tpl.php) אבל רק פעם אחת את האותיות A ו-B:

image

ישנם עוד כמה קבצי tpl.php ואנו יכולים ליצור אותם ספציפית לכל עמוד בהתאם ל-URL שלו או לקבוצת התוכן שלו. איך עושים את זה? נניח ויש לנו סוג תוכן של news:

image

על מנת ליצור עיצוב מיוחד אך ורק ל-node מסוג news, אנו נעתיק את node.tpl.php ל-node–news.tpl.php. לצורך העניין הנה דוגמא:

image

העיצוב שכתבנו ב-node–news.tpl.php יופיע בכל פריט תוכן מסוג news. אם אנו רוצים לטפל ב-node ממספר ספציפי למשל תוכן מסוים שכתובתו היא node/3,  אני אצור תבנית בשם node–3.tpl.php.

כמו שיש node.tpl.php ו-page.tpl.php, אנו יכולים ליצור גם block.tpl.php ולשנות את הבלוק בהתאם לפרמטרים שונים. כל הפרמטרים של ה-tpl.php נמצאים בדף הזה: http://drupal.org/node/1089656

כאשר אנו מכניסים סוג דף חדש, אנו צריכים לנקות את ה-cache של המערכת באמצעות כניסה לפאנל הניהולף לגשת להגדרות ואז אל ביצועים ולנקות את זכרון המטמון – עוד על זה באחד המאמרים הבאים.

תגיות: , , ,

רן בר-זיק

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.אינטרנט ישראל: www.internet-israel.com

תגובות בפייסבוק