דף הבית » טריקים וטיפים

הוספת קבצים גנריים, נוסף על header, footer ו-sidebar

3 באפריל 2010 | מאת רמי | 13 תגובות | תגיות: , , , , , , , ,

בגרסה 3.0 של וורדפרס שודרגה כל מערכת התבניות. השינויים שקופים למשתמש, וקיימת תאימות מלאה לאחור, אך מה שיותר מעניין בכל הסיפור הזה אלה הם המאפיינים החדשים אשר נוספו למערכת התבניות. תחילה אני אספר איך עובדת מערכת התבניות והשינויים שחלו לאורך הפיתוח, ובהמשך נרחיב על החידושים שהתווספו בגרסה 3.0.

מבנה תבנית

מערכת התבניות של וורדפרס משתמשת במערך (layout) בסיסי הכולל 3 חלקים – header, footer ו-sidebar. כך שלא משנה מה התוכן של העמוד, המבנה תמיד יהיה זהה בכל האתר מאחר והוא נקבע פעם אחת בקבצים יעודיים.

css_layout

css_layout

כאמור, המידע מוגדר פעם אחת בקבצים הבאים:

  • header.php
  • footer.php
  • sidebar.php

מערכת התבניות טרום גרסה 1.5

בגרסאות ישנות קראו לכל אחד מהקבצים בעזרת:

include(TEMPLATEPATH . '/header.php');
...content...
include(TEMPLATEPATH . '/sidebar.php');
include(TEMPLATEPATH . '/footer.php');

שדרוג מערכת התבניות בגרסה 1.5

כדי להקל על העבודה, בגרסה 1.5 של וורדפרס נוצרו פונקציות יעודיות הקוראות לכל אחד משלושת החלקים. הפונקציות הן:

  • get_header()
  • get_footer()
  • get_sidebar()

בגרסה 1.5 עודכנו קבצי התבניות למבנה הבא:

<?php get_header(); ?>
...content...
<?php get_sidebar(); ?>
<?php get_footer(); ?>

בגרסאות העוקבות הפונקציות שוכללו  ואיפשרו לנו ליצור מספר גרסאות לכל אחד משלושת החלקים הללו. דוגמא בסיסית היא יצירת תפריט ימני ותפריט שמאלי תוך שימוש בקוד הבא:

<?php get_sidebar('right'); ?>
...content...
<?php get_sidebar('left'); ?>

בצורה זו המערכת ניגשת לקובץ sidebar-right.php ולקובץ sidebar-left.php.

מבנה דו תפריטי

מבנה דו תפריטי

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

שדרוג מערכת התבניות בגרסה 3.0

בגרסה 3.0 התווספה האפשרות להוסיף חלקים נוספים לתבנית תוך שימוש בפונקציה חדשה בשם:

<?php get_template_part(); ?>

בתוך הסוגריים אנו מכניסים את שם החלק, למשל nav, כדי שהמערכת תיגש לקובץ nav.php . מה שיפה בטכניקה החדשה הוא שהמפתחים מקבלים יותר שליטה ועתה כל מפתח תבניות יכול ליצור קבצים גנריים משלו.

מבנה דו תפריטי עם תפריט ניווט

מבנה דו תפריטי עם תפריט ניווט

נציין שבדומה לשלושת החלקים הרגילים של התבניות, גם לחלקים החדשים שאתם יוצרים ניתן להכין מספר גרסאות. על מנת לקרוא לקבצים nav-1.php וכן nav-single.php אנו נשתמש בקוד הבא:

<?php get_template_part('nav', '1'); ?>
<?php get_template_part('nav', 'single'); ?>

מחשבות והתלבטויות

רבים יגידו שזה מיותר. גם אני חשבתי כך תחילה. הרי תמיד אפשר להכניס את כל תפריט הניוור בקובץ headre.php או ליצור קובץ בשם sidebar-nav.php שישמש את התפריט הניווט.

אבל אם נחשוב על זה קצת יותר לעומק, נבין שיש צורך בהפרדה מבנית, ב- header.php אמורות להופיע פקודות HTML החל מ ועד סיום וכל מה שקשור לתוכן שבא אחרי אמור להיות מופרד לקובץ אחר. אפשר להשתמש בקובץ sidebar-nav.php (שימוש בקבצי תפריטים צדדים לצורך ניווט עליון או ניווט תחתון) אבל אז אנו הורסים את ההיררכיה ואת ההיגיון הבסיסי שבחלוקת העמוד לקטעי משנה יעודיים.

