Ö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.
| Konu | Ayrıntı |
| İşleyen dosya | engine/modules/pm.php |
| Adresler | index.php?do=pm (liste) · ?do=pm&doaction=newpm (yeni) · ?do=pm&pmid=N (okuma) |
| Çıktı yeri | result['content'] — yani {content} |
| Veri | Konuşma tabanlı: _conversations, _conversation_users, _conversations_messages, _conversation_reads, _ignore_list |
İzinler ve limitler
| İzin / ayar | Nerede? | Etkisi |
allow_pm | Üye grubu | Yoksa sayfa yerine bilgi mesajı çıkar; giriş yapmayanlar da erişemez |
max_pm | Üye grubu | Toplam mesaj sınırı — {pm-limit} ve {proc-pm-limit}'i besler |
max_pm_day | Üye grubu | Günlük gönderim sınırı |
pm_question | Üye grubu | Soru-cevap doğrulaması ([question]) |
max_pm_list | Sistem 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)
| Etiket | Anlamı |
{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
| Hata | Sonuç |
[new-pm] ile [new_pm]'i karıştırmak | Yanlış blok kullanılır; biri liste bağlantısı, diğeri üst panel göstergesidir |
{pm-list}, {message-id}, {pm-text} gibi etiketler aramak | Yoktur — doğru adlar {pmlist}, {id}, {text} |
Yeni mesaj formunda {code} kullanmak | Bu şablonda tag adı {sec_code}; doğrulama kodu görünmez |
[messages] bloğunun dışına mesaj etiketleri yazmak | Yalnı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üvenmek | Her 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.