DCSIMG
jQuery Templates & Facebook– שימוש קל ופשוט - Don't Worry, Be Happy - Development is FUN

jQuery Templates & Facebook– שימוש קל ופשוט

פורסם בתאריך May 29 2011, 04:20 PM על ידי Arnold | ישנם תגובות
jQuery Templates הפכו לחלק חשוב בחיי מפתח UI, בעזרתם ניתן לפתח עמודים אינטראקטיביים בעלי מנשק משתמש נוח (עדיין תלוי ברמה של המפתח).
במאמר זה אדגים את השילוב של הפייסבוק עם ה templates.
jQuery Templates & Facebook– שימוש קל ופשוט
מה זה jQuery Templates?

תקראו את המאמר הקודם שלי: לחצו כאן

לעבודה!!!

קודם כל נבדוק ב facebook api את הצורה של הבקשות שלנו:

http://graph.facebook.com/arnold.simha/?callback=?

כפי שניתן לראות שאני מבקש את המידע אותו הפרופיל שלי:

?({
   "id": "792563441",
   "name": "Arnold Simha",
   "first_name": "Arnold",
   "last_name": "Simha",
   "link": "http://www.facebook.com/arnold.simha",
   "username": "arnold.simha",
   "gender": "male",
   "locale": "en_US"
});

כעת נכין את ה HTML שלנו:

<div id="myCard"></div>

עכשיו לחלק המעניין - ה template:

<script id="cardTemplate" type="text/x-jquery-tmpl">
    {{if thumbnail != "" }}
    <div id="thumbnail">
        <img src="${thumbnail}" alt="${name}" />
    </div>
    {{/if}}
    <div id="data">
         <div class="row">
            <label>Id: </label>${id}
        </div>
        <div class="row">
            <label>Name: </label><a href="${link}">${name}</a>
        </div>
        <div class="row">
            <label>User Name: </label>${username}
        </div>
        <div class="row">
            <label>Gender: </label>${gender}
        </div>
    </div>
</script>

כפי שאתם רואים שהמשתנים הדינאמיים נכתבים בצורה כזאת:

${name}

בנוסף יש לנו תנאי if אשר בודק אם יש תמונה אז הוא יציג אותה.

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

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery(function ($) {
        $.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
            console.log(data);
        });
    });
</script>

נריץ ונקבל את המידע:

image

אין לנו את האלמנט של התמונה (thumbnail). הסיבה היא שהקישור לתמונה הוא:

נוסיף לאובייקט שלנו את האלמנט:

$.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
    data.thumbnail = 'https://graph.facebook.com/arnold.simha/picture'
});

ודבר אחרון שנשאר זה לבנות את הטמפלט שלנו:

jQuery(function ($) {
    $.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
        data.thumbnail = 'https://graph.facebook.com/arnold.simha/picture'
        $("#cardTemplate").tmpl(data).appendTo("#myCard");
    });
});

נריץ ונקבל:

image

נשדרג את זה טיפה בעזרת CSS3:

<style type="text/css">
    body { font-size:12px; font-family:Arial; margin:0px; padding:0px; }
    #myCard  
    {
        background: #ffffff; /* Old browsers */
        background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
        background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
        background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Opera11.10+ */
        background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* IE10+ */
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
        background: linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* W3C */
        
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        border-radius: 10px;
        padding:10px;
        border:1px solid #ccc;
        width:300px;
        margin:15px;
        overflow:hidden;
    }
    
    #thumbnail, #data { float:left; }
    #thumbnail { width:50px; text-align:left; margin-right:10px }
    #thumbnail img { border:1px solid #ccc; padding:2px; background-color:#fff; }
    .row label  
    {
        display:inline-block;
        *display:inline;
        *zoom:1;
        width:80px;
        font-weight:bold;
    }   
</style>

ונקבל:

image

את הדמו תוכלו לראות כאן: לחץ כאן