יום שלישי, 2 ביולי 2013

באג מרגיז בהטמעה (Embedding) של מצגת תמונות מאלבומי פיקאסה (ופתרון, כמובן)

אפשרויות השיתוף של אלבומי פיקאסה-ווב


כשרוצים לשתף באתר אינטרנט כלשהו אלבום ששמור בשירות הרשת של פיקאסה (Picasa web), יש כמה דרכים לעשות את זה.

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

Wild flowers & more


אפשרות מודרנית וידידותית יותר (שגם שומרת על הגולשים בתוך האתר שלכם), היא להטמיע באתר שלכם מצגת, שמריצה את התמונות שבאלבום. הנה, ככה:


את קוד ה-HTML המובנה לשתי האפשרויות הללו, מקבלים מהאתר של פיקאסה, מתוך אפשרויות השיתוף שמוצגות באלבום - 
Share options - Picasa web albums
אפשרויות שיתוף - אלבום פיקאסה ווב

אז איפה הבעיה?

 

מה עושה לחיצה על לחצן ה-Play במצגת?

אחרי שמטמיעים מצגת תמונות בתוך אתר חיצוני (אחד שלא שייך לרשת האתרים של גוגל), מקבלים את התוצאה הנחמדה הבאה -
picasa embedded slideshow
מה עושה ה-Play ?



ומה קורה כשהמשתמש לוחץ על ה-Play הירוק?

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

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


איך מבטלים את הקישור חזרה לאתר של פיקאסה?

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

כך או כך, בין הפורומים והאתרים הופיע גם הפיתרון לבעיה המרגיזה הזו, והנה הוא לפניכם.


הקוד המקורי שמקבלים באתר של פיקאסה

אחרי שלוחצים באתר של פיקאסה על "Embed Slideshow" ובוחרים את הרזולוציה הרצויה (ועוד מספר פרמטרים), מקבלים קוד HTML שאותו שותלים באתר שלכם, והוא זה שאחראי למצגת.


הנה דוגמא לאיך שהוא נראה במקור:
<embed type="application/x-shockwave-flash" src="https://static.googleusercontent.com/external_content/picasaweb.googleusercontent.com/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&noautoplay=1&hl=en_US&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F109795672183356067478%2Falbumid%2F5869760751293184337%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>


הפתרון לביטול הקישור לאתר של פיקאסה, הוא לשתול באמצע הקוד הזה פרמטר נוסף, שפיקאסה (שזה בעצם גוגל) לא חשבו במקור לתת למשתמש לשלוט עליו.  הפרמטר שצריך לשתול הוא -
 &up_CLP=No


וכך נראה קוד ה-HTML אחרי הוספת הפרמטר הזה -
<embed type="application/x-shockwave-flash" src="https://static.googleusercontent.com/external_content/picasaweb.googleusercontent.com/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&noautoplay=1 &up_CLP=No&hl=en_US&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F109795672183356067478%2Falbumid%2F5869760751293184337%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>


אצלי, זה פתר את הבעיה, כך שכשהמשתמש לוחץ על ה-Play, המצגת מתחילה לרוץ, והמשתמש לא מועבר לשום אתר אחר.
ועל זה אמרו אבותינו....א-מחייה.