ווידג'ט החיפוש מספק ממשק חיפוש שניתן להתאמה אישית לאפליקציות אינטרנט. לווידג'ט נדרש רק כמות קטנה של 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.
כניסה אוטומטית של משתמשים
כדי לייעל את חוויית הכניסה, צריך לתת הרשאה מראש בשם משתמשים בארגון שלך. הטכניקה הזו שימושי גם אם משתמשים בשרת proxy ל-Cloud Identity Aware כדי להגן על האפליקציה.
למידע נוסף, אפשר לעיין במאמר בנושא שימוש ב'כניסה באמצעות חשבון 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()
ה-method המתאים של המחלקה Builder
:
מעצבים יכולים לשנות את המאפיינים של רכיב הקונטיינר וגם באלמנטים צאצאים. במהלך קישוט, אפשר להוסיף או להסיר אלמנטים צאצאים. עם זאת, אם אתם מבצעים שינויים מבניים באלמנטים, כדאי ליצור ישירות במקום לקשט אותם.
יצירת רכיבים בהתאמה אישית באמצעות מתאם
כדי ליצור רכיב מותאם אישית להצעה, למאגר מאפיינים או לתוצאת חיפוש:
יצירה ורישום של מתאם שמטמיע
createSuggestionElement
createFacetResultElement
,
או createSearchResultElement
בהתאמה.
המתאמים הבאים ממחישים יצירת הצעה מותאמת אישית ותוצאות חיפוש
רכיבים באמצעות תגי HTML <template>
.
כדי לרשום את המתאם בזמן אתחול הווידג'ט, צריך להשתמש ברכיב setAdapter()
ה-method המתאים של המחלקה Builder
:
יצירת רכיבי Facet מותאמים אישית באמצעות createFacetResultElement
כפוף למספר הגבלות:
- צריך לצרף את מחלקת ה-CSS
cloudsearch_facet_bucket_clickable
אל שמשתמשים ברכיב מסוים לוחצים על כדי להחליף מצב בקטגוריה. - צריך לארוז כל קטגוריה ברכיב מכיל באמצעות ה-CSS
כיתה
cloudsearch_facet_bucket_container
. - לא ניתן לעבד את הקטגוריות בסדר שונה מכפי שהן מופיעות תשובה.
לדוגמה, קטע הקוד הבא מציג מאפיינים באמצעות קישורים של תיבות סימון.
התאמה אישית של התנהגות החיפוש
ההגדרות של אפליקציית החיפוש מייצגות את ברירת המחדל ההגדרות של ממשק החיפוש, והן סטטיות. כדי להטמיע מודעות דינמיות מסננים או מאפיינים, כמו מתן אפשרות למשתמשים להחליף מצב של מקורות נתונים, לשנות את ההגדרות של אפליקציית החיפוש על ידי יירוט בקשת החיפוש באמצעות מתאם.
להטמיע מתאם עם
interceptSearchRequest
לשינוי בקשות שנשלחות אל
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 Guide Project
הפעלת ניפוי באגים
שימוש ב-interceptSearchRequest
כדי להפעיל ניפוי באגים בווידג'ט החיפוש. לדוגמה:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;