ווידג'ט החיפוש מספק ממשק חיפוש שניתן להתאים אישית לאפליקציות אינטרנט. כדי להשתמש בווידג'ט צריך להשתמש רק ב-HTML וב-JavaScript. הפיצ'ר הזה מאפשר תכונות חיפוש נפוצות כמו מאפיינים ועימוד. תוכלו גם להתאים אישית חלקים בממשק באמצעות CSS ו-JavaScript.
אם אתם צריכים יותר גמישות מהווידג'ט, כדאי להשתמש ב-Query API. למידע על יצירת ממשק חיפוש באמצעות Query API, קראו את המאמר יצירת ממשק חיפוש באמצעות Query API.
פיתוח ממשק חיפוש
ליצירת ממשק החיפוש נדרשים מספר שלבים:
- הגדרה של אפליקציית חיפוש
- יצירת מזהה לקוח עבור האפליקציה
- הוספת תגי עיצוב של HTML בתיבת החיפוש ובתוצאות החיפוש
- טעינת הווידג'ט בדף
- מפעילים את הווידג'ט
הגדרה של אפליקציית חיפוש
בכל ממשק חיפוש חייבת להיות מוגדרת אפליקציית חיפוש במסוף Admin. אפליקציית החיפוש מספקת מידע נוסף על השאילתה, כמו מקורות הנתונים, המאפיינים והגדרות האיכות של החיפוש.
כדי ליצור אפליקציית חיפוש, קראו את המאמר יצירת חוויית חיפוש בהתאמה אישית.
יצירת מזהה לקוח עבור האפליקציה
בנוסף לשלבים של הגדרת גישה ל-Google Cloud Search API, צריך גם ליצור מזהה לקוח לאפליקציית האינטרנט.
כשמגדירים את הפרויקט:
- בוחרים את סוג הלקוח דפדפן אינטרנט
- מציינים את URI המקור של האפליקציה.
- הערה על מספר הלקוח שנוצר. כדי לבצע את השלבים הבאים, תצטרכו את מספר הלקוח. הסוד של הלקוח לא נדרש עבור הווידג'ט.
למידע נוסף, ראו OAuth 2.0 לאפליקציית אינטרנט בצד הלקוח.
הוספת תגי עיצוב של HTML
הווידג'ט דורש כמות קטנה של HTML כדי לפעול. עליכם לספק את הפרטים הבאים:
- אלמנט
input
עבור תיבת החיפוש. - רכיב לעיגון החלון הקופץ של ההצעה.
- רכיב שמכיל את תוצאות החיפוש.
- (אופציונלי) מספקים רכיב שמכיל את פקדי ההיבטים.
קטע הקוד הבא ב-HTML מציג את ה-HTML של ווידג'ט חיפוש. במקום שבו הרכיבים שרוצים לקשר מזוהים, המאפיין: id
.
טעינת הווידג'ט
הווידג'ט נטען באופן דינמי באמצעות סקריפט לטעינה. כדי לכלול את הטוען, משתמשים בתג <script>
כפי שמוצג כאן:
עליך לספק קריאה חוזרת (callback) של onload
בתג הסקריפט. הפונקציה נקראת כשהמכונה מוכנה. כשהמאגר מוכן, ממשיכים לטעון את הווידג'ט על ידי קריאה ל-gapi.load()
כדי לטעון את המודולים של לקוח API, כניסה באמצעות Google ו-Cloud Search.
הפונקציה initializeApp()
נקראת אחרי שכל המודולים נטענים.
מפעילים את הווידג'ט
קודם כול, מפעילים את ספריית הלקוח על ידי קריאה ל-gapi.client.init()
או ל-gapi.auth2.init()
עם מזהה הלקוח שנוצר ועם ההיקף https://www.googleapis.com/auth/cloud_search.query
. בשלב הבא צריך להשתמש בכיתות gapi.cloudsearch.widget.resultscontainer.Builder
ו-gapi.cloudsearch.widget.searchbox.Builder
כדי להגדיר את הווידג'ט ולשייך אותו לרכיבי ה-HTML.
הדוגמה הבאה מראה איך להפעיל את הווידג'ט:
הדוגמה שלמעלה מתייחסת לשני משתנים עבור ההגדרה שהוגדרה:
התאמה אישית של חוויית הכניסה
כברירת מחדל, הווידג'ט מבקש מהמשתמשים להיכנס ולאשר לאפליקציה את האפליקציה כשהם מתחילים להקליד שאילתה. אתם יכולים להשתמש בכניסה באמצעות חשבון Google לאתרים כדי להציע למשתמשים חוויית כניסה מותאמת יותר.
מתן הרשאה למשתמשים ישירות
אתם יכולים להשתמש בכניסה באמצעות חשבון Google כדי לעקוב אחר מצב הכניסה של המשתמשים, וכדי להיכנס לחשבון או לצאת ממנו לפי הצורך. לדוגמה: בדוגמה של המצב isSignedIn
אפשר לעקוב אחרי השינויים בכניסה לחשבון, והמערכת משתמשת בשיטה GoogleAuth.signIn()
כדי להיכנס לחשבון באמצעות לחיצה על לחצן:
לפרטים נוספים אפשר לעיין במאמר כניסה באמצעות חשבון Google.
כניסה אוטומטית של משתמשים
כדי לייעל עוד יותר את תהליך הכניסה, תוכלו לאשר מראש את הבקשה בשם המשתמשים בארגון. אפשר להשתמש בשיטה הזו גם אם משתמשים ב-Cloud Identity Aware Proxy כדי להגן על האפליקציה.
למידע נוסף, עיינו במאמר שימוש בכניסה באמצעות חשבון Google עם אפליקציות IT.
התאמה אישית של הממשק
תוכלו לשנות את המראה של ממשק החיפוש באמצעות שילוב של טכניקות:
- שינוי הסגנונות באמצעות CSS
- מקשטים את האלמנטים בעזרת מתאם
- יצירת רכיבים מותאמים אישית באמצעות מתאם
שינוי הסגנונות באמצעות CSS
לווידג'ט החיפוש יש שירות CSS משלו לסגנון ורכיבי תוצאות, וגם לפקדי העימוד. אפשר לעצב מחדש את הרכיבים האלה לפי הצורך.
במהלך הטעינה, ווידג'ט החיפוש טוען באופן דינמי את גיליון הסגנונות שמוגדר כברירת מחדל. המצב הזה מתרחש אחרי שגיליונות הסגנונות של האפליקציות נטענים, כך שעדיפות הכללים גבוהה יותר. כדי להבטיח שהסגנונות שלכם יקבלו עדיפות על פני הסגנונות המוגדרים כברירת מחדל, תוכלו להשתמש בבוררי האב כדי להגביר את הספציפיות של כללי ברירת המחדל.
לדוגמה, הכלל הבא לא יושפע אם הוא נטען בתג link
או בתג style
במסמך.
.cloudsearch_suggestion_container {
font-size: 14px;
}
במקום זאת, הגדירו את הכלל בהתאם למזהה או למחלקה של מאגר האבות המוצהר בדף.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
רשימה של מחלקות תמיכה ו-HTML לדוגמה שהופקה על ידי הווידג'ט מופיעה בקובצי ה-CSS הנתמכים.
מקשטים את האלמנטים בעזרת מתאם
כדי לקשט רכיב לפני העיבוד, צריך ליצור ולרשום מתאם שמטמיע את אחת משיטות העיצוב, כמו decorateSuggestionElement
או decorateSearchResultElement.
לדוגמה, המתאמים הבאים מוסיפים מחלקה מותאמת אישית להצעה ולרכיבי התוצאה.
כדי לרשום את המתאם כשמפעילים את הווידג'ט, צריך להשתמש בשיטה setAdapter()
של המחלקה Builder
המתאימה:
דקורטיביים עשויים לשנות את המאפיינים של רכיב הקונטיינר וגם כל רכיב צאצא. במהלך ההגדרה אפשר להוסיף או להסיר רכיבי צאצא. עם זאת, אם מבצעים שינויים מבניים ברכיבים, כדאי ליצור את הרכיבים ישירות במקום לקשט אותם.
יצירת רכיבים מותאמים אישית באמצעות מתאם
כדי ליצור רכיב מותאם אישית להצעה, למאגר מאפיינים או לתוצאת חיפוש, צריך ליצור ולרשום מתאם שמטמיע את createSuggestionElement
, createFacetResultElement
או createSearchResultElement
באופן רספונסיבי.
המתאמים הבאים ממחישים יצירת רכיבים מותאמים אישית עם הצעות ותוצאות חיפוש באמצעות תגי <template>
של HTML.
כדי להציב מחדש את המתאם כשמפעילים את הווידג'ט, צריך להשתמש בשיטה setAdapter()
של המחלקה Builder
המתאימה:
יצירת רכיבי היבט מותאמים אישית באמצעות createFacetResultElement
כפופה למספר הגבלות:
- צריך לצרף את מחלקת ה-CSS
cloudsearch_facet_bucket_clickable
לאלמנט שהמשתמשים לוחצים עליו כדי להחליף בין קטגוריות. - צריך להקיף את כל הקטגוריות ברכיב שמכיל את רמת ה-CSS
cloudsearch_facet_bucket_container
. - אי אפשר לעבד את הקטגוריות בסדר אחר מזה שהן מופיעות בתגובה.
לדוגמה, קטע הקוד הבא מעבד היבטים באמצעות קישורים במקום תיבות סימון.
התאמה אישית של התנהגות החיפוש
ההגדרות של אפליקציית חיפוש מייצגות את הגדרת ברירת המחדל של ממשק חיפוש, והן סטטיות. כדי להטמיע מסננים או היבטים דינמיים, כמו לאפשר למשתמשים להחליף בין מקורות נתונים, אפשר לשנות את ההגדרות של אפליקציית החיפוש על ידי יירוט בקשת החיפוש באמצעות מתאם.
חשוב להטמיע מתאם באמצעות השיטה interceptSearchRequest
כדי לשנות את הבקשות שנשלחות ל-Search API לפני הביצוע.
לדוגמה, המתאם הבא מיירט בקשות להגבלת שאילתות למקור שנבחר על ידי משתמשים:
כדי לרשום את המתאם כשמפעילים את הווידג'ט, משתמשים בשיטה setAdapter()
כשבונים את ResultsContainer
ה-HTML הבא משמש להצגת תיבת בחירה לסינון לפי מקורות:
הקוד הבא יאזין לשינוי, יגדיר את הבחירה ויבצע את השאילתה לפי הצורך.
תוכלו גם ליירט את תגובת החיפוש על ידי הטמעת interceptSearchResponse
במתאם.
הצמדה של גרסת ה-API
כברירת מחדל, הווידג'ט משתמש בגרסה היציבה העדכנית ביותר של ה-API. כדי לנעול גרסה ספציפית, צריך להגדיר את פרמטר ההגדרה של cloudsearch.config/apiVersion
לגרסה המועדפת לפני הפעלת הווידג'ט.
כברירת מחדל, גרסת ה-API תהיה 1.0 אם היא לא מוגדרת או מוגדרת לערך לא חוקי.
הצמדה של גרסת הווידג'ט
כדי למנוע שינויים בלתי צפויים בממשקי החיפוש, תוכלו להגדיר את פרמטר התצורה של cloudsearch.config/clientVersion
באופן הבא:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
כברירת מחדל, גרסת הווידג'ט תהיה 1.0 אם היא לא מוגדרת או מוגדרת לערך לא חוקי.
אבטחה של ממשק החיפוש
תוצאות החיפוש מכילות מידע רגיש מאוד. חשוב ליישם שיטות מומלצות לאבטחת יישומי אינטרנט, במיוחד מפני מתקפות חטיפת קליקים.
מידע נוסף זמין בפרויקט המדריך ל-OWASP
הפעלת ניפוי באגים
משתמשים ב-interceptSearchRequest
כדי להפעיל ניפוי באגים בווידג'ט החיפוש. למשל:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;