ווידג'ט החיפוש מספק ממשק חיפוש שאפשר להתאים אישית לאפליקציות אינטרנט. הווידג'ט דורש רק כמות קטנה של 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.
אבטחת ממשק החיפוש
תוצאות החיפוש מכילות מידע רגיש מאוד. פועלים לפי השיטות המומלצות לאבטחת אפליקציות אינטרנט, במיוחד מפני התקפות clickjacking.
מידע נוסף זמין בפרויקט המדריך של OWASP
הפעלת ניפוי באגים
משתמשים ב-interceptSearchRequest
כדי להפעיל את ניפוי הבאגים בווידג'ט החיפוש. לדוגמה:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;