Özel Mesajlar — pm.tpl

Bu şablon, üyelerin birbirine gönderdiği özel mesajları yönetir: gelen kutusu listesi, bir konuşmayı okuma ve yeni mesaj yazma. Üç farklı ekranı tek dosya karşılar; hangisinin görüneceğini adres ve bloklar belirler.

KonuAyrıntı
İşleyen dosyaengine/modules/pm.php
Adreslerindex.php?do=pm (liste) · ?do=pm&doaction=newpm (yeni) · ?do=pm&pmid=N (okuma)
Çıktı yeriresult['content'] — yani {content}
VeriKonuşma tabanlı: _conversations, _conversation_users, _conversations_messages, _conversation_reads, _ignore_list

İzinler ve limitler

İzin / ayarNerede?Etkisi
allow_pmÜye grubuYoksa sayfa yerine bilgi mesajı çıkar; giriş yapmayanlar da erişemez
max_pmÜye grubuToplam mesaj sınırı — {pm-limit} ve {proc-pm-limit}'i besler
max_pm_dayÜye grubuGünlük gönderim sınırı
pm_questionÜye grubuSoru-cevap doğrulaması ([question])
max_pm_listSistem ayarıListe sayfasında kaç konuşma gösterileceği (varsayılan 20)
!
Üst paneldeki [new-pm] bu şablonun parçası DEĞİL Site başlığındaki "yeni mesajınız var" göstergesi her şablonda (ör. main.tpl, speedbar.tpl) kullanılabilen global bir etikettir ve adı tireli yazılır: [new-pm]. Bu sayfadaki yeni mesaj formu ise alt çizgili [new_pm] bloğudur. İkisini karıştırmak en sık yapılan hatadır.

Etiketler ve bloklar — üç ekran

Her ekranda ortak

Etiket / blokİçeriği
[inbox]…[/inbox]Konuşma listesi bağlantısı (<a href="?do=pm"> olarak sarılır)
[new_pm]…[/new_pm]Yeni mesaj bağlantısı — alt çizgiye dikkat
{pm-limit}Gruptaki toplam mesaj sınırı (sınır yoksa "sınırsız" metni)
{proc-pm-limit}Kullanılan oran, yüzde olarak
{pm-progress-bar}Hazır doluluk çubuğu HTML'i — kendi çubuğunuzu yapmanıza gerek yok
i
[outbox] artık yok Eski DLE sürümlerinden gelen [outbox] bloğu motor tarafından her zaman silinir. Şablonunuza koyarsanız içeriği görünmez.

1) Liste ekranı — [pmlist]

Etiket / blokİçeriği
[pmlist]…[/pmlist] + {pmlist}Konuşma listesi. {pmlist} yerine konuşma satırları basılır.
[pmlist]Liste varsa kalır; yoksa silinir
[self-dialog] / [not-self-dialog]Konuşma kişinin kendisiyle mi?
{subj}, {user-dialog}Konu başlığı ve karşı taraf

2) Okuma ekranı — [readpm]

Etiket / blokİçeriği
[readpm]…[/readpm]Bir konuşma açıldığında kalır
{subj}, {user-dialog}Konu başlığı ve karşı taraf
[not-self-dialog]Karşı taraf varsa (kendine yazılan konuşmada silinir)
[messages]…[/messages]Tek bir mesajın şablonu; konuşmadaki her mesaj için tekrarlanır
{editor}Yanıt yazma editörü (yanıt formunun içine konur)

[messages] içinde kullanılabilen etiketler:

Etiket / blokİçeriği
{id}Mesajın kimliği
{author}, {login}, {foto}Yazarın bağlantısı, adı ve avatarı
{date}Gönderim tarihi
{text}Mesaj metni
{group-name}, {group-icon}Yazarın grubu
{news-num}, {comm-num}Yazarın haber ve yorum sayısı
{registration}, {lastdate}Kayıt ve son giriş tarihi
[online] / [offline]Yazarın çevrimiçi durumu
[pm-author] / [not-pm-author]Mesajı ben mi yazdım?
[signature]…[/signature] + {signature}Yazarın imzası
[reply]Alıntılayarak yanıtla bağlantısı
[pm-edit]Mesajı düzenle (AJAX)
[ignore]Yazarı engelle
[complaint]Mesajı şikâyet et
[del]Mesajı sil

3) Yeni mesaj ekranı — [newpm]

