Arama Sonuçları — searchresult.tpl

Bu şablon, arama yapıldıktan sonra bulunan haberlerin ve yorumların listesini üretir. Sonuçlar sayfa sayfa gelir; her sonuç kendi etiketleriyle basılır.

KonuAyrıntı
İşleyen dosyaengine/modules/search.php — sonuçlar show.custom.php ile basılır
Haber aramasıengine/modules/show.custom.php (kısa haber motoru)
Yorum aramasıengine/classes/comments.class.php — lastcomments modu
SayfalamaAyrıca navigation.tpl yüklenir — Arama Formu ile birlikte çalışır
Kullanıldığı adresindex.php?do=search&subaction=search

Dört blok, iki eksen

Şablonun tamamı iki sorunun cevabına göre parçalara ayrılır:

BlokEksenNe zaman kalır?
[searchposts]…[/searchposts]Sonuç türüHaber sonuçları (arama kapsamı "her yerde" veya "etiket")
[searchcomments]…[/searchcomments]Sonuç türüYorum sonuçları (arama kapsamı "başlıkta" seçilmişse)
[fullresult]…[/fullresult]Görünüm"Haberleri göster" seçiliyken — tam kart, tarihli ve görselli
[shortresult]…[/shortresult]Görünüm"Yalnızca başlıkları göster" seçiliyken — tek satırlık sonuç
!
Bu dört blok gerçek şablon bloğu DEĞİLDİR Motorun blok mekanizmasıyla değil, sayfa üretildikten sonra düz metin aramasıyla (preg_replace / str_ireplace) temizlenirler. Bunun üç önemli sonucu vardır:
  • Eşini yazmayı unutursanız etiket çıktıda düz metin olarak görünür — örn. sayfada [searchposts] yazısı çıkar.
  • İç içe koyamazsınız. İçeride eşleşme tembel (.+?) olduğundan yanlış yerden kesilir.
  • İçlerindeki [if] gibi normal koşullar çalışır — çünkü motor önce şablonu derler, temizlik sonra olur.

Haber sonuçları — kullanılabilir etiketler

[searchposts] içinde kısa haber motoru etiketleri çalışır. Yani Kısa Makale sayfasındaki ailenin neredeyse tamamı burada da geçerlidir:

Etiketİçeriği
{title}, {title limit="60"}Haber başlığı (kısaltılabilir)
[full-link] · {link}Habere bağlantı
{short-story}, {short-story limit="200"}Kısa metin
{category}, {category-url}, {link-category}Kategori adı, adresi ve bağlantı etiketi
{author}Yazar
{date}, {date=Y-m-d}, [day-news]Tarih — biçim ve "bugünün haberi" koşulu
{views}, {comments-num}Okuma ve yorum sayısı
{image-1} … {image-N}Habere eklenmiş görseller
[fixed]…[/fixed]Haber "sabitlenmiş" ise kalır (öne çıkan sonuç için)
[new] / [not-new], [updated]Yeni / güncellenmiş haber koşulları
[category=N]…[/category], [catlist=1,2]…[/catlist]Kategoriye göre koşullu içerik
[xfgiven_x] · [xfvalue_x]Ek alan (Ek Alanlar)
[edit]…[/edit]Yetkiliye düzenleme bağlantısı
i
En kolay yol: hazır şablonu çağırın Tüm bu etiketleri yeniden yazmak yerine {include file="shortstory.tpl"} kullanın. Böylece arama sonuçları, sitenin diğer listeleriyle birebir aynı görünür ve tek noktadan yönetilir.

Yorum sonuçları — kullanılabilir etiketler

[searchcomments] içinde yorum motoru çalışır. Bu motor, Yorumlar şablonundaki "son yorumlar" (lastcomments) modunun aynısıdır:

Etiketİçeriği
{news_title}, {news-link}Yorumun ait olduğu haberin başlığı ve adresi
{comment}, {comment limit="220"}Yorum metni
{author}, {foto}Yorum yazan ve avatarı
{date}Yorum tarihi
{comment-id}Yorumun kimliği (bağlantı hedefi)

Örnek

<div class="search-results">

    [searchposts]
        [fullresult]
            {include file="shortstory.tpl"}
        [/fullresult]

        [shortresult]
            <article class="result-line">
                <a href="{link}">{title}</a>
                <span class="result-line__meta">{date=Y-m-d} · {comments-num}</span>
            </article>
        [/shortresult]
    [/searchposts]

    [searchcomments]
        [fullresult]
            {include file="comments.tpl"}
        [/fullresult]

        [shortresult]
            <article class="result-line">
                <a href="{news-link}">{news_title}</a>
                <span class="result-line__meta">{author} · {date}</span>
            </article>
        [/shortresult]
    [/searchcomments]

</div>

Örnek — sabitlenmiş sonucu vurgulama

<article class="result-card[fixed] result-card--pinned[/fixed]">
    <span class="chips">{category}</span>
    <h2>[full-link]{title}[/full-link]</h2>
    <p>{short-story limit="220"}</p>
    <span class="meta">{author} · <time>{date}</time></span>
</article>

[fixed] yalnızca sabitlenmiş haberlerde kalır; sınıfı bu koşulla ekleyerek öne çıkan sonuçları görsel olarak ayırabilirsiniz.

Sık yapılan hatalar

HataSonuç
[searchposts]'u kapatmamakSonuçların altında düz metin olarak görünür
Dört bloğu iç içe koymakTembel eşleşme yanlış yerden keser, sonuçlar bozulur
{link}'i yorum bloğunda kullanmakYorum tarafında haber adresi {news-link}'tir
{short-story}'yu show.full etiketleriyle karıştırmakSonuç listesinde tam makale etiketleri yoktur
Ağır HTML kullanmakBu şablon yüzlerce kez tekrarlanır; sayfa şişer
{include file="shortstory.tpl"} içinde zaten ağır bir tasarımSonuçlar çok yavaş açılır

Kontrol listesi

  • Dört bloğun eşlerini de yazdım (açılış + kapanış).
  • Blokları iç içe koymadım.
  • Haber tarafında {include file="shortstory.tpl"} ile tutarlılığı sağladım.
  • Yorum tarafında {news_title} / {news-link} kullandım.
  • Hem "haberleri göster" hem "başlıkları göster" modunu canlıda denedim.
  • Sayfalamayı kontrol ettim (birkaç sayfa sonuç ürettim).