היסטוריית השימוש בוורדפרס לימדה אותי שכל פעם שאמרו שמאפיין כזה או אחר הוא מיותר, אחרי שהוא התווסף למערכת רבים אמרו "איך עבדנו בלי זה?". מפתחים וכותבי תוספים תמיד מוצאים שימושים מאוד יצירתיים לפיצ'רים כאלה, ולדעתי הפונקציה החדשה תעשה לנו רק טוב.

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

13 תגובות »

  • צחי כותב :

    כל עוד האפשרות של תמיכה לאחור קיימת אז אין כלל ממה לחשוש…תודה על העדכון!

  • רמי כותב :

    אגב, לצורך כתיבת הפוסט, יצרתי בקודקס של וורדפרס את הערך של הפונקציה get_template_part ועדכנתי גם את הערך Include Tags, כדי שכולם יוכלו ליהנות מהעדכונים האלה בגרסה 3.0.

  • מאור כותב :

    חביב, אבל לא שינוי כזה גדול.
    גם כך אפשר היה להכניס איזה קבצים שונים שרוצים בעזרת include ולטפל בבלוקים שונים באתר.

  • רמי כותב :

    מאור אתה טועה, שימוש ב-include הוא פתרון פשוט שמצרף קובץ. אבל שימוש בסרגל הניווט החדש מאפשר לנו לערוך את הקישורים בסרגל הניווט מתוך מערכת הניהול, בדומה לוידג'טים.

  • רמי כותב :

    עדכון – עבר פרק זמן סביר מאז שוחררה גרסה 3.0. ניתן להגיד שהאימוץ של הפונקציה יהיה נרחב. רוב יוצרי תבניות הפרמיום אימצו את הפונקציה החדשה.

    אך הדוגמא הטובה ביותר היא התבנית twentyten, הם עשו שימוש בקובץ loop.php כדי לחסוך בשורות קוד. כדי לא לחזור על הלופ של וורדפרס בכל דף, הם יצרו קובץ יעודי. כשצריך להריץ את הלופ בדף מסויים הם קוראים לקובץ בעזרת הפונקציה:

    get_template_part('loop');

    פתרון גאוני.

  • יוראי כותב :

    רמי תודה זה מידע ממש מועיל

  • מדריך לבניית אתרים כותב :

    היי, ממש מועיל ומעניין. תודה רבה על שיתוף המידע.

  • משתמש אנונימי (לא מזוהה) כותב :

    This is insane

  • יצחק כותב :

    היי רמי,

    תודה רבה רבה על המידע,

    ניסיתי להשתמש בקוד הזה מספר פעמים, ויש לי בעיה איתו, כל פעם שאני מריץ את הקוד הזה, נוצרת לי שורה ריקה לפני המלל שרציתי להכניס מהקובץ החיצוני,
    יש לך איזה רעיון להשמיט את השורה הזאת? אולי איזה פונקציה REMOVE או שינוי בCSS או משהו אחר?

    תודה רבה רבה לך!!!

  • דנינו כותב :

    יש לי בעיה קטנה ,
    יש לי תבנית חמודה אבל אני מעונין להכניס לתוך מיקום הלוגו לוגו משלי דבר שאין שם הכל ריק ואני רוצה ליצור לוגו לתוך מיקום הלוגו אם היה הייתי מחליף תמונה ללוגו אבל אין כזאת יש מצב לקבל הדרכה איך אני מקבל הסבר להכניס לוגו לשם ?

    תודה מראש לכל העוזרים.

  • רמי כותב :

    דנינו, הכל תלוי במבנה הקוד של התבנית שלך. פנה למפתחי התבנית או לפורום התמיכה של וורדפרס.

  • ליאור מזור כותב :

    תודה על השיתוף – עזר לי מאוד… תמשיך ככה

    ליאור

  • ליאור מזור כותב :

    תודה על השיתוף – עזר לי מאוד… תמשיך ככה

הוסף תגובה !

נא לא לשאול שאלות שלא קשורות לפוסט, זהו לא פורום תמיכה. לבעיות אישיות ונושאים מורכבים אפשר ליצור איתי קשר.

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>