Etiket / blokİçeriği
[newpm]…[/newpm]Yeni mesaj formu açıldığında kalır
{author}Alıcı kullanıcı adı (önceden dolu gelebilir)
{subj}Konu başlığı
{editor}Mesaj editörü
[recaptcha] + {recaptcha}reCAPTCHA / hCaptcha / Turnstile
[question] + {question}Soru-cevap doğrulaması
[sec_code] + {sec_code}Resim doğrulama kodu — tag adı {sec_code}, {code} değil

Örnek

<section class="pm">

    <nav class="pm-menu">
        [inbox]<span>Gelen kutusu</span>[/inbox]
        [new_pm]<span>Yeni mesaj</span>[/new_pm]
    </nav>

    <div class="pm-status">
        {pm-progress-bar}
        <span>{pm-limit} mesajın %{proc-pm-limit}'i kullanıldı</span>
    </div>

    [pmlist]
        <div class="pm-list">{pmlist}</div>
    [/pmlist]

    [newpm]
        <div class="pm-new">
            <label>Alıcı<input type="text" name="name" value="{author}" required></label>
            <label>Konu<input type="text" name="subj" value="{subj}" required></label>
            {editor}

            [recaptcha]<div>{recaptcha}</div>[/recaptcha]

            [question]
                <label>{question}
                    <input type="text" name="question_answer" required>
                </label>
            [/question]

            [sec_code]
                <div class="captcha">
                    {sec_code}
                    <input type="text" name="sec_code" required>
                </div>
            [/sec_code]

            <button type="submit">Gönder</button>
        </div>
    [/newpm]

    [readpm]
        <div class="pm-dialog">
            <h2>{subj}</h2>
            [not-self-dialog]<p>{user-dialog} ile konuşma</p>[/not-self-dialog]

            [messages]
                <article class="pm-msg[pm-author] pm-msg--own[/pm-author]" id="{id}">
                    <img src="{foto}" alt="">
                    <div class="pm-msg__who">{author}
                        <span>{group-name}</span>
                        [online]<em>çevrimiçi</em>[/online]
                    </div>
                    <div class="pm-msg__text">{text}</div>
                    [signature]<div class="pm-msg__sign">{signature}</div>[/signature]
                    <div class="pm-msg__tools">
                        [reply]<span>Alıntıla</span>[/reply]
                        [pm-edit]<span>Düzenle</span>[/pm-edit]
                        [ignore]<span>Engelle</span>[/ignore]
                        [complaint]<span>Şikâyet</span>[/complaint]
                        [del]<span>Sil</span>[/del]
                    </div>
                </article>
            [/messages]

            <div class="pm-reply">
                {editor}
                <button type="submit">Yanıtla</button>
            </div>
        </div>
    [/readpm]

</section>

Üst panel göstergesi (global etiketler)

EtiketAnlamı
{new-pm}Okunmamış mesaj sayısı
{all-pm}Toplam mesaj sayısı
[new-pm]…[/new-pm]Okunmamış mesaj varsa kalır
<a href="?do=pm">Mesajlar
    [new-pm]<b>{new-pm}</b>[/new-pm]
</a>

Sık yapılan hatalar

HataSonuç
[new-pm] ile [new_pm]'i karıştırmakYanlış blok kullanılır; biri liste bağlantısı, diğeri üst panel göstergesidir
{pm-list}, {message-id}, {pm-text} gibi etiketler aramakYoktur — doğru adlar {pmlist}, {id}, {text}
Yeni mesaj formunda {code} kullanmakBu şablonda tag adı {sec_code}; doğrulama kodu görünmez
[messages] bloğunun dışına mesaj etiketleri yazmakYalnızca son mesajın değerleri görünür, liste bozulur
{editor}'ü iki yere koymakİki editör oluşur, gönderim karışır
[outbox] bloğuna güvenmekHer zaman silinir

Kontrol listesi

  • Üç ekranın (liste, okuma, yeni mesaj) blokları da şablonda mevcut.
  • [new_pm] (alt çizgi) ile [new-pm] (tire) doğru yerlerde kullanıldı.
  • [messages] içindeki etiketler doğru yazıldı.
  • Doğrulama bloklarının tag adları doğru: {question}, {sec_code}, {recaptcha}.
  • {pm-progress-bar} ile dolu mesaj kutusu görünümünü test ettim.
  • Mesaj göndermeyi ve yanıtlamayı canlıda denedim.