ווידג'ט החיפוש מספק ממשק חיפוש שניתן להתאמה אישית לאפליקציות אינטרנט. הווידג'ט דורש רק כמות קטנה של 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> כמו שמוצג כאן:
חובה לציין פונקציית onload callback בתג script. המערכת קוראת לפונקציה כשהטוען מוכן. כשהטוען מוכן, ממשיכים לטעון את הווידג'ט על ידי קריאה ל-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.
כניסה אוטומטית של משתמשים לחשבון
כדי לייעל עוד יותר את חוויית הכניסה, אפשר לתת מראש הרשאה לאפליקציה בשם המשתמשים בארגון. הטכניקה הזו שימושית גם אם משתמשים בשרת proxy לאימות זהויות (IAP) ב-Cloud Identity כדי להגן על האפליקציה.
מידע נוסף זמין במאמר שימוש בכניסה לחשבון Google עם אפליקציות IT.
התאמה אישית של הממשק
אפשר לשנות את המראה של ממשק החיפוש באמצעות שילוב של טכניקות:
- שינוי הסגנונות באמצעות CSS
- קישוט הרכיבים באמצעות מתאם
- יצירת רכיבים מותאמים אישית באמצעות מתאם
שינוי הסגנונות באמצעות CSS
לווידג'ט של החיפוש יש CSS משלו לעיצוב של רכיבי ההצעות והתוצאות, וגם של אמצעי הניווט בין הדפים. אפשר לשנות את הסגנון של הרכיבים האלה לפי הצורך.
במהלך הטעינה, ווידג'ט החיפוש טוען באופן דינמי את גיליון הסגנונות שמוגדר כברירת מחדל. הפעולה הזו מתבצעת אחרי טעינת גיליונות הסגנון של האפליקציה, וכך עולה העדיפות של הכללים. כדי לוודא שהסגנונות שלכם יקבלו עדיפות על פני סגנונות ברירת המחדל, משתמשים בבוררי צאצא כדי להגדיל את הספציפיות של כללי ברירת המחדל.
לדוגמה, לכלל הבא אין השפעה אם הוא נטען בתג סטטי של link או style במסמך.
.cloudsearch_suggestion_container {
font-size: 14px;
}
במקום זאת, צריך להגדיר את הכלל באמצעות המזהה או המחלקה של מאגר התגים ברמת העל שהוגדר בדף.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
בהפניה למחלקות CSS נתמכות מופיעה רשימה של מחלקות תמיכה ודוגמה לקוד HTML שנוצר על ידי הווידג'ט.
קישוט הרכיבים באמצעות מתאם
כדי להוסיף קישוט לאלמנט לפני העיבוד שלו, צריך ליצור ולרשום מתאם שמיישם אחת משיטות הקישוט, כמו decorateSuggestionElement או decorateSearchResultElement..
לדוגמה, המתאמים הבאים מוסיפים מחלקה מותאמת אישית לרכיבי ההצעה והתוצאה.
כדי לרשום את המתאם כשמפעילים את הווידג'ט, משתמשים בשיטה setAdapter()
של המחלקה Builder המתאימה:
המאפיינים של אלמנט הקונטיינר ושל כל אלמנט צאצא יכולים להשתנות על ידי המאפיינים המעטרים. אפשר להוסיף או להסיר רכיבי צאצא במהלך העיצוב. עם זאת, אם מבצעים שינויים מבניים ברכיבים, כדאי ליצור את הרכיבים ישירות במקום להשתמש בשיטת ה-decorator.
יצירת רכיבים מותאמים אישית באמצעות מתאם
כדי ליצור רכיב בהתאמה אישית להצעה, למאגר פילטרים או לתוצאת חיפוש, יוצרים ורושמים מתאם שמטמיע את createSuggestionElement, createFacetResultElement או createSearchResultElement בהתאמה.
בדוגמאות הבאות מוצגים מתאמים שיוצרים רכיבים מותאמים אישית של הצעות ותוצאות חיפוש באמצעות תגי HTML <template>.
כדי לרשום את המתאם כשמפעילים את הווידג'ט, משתמשים בשיטה 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;