Arama widget'ı, web uygulamaları için özelleştirilebilir bir arama arayüzü sağlar. Widget'ın uygulanması için yalnızca az miktarda HTML ve JavaScript gerekir. Ayrıca, yönler ve sayfalara ayırma gibi yaygın arama özelliklerini etkinleştirir. Arayüzün belirli bölümlerini CSS ve JavaScript ile de özelleştirebilirsiniz.
Widget'ın sunduğu esneklik yeterli değilse Query API'yi kullanabilirsiniz. Query API ile arama arayüzü oluşturma hakkında bilgi edinmek için Query API ile arama arayüzü oluşturma başlıklı makaleyi inceleyin.
Arama arayüzü oluşturma
Arama arayüzünü oluşturmak için birkaç adım gerekir:
- Arama uygulaması yapılandırma
- Uygulama için istemci kimliği oluşturma
- Arama kutusu ve sonuçları için HTML biçimlendirmesi ekleme
- Widget'ı sayfaya yükleme
- Widget'ı başlatma
Arama uygulaması yapılandırma
Her arama arayüzünde, yönetici konsolunda tanımlanmış bir arama uygulaması olmalıdır. Arama uygulaması, sorguyla ilgili ek bilgiler (ör. veri kaynakları, özellikler ve arama kalitesi ayarları) sağlar.
Arama uygulaması oluşturmak için Özel arama deneyimi oluşturma başlıklı makaleyi inceleyin.
Uygulama için istemci kimliği oluşturma
Google Cloud Search API'ye erişimi yapılandırma bölümündeki adımlara ek olarak web uygulaması için bir istemci kimliği de oluşturmanız gerekir.
Projeyi yapılandırdığınızda:
- Web tarayıcısı istemci türünü seçin.
- Uygulamanızın kaynak URI'sini girin.
- Oluşturulan istemci kimliğini not edin. Sonraki adımları tamamlamak için istemci kimliğine ihtiyacınız olacaktır. İstemci gizli anahtarı, widget için gerekli değildir.
Daha fazla bilgi için İstemci Tarafı Web Uygulaması için OAuth 2.0 başlıklı makaleyi inceleyin.
HTML biçimlendirmesi ekleme
Widget'ın çalışması için az miktarda HTML gerekir. Şunları sağlamanız gerekir:
- Arama kutusu için bir
input
öğesi. - Öneri pop-up'ını sabitleyecek bir öğe.
- Arama sonuçlarını içerecek bir öğe.
- (İsteğe bağlı) Facet kontrollerini içerecek bir öğe sağlayın.
Aşağıdaki HTML snippet'inde, bağlanacak öğelerin id
özelliğiyle tanımlandığı bir arama widget'ının HTML'si gösterilmektedir:
Widget'ı yükleme
Widget, yükleyici komut dosyası aracılığıyla dinamik olarak yüklenir. Yükleyiciyi dahil etmek için <script>
etiketini gösterildiği gibi kullanın:
Senaryo etiketinde onload
geri araması sağlamanız gerekir. Yükleyici hazır olduğunda işlev çağrılır. Yükleyici hazır olduğunda API istemcisini, Google ile Giriş'i ve Cloud Search modüllerini yüklemek için gapi.load()
işlevini çağırarak widget'ı yüklemeye devam edin.
initializeApp()
işlevi, tüm modüller yüklendikten sonra çağrılır.
Widget'ı başlatma
Öncelikle, oluşturulan istemci kimliğiniz ve https://www.googleapis.com/auth/cloud_search.query
kapsamıyla gapi.client.init()
veya gapi.auth2.init()
işlevini çağırarak istemci kitaplığını başlatın. Ardından, widget'ı yapılandırmak ve HTML öğelerinize bağlamak için gapi.cloudsearch.widget.resultscontainer.Builder
ve gapi.cloudsearch.widget.searchbox.Builder
sınıflarını kullanın.
Aşağıdaki örnekte widget'ın nasıl başlatılacağı gösterilmektedir:
Yukarıdaki örnekte, yapılandırma için tanımlanan iki değişkene referans verilmektedir:
Oturum açma deneyimini özelleştirme
Varsayılan olarak, kullanıcılar sorgu yazmaya başladığında widget, oturum açmalarını ve uygulamayı yetkilendirmelerini ister. Kullanıcılara daha kişiselleştirilmiş bir oturum açma deneyimi sunmak için web siteleri için Google ile oturum açma özelliğini kullanabilirsiniz.
Kullanıcıları doğrudan yetkilendirme
Kullanıcının oturum açma durumunu izlemek ve gerektiğinde kullanıcıların oturumunu açmak veya kapatmak için Google ile oturum açma özelliğini kullanın. Örneğin, aşağıdaki örnekte oturum açma değişikliklerini izlemek için isSignedIn
durumu gözlemlenir ve bir düğme tıklamasından oturum açma işlemini başlatmak için GoogleAuth.signIn()
yöntemi kullanılır:
Daha fazla bilgi için Google ile oturum açma başlıklı makaleyi inceleyin.
Kullanıcıların oturumunu otomatik olarak açma
Kuruluşunuzdaki kullanıcılar adına uygulamaya önceden yetki vererek oturum açma deneyimini daha da kolaylaştırabilirsiniz. Bu teknik, uygulamayı korumak için Cloud Identity Aware Proxy kullanılıyorsa da faydalıdır.
Daha fazla bilgi için BT uygulamalarında Google ile oturum açma özelliğini kullanma başlıklı makaleyi inceleyin.
Arayüzü özelleştirme
Arama arayüzünün görünümünü çeşitli teknikleri birleştirerek değiştirebilirsiniz:
- Stilleri CSS ile geçersiz kılma
- Öğeleri adaptörle süsleme
- Adaptörle özel öğeler oluşturma
Stilleri CSS ile geçersiz kılma
Arama widget'ı, öneri ve sonuç öğelerinin yanı sıra sayfalama kontrollerini stilize etmek için kendi CSS'siyle birlikte gelir. Bu öğeleri gerektiği gibi yeniden şekillendirebilirsiniz.
Yükleme sırasında, arama widget'ı varsayılan stil sayfasını dinamik olarak yükler. Bu, uygulama stil sayfaları yüklendikten sonra gerçekleşir ve kuralların önceliğini artırır. Kendi stillerinizin varsayılan stillere göre öncelikli olmasını sağlamak için, varsayılan kuralların özgüllüğünü artırmak üzere üst öğe seçicileri kullanın.
Örneğin, aşağıdaki kural belgedeki statik bir link
veya style
etiketine yüklenirse hiçbir etkisi olmaz.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Bunun yerine, kuralı sayfada belirtilen üst kapsayıcının kimliği veya sınıfıyla nitelendirin.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
Desteklenen sınıfların listesi ve widget tarafından oluşturulan örnek HTML için Desteklenen CSS sınıfları referansına bakın.
Öğeleri adaptörle süsleme
Bir öğeyi oluşturmadan önce süslemek için decorateSuggestionElement
veya decorateSearchResultElement.
gibi süsleme yöntemlerinden birini uygulayan bir bağdaştırıcı oluşturup kaydedin.
Örneğin, aşağıdaki bağdaştırıcılar öneri ve sonuç öğelerine özel bir sınıf ekler.
Widget'ı başlatırken bağdaştırıcıyı kaydetmek için ilgili setAdapter()
sınıfının Builder
yöntemini kullanın:
Dekoratörler, kapsayıcı öğenin özelliklerini ve tüm alt öğeleri değiştirebilir. Alt öğeler, süsleme sırasında eklenebilir veya kaldırılabilir. Ancak öğelerde yapısal değişiklikler yapıyorsanız öğeleri süslemek yerine doğrudan oluşturmayı düşünebilirsiniz.
Adaptörle özel öğeler oluşturma
Öneri, yön kapsayıcısı veya arama sonucu için özel bir öğe oluşturmak üzere sırasıyla createSuggestionElement
, createFacetResultElement
veya createSearchResultElement
uygulayan bir bağdaştırıcı oluşturup kaydedin.
Aşağıdaki bağdaştırıcılar, HTML <template>
etiketlerini kullanarak özel öneri ve arama sonuçları öğeleri oluşturmayı gösterir.
Widget'ı başlatırken bağdaştırıcıyı kaydetmek için ilgili setAdapter()
sınıfının Builder
yöntemini kullanın:
createFacetResultElement
ile özel yön öğeleri oluşturma
çeşitli kısıtlamalara tabidir:
- Kullanıcıların bir grubu etkinleştirmek için tıkladığı öğeye
cloudsearch_facet_bucket_clickable
CSS sınıfını eklemeniz gerekir. - Her grubu, CSS sınıfı
cloudsearch_facet_bucket_container
olan bir kapsayıcı öğeye sarmalısınız. - Paketleri yanıtta göründüklerinden farklı bir sırada oluşturamazsınız.
Örneğin, aşağıdaki snippet, onay kutuları yerine bağlantıları kullanarak yönleri oluşturur.
Arama davranışını özelleştirme
Arama uygulaması ayarları, arama arayüzünün varsayılan yapılandırmasını temsil eder ve statiktir. Kullanıcıların veri kaynakları arasında geçiş yapmasına izin vermek gibi dinamik filtreler veya özellikler uygulamak için arama isteğini bir bağdaştırıcıyla keserek arama uygulaması ayarlarını geçersiz kılabilirsiniz.
Yürütülmeden önce arama API'sine yapılan istekleri değiştirmek için interceptSearchRequest
yöntemini içeren bir bağdaştırıcı uygulayın.
Örneğin, aşağıdaki bağdaştırıcı, sorguları kullanıcı tarafından seçilen bir kaynakla kısıtlamak için istekleri yakalar:
Widget'ı başlatırken bağdaştırıcıyı kaydetmek için ResultsContainer
oluşturulurken setAdapter()
yöntemini kullanın.
Kaynaklara göre filtreleme için bir seçim kutusu görüntülemek üzere aşağıdaki HTML kullanılır:
Aşağıdaki kod, değişikliği dinler, seçimi ayarlar ve gerekirse sorguyu yeniden yürütür.
Ayrıca, adaptörde interceptSearchResponse
uygulayarak arama yanıtını engelleyebilirsiniz.
API sürümünü sabitleme
Widget varsayılan olarak API'nin en son kararlı sürümünü kullanır. Belirli bir sürümü sabitlemek için widget'ı başlatmadan önce cloudsearch.config/apiVersion
yapılandırma parametresini tercih edilen sürüme ayarlayın.
API sürümü ayarlanmamışsa veya geçersiz bir değere ayarlanmışsa varsayılan olarak 1.0 olur.
Widget sürümünü sabitleme
Arama arayüzlerinde beklenmedik değişiklikler olmasını önlemek için cloudsearch.config/clientVersion
yapılandırma parametresini gösterildiği gibi ayarlayın:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
Ayarlanmamışsa veya geçersiz bir değere ayarlanmışsa widget sürümü varsayılan olarak 1.0 olur.
Arama arayüzünü güvenli hale getirme
Arama sonuçları çok hassas bilgiler içeriyor. Web uygulamalarını, özellikle tıklama tuzağı saldırılarına karşı korumak için en iyi uygulamaları izleyin.
Daha fazla bilgi için OWASP Guide Project'i inceleyin.
Hata ayıklamayı etkinleştirme
Arama widget'ında hata ayıklamayı etkinleştirmek için interceptSearchRequest
tuşunu kullanın. Örneğin:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;