Hızlı Arama Sonuçları — fastsearchresult.tpl
Bu şablon, arama kutusuna yazarken açılan açılır sonuç listesini üretir.
Bir sayfa değil, AJAX ile dönen bir HTML parçasıdır.
| Konu | Ayrıntı |
| İşleyen dosya | engine/ajax/search.php — sonuçlar show.custom.php ile basılır |
| Adres | index.php?controller=ajax&mod=search (POST) |
| Gönderilen alan | query — aranan kelime (en çok 90 karakter) |
| Açan JS | FastSearch() / dle_do_search() — public/js/dle_js.js |
| Yanıt türü | Düz HTML parçası (JSON değil) |
| Sonuç sayısı | fastsearch_result ayarı — 1 ile 1000 arası, varsayılan 5 |
Çalışma koşulları — üçü birden şart
Dosyanın en başında sert bir kapı vardır; koşullardan biri eksikse istek
sayfa hiç işlenmeden reddedilir:
| Koşul | Nerede ayarlanır? | Eksikse |
fast_search açık | Sistem ayarları → arama | Yanıt: error |
allow_search izni | Üye grupları | Yanıt: error |
Geçerli user_hash | Sayfa içinde otomatik üretilir | Oturum hatası mesajı |
!
"error" yanıtı kullanıcıya görünmez
Bu uç nokta parça döndürdüğü için hata mesajı ekrana basılmaz;
JavaScript sessizce boş liste gösterir. Kullanıcı "arama çalışmıyor" der, sunucu
tarafında ise izin sorunu vardır. Sorun ararken önce izinleri kontrol edin.
Etiketler
Hazır tema yalnızca üç etiket kullanır, ancak arka planda çalışan motor
kısa haber motorudur (show.custom.php). Yani
Arama Sonuçları sayfasındaki haber
ailesinin tamamı burada da geçerlidir:
| Etiket | İçeriği |
{title}, {title limit="40"} | Haber başlığı |
{full-link} · {link} | Habere bağlantı |
{short-story}, {short-story limit="150"} | Kısa metin |
{category}, {link-category} | Kategori |
{author}, {date} | Yazar ve tarih |
{image-1}, {views}, {comments-num} | Görsel ve sayaçlar (dikkatli kullanın — liste kısa olmalı) |
Yanıtın yapısı
Sunucu, derlenen şablonun sonuna kendi ürettiği bir bağlantı ekler:
"tüm sonuçları gör" bağlantısı. Yani açılır liste her zaman
<derlenmiş şablon> + <tüm sonuçlar bağlantısı> olarak döner.
| Durum | Dönen içerik |
| Sonuç var | Şablon + "tüm sonuçları gör" bağlantısı |
| Sonuç yok | "Sonuç bulunamadı" dil metni + "tüm sonuçları gör" bağlantısı |
| Statik sayfa eşleşmesi | Statik sayfa adı/açıklaması üzerinden de öneri dönebilir |
Örnek
<ul class="fastsearch-list">
<li>
<a href="{full-link}">
<span class="fastsearch-list__title">{title}</span>
<span class="fastsearch-list__text">{short-story limit="150"}</span>
</a>
</li>
</ul>
i
Sarmalayıcı liste etiketi yazmayın
Şablon, tek bir sonucun gövdesidir; motor onu kaç sonuç varsa o kadar
çoğaltır. Yukarıdaki örnekte <ul> dış katmanda olduğu için
<li>'nin tekrarlanması doğru sonucu verir — motorun sonuçları
nereye yerleştirdiğine göre sarmalayıcıyı ayarlayın.
İpucu: listede ne göstermeli?
| Göster | Göstermekten kaçın |
| Başlık (kısaltılmış), 1–2 satır metin, kategori |
Tarih, okuma sayısı, yorum sayısı, etiketler, tam metin |
Bu liste kullanıcı yazarken tekrar tekrar üretilir. Ağır etiketler burada
performansı doğrudan düşürür. Ayrıntı için
Ana ve Global Etiketler.
Sık yapılan hatalar
| Hata | Sonuç |
Tam HTML belgesi yazmak (<html>, <head>) | Açılır listenin içinde sayfa içinde sayfa oluşur, biçim bozulur |
{THEME}'yi görsel yolunda kullanmamak | Görseller görünmez (bu şablonda {THEME} elle değiştirilir) |
| JSON beklemek | Yanıt düz HTML'dir; JSON.parse hata verir |
| Sayfa numarası/sayfalama eklemek | Bu listede sayfalama yoktur; asıl arama sayfasına yönlendirilir |
| Statik sayfa sonuçlarını yok saymak | Bazı eşleşmeler statik sayfalardan gelir; tasarımınız bunu da kapsamalı |
Kontrol listesi
- Şablon bir HTML parçası; belge etiketleri kullanmadım.
fast_search ayarı açık ve ilgili gruplarda allow_search var.
fastsearch_result sayısını makul tuttum (varsayılan 5).
- Listede yalnızca hafif etiketler kullandım.
- Sonuç yoksa görünen "bulunamadı" metnini kontrol ettim.
- Açılır listeyi gerçek sitede, arama kutusuna yazarken test ettim.