הווידג'ט של החיפוש מספק ממשק חיפוש שניתן להתאים אישית לאפליקציות אינטרנט. כדי להטמיע את הווידג'ט נדרשת כמות קטנה של HTML ו-JavaScript, והוא מאפשר להשתמש בתכונות חיפוש נפוצות כמו פיצ'רים וחלוקה לדפים. אפשר גם להתאים אישית חלקים מהממשק באמצעות CSS ו-JavaScript.
אם אתם זקוקים לגמישות רבה יותר מזו שמציע הווידג'ט, כדאי לכם להשתמש ב-Query API. למידע על יצירת ממשק חיפוש באמצעות Query API, ראו יצירת ממשק חיפוש באמצעות Query API.
פיתוח ממשק חיפוש
כדי ליצור את ממשק החיפוש, צריך לבצע כמה שלבים:
- הגדרת אפליקציית חיפוש
- יצירת מזהה לקוח לאפליקציה
- הוספת סימון HTML לתיבת החיפוש ולתוצאות
- טעינת הווידג'ט בדף
- איך מפעילים את הווידג'ט
הגדרת אפליקציית חיפוש
לכל ממשק חיפוש צריכה להיות מוגדרת אפליקציית חיפוש במסוף Admin. Search application מספק מידע נוסף על השאילתה, כמו מקורות הנתונים, ההיבטים וההגדרות של איכות החיפוש.
במאמר יצירת חוויית חיפוש מותאמת אישית מוסבר איך יוצרים אפליקציית חיפוש.
יצירת מזהה לקוח לאפליקציה
בנוסף לשלבים שמפורטים בקטע הגדרת גישה ל-Google Cloud Search API, צריך גם ליצור מזהה לקוח לאפליקציית האינטרנט.
כשמגדירים את הפרויקט:
- בוחרים את סוג הלקוח דפדפן אינטרנט
- מציינים את URI המקור של האפליקציה.
- הערה לגבי מזהה הלקוח שנוצר. מזהה הלקוח יידרש לכם כדי להשלים את השלבים הבאים. סוד הלקוח לא נדרש לווידג'ט.
למידע נוסף, קראו את המאמר OAuth 2.0 לאפליקציות אינטרנט בצד הלקוח.
הוספת תגי HTML
כדי שהווידג'ט יפעל, נדרש קוד HTML קטן. עליכם לספק את הפרטים הבאים:
- אלמנט
input
לתיבת החיפוש. - רכיב שמחובר אליו החלון הקופץ של ההצעות.
- רכיב שמכיל את תוצאות החיפוש.
- (אופציונלי) מספקים רכיב שיכיל את אמצעי הבקרה של היבטים.
קטע ה-HTML הבא מציג את ה-HTML של ווידג'ט חיפוש, שבו הרכיבים שרוצים לקשר מזוהים לפי המאפיין id
:
טעינת הווידג'ט
הווידג'ט נטען באופן דינמי באמצעות סקריפט של מעמיס. כדי לכלול את הטען, משתמשים בתג <script>
כפי שמוצג:
חובה לספק פונקציית קריאה חוזרת (callback) מסוג onload
בתג הסקריפט. הפונקציה נקראת כשהמעבד מוכן. כשהמעבד מוכן, ממשיכים לטעינת הווידג'ט על ידי קריאה ל-gapi.load()
כדי לטעון את לקוח ה-API, את Google Sign-in ואת המודולים של 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;
}
ברשימת השיעורים הנתמכים ב-CSS מפורטות רשימת הכיתות הנתמכות ודוגמה לקוד HTML שנוצר על ידי הווידג'ט.
קישוט הרכיבים באמצעות מתאם
כדי לקשט אלמנט לפני הרינדור, יוצרים מתאם ומירשם אותו, כך שהוא יטמיע אחת משיטות הקישוט, כמו decorateSuggestionElement
או decorateSearchResultElement.
.
לדוגמה, המתאמים הבאים מוסיפים סיווג מותאם אישית לרכיבי ההצעה והתוצאה.
כדי לרשום את המתאם בזמן האיפוס של הווידג'ט, משתמשים ב-method setAdapter()
של הכיתה Builder
הרלוונטית:
רכיבי עיטור יכולים לשנות את המאפיינים של אלמנט הקונטיינר ושל כל אלמנט הצאצא. אפשר להוסיף או להסיר רכיבים צאצאים במהלך ההוספה שלהם. עם זאת, אם מבצעים שינויים מבניים ברכיבים, מומלץ ליצור את הרכיבים ישירות במקום לקשט אותם.
יצירת רכיבים מותאמים אישית באמצעות מתאם
כדי ליצור רכיב מותאם אישית להצעה, לקונטיינר של מאפיינים או לתוצאת חיפוש, יוצרים ומרשמים מתאם שמטמיע את createSuggestionElement
, את createFacetResultElement
או את createSearchResultElement
, בהתאמה.
במודלים הבאים מוצגת יצירת רכיבים מותאמים אישית של הצעות ותוצאות חיפוש באמצעות תגי HTML <template>
.
כדי לרשום את המתאם בזמן האיניציאליזציה של הווידג'ט, משתמשים בשיטה setAdapter()
של המחלקה Builder
המתאימה:
יש כמה הגבלות על יצירת רכיבי פנים מותאמים אישית באמצעות createFacetResultElement
:
- צריך לצרף את הכיתה
cloudsearch_facet_bucket_clickable
ב-CSS לרכיב שבו המשתמשים לוחצים כדי להפעיל או להשבית קטגוריה. - צריך לעטוף כל קטגוריה ברכיב מכיל עם הכיתה
cloudsearch_facet_bucket_container
ב-CSS. - אי אפשר להציג את הקטגוריות בסדר שונה מהסדר שבו הן מופיעות בתגובה.
לדוגמה, קטע הקוד הבא יוצר קטגוריות באמצעות קישורים במקום תיבות סימון.
התאמה אישית של התנהגות החיפוש
ההגדרות של Search application מייצגות את הגדרת ברירת המחדל של ממשק החיפוש, והן סטטיות. כדי להטמיע מסננים או פנים דינמיים, כמו לאפשר למשתמשים להחליף בין מקורות נתונים, אפשר לשנות את ההגדרות של אפליקציית החיפוש על ידי יירוט בקשת החיפוש באמצעות מתאם.
מטמיעים מתאם עם השיטה interceptSearchRequest
כדי לשנות את הבקשות שנשלחות אל Search API לפני הביצוע.
לדוגמה, המתאם הבא מיירט בקשות כדי להגביל שאילתות למקור שנבחר על ידי המשתמש:
כדי לרשום את המתאם בזמן האינטוליזציה של הווידג'ט, משתמשים ב-method setAdapter()
בזמן ה-build של 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;