E-posta Gönderme Formu — feedback.tpl
Bu şablon, üyelerin ve ziyaretçilerin site yönetimine mesaj gönderdiği formu
üretir. Mesaj; seçilen alıcıya (üye veya yönetici) iletilir. Üye engelleme listeleri,
soru-cevap doğrulaması ve dosya eki gibi koruma katmanları burada devrededir.
| Konu | Ayrıntı |
| İşleyen dosya | engine/modules/feedback.php |
| Adres | index.php?do=feedback |
| Çıktı yeri | result['content'] — yani {content} |
| İzin | allow_feed — izni olmayan grupta sayfa yerine bilgi mesajı çıkar |
!
Şablona <form> YAZMAYIN
Formu motor kendisi sarar: <form method="post" id="sendmail" name="sendmail">.
İçine gizli alanlar da motor tarafından eklenir:
send, mailtemplate ve user_hash.
Şablonda ikinci bir <form> açmak formun gönderilmemesine
yol açar. Yalnızca formun içeriğini yazın.
Etiketler
| Etiket / blok | İçeriği |
{recipient} | Hazır <select name="recip"> — alıcı listesi. Seçenekleri motor üretir. |
[not-logged]…[/not-logged] | Yalnızca giriş yapmamış ziyaretçide kalır. Ad ve e-posta alanlarını buraya koyun. |
[question]…[/question] + {question} | Soru-cevap doğrulaması (feedback_question izni açıksa) |
[sec_code]…[/sec_code] + {code} | Resim doğrulama kodu (klasik captcha) |
[recaptcha]…[/recaptcha] + {recaptcha} | reCAPTCHA / hCaptcha / Turnstile alanı |
[attachments]…[/attachments] | Dosya eki alanı (allow_mail_files izni açıksa) |
Bu blokların hangisinin kalacağına sunucu karar verir. Örneğin giriş
yapmış bir üyede [not-logged] bloğu içeriğiyle birlikte silinir; captcha
kapalıysa [sec_code] ve [recaptcha] blokları silinir. Hepsini
şablona yazıp gerisini motora bırakmak doğru yaklaşımdır.
Değiştirilemez form alan adları
| Alan | Anlamı | Not |
name | Gönderenin adı | Yalnızca giriş yapmamışlarda kullanılır |
email | Gönderenin e-postası | Yalnızca giriş yapmamışlarda kullanılır |
subject | Mesaj konusu | |
message | Mesaj metni | Çok satırlı alan (textarea) |
recip | Alıcının üye kimliği | {recipient} bunu üretir; elle yazmayın |
attachments[] | Eklenecek dosyalar | Yalnızca [attachments] açıkken |
question_answer | Soru-cevap yanıtı | [question] ile birlikte |
sec_code | Doğrulama kodu | [sec_code] ile birlikte |
Alıcı listesi nasıl oluşur?
{recipient} etiketinin içeriği şu kurallarla üretilir:
| Kural | Ayrıntı |
| Grup filtresi | Yalnızca feedback_groups ayarında listelenen gruplar |
| Mesaj izni | Yalnızca allow_mail = 1 olan üyeler |
| Engel durumu | Engellenmiş üyeler listeye girmez |
| Doğrudan alıcı | index.php?do=feedback&user=ID ile tek bir üye önceden seçilir |
Özel form şablonları (güçlü özellik)
Aynı modül, farklı formlar sunmak için kullanılabilir. Adres parametresi,
yüklenecek şablonun adını değiştirir:
| Adres | Yüklenen şablon |
index.php?do=feedback | feedback.tpl |
index.php?do=feedback&template=sikayet | feedback_sikayet.tpl |
index.php?do=feedback&template=reklam | feedback_reklam.tpl |
Böylece temanıza feedback_sikayet.tpl gibi ek şablonlar koyarak aynı
mekanizmayla birden çok amaca hizmet eden formlar oluşturabilirsiniz. Şablon bulunamazsa
modül feedback.tpl'ye geri döner ve bir bilgi mesajı gösterir.
Örnek
<section class="contact-form">
<h1>Bize yazın</h1>
[not-logged]
<div class="form-row">
<label for="name">Adınız</label>
<input type="text" name="name" id="name" maxlength="35" required>
</div>
<div class="form-row">
<label for="email">E-posta</label>
<input type="email" name="email" id="email" maxlength="35" required>
</div>
[/not-logged]
<div class="form-row">
<label for="subject">Konu</label>
<input type="text" name="subject" id="subject" maxlength="45" required>
</div>
<div class="form-row">
<label for="recip">Alıcı</label>
{recipient}
</div>
<div class="form-row">
<label for="message">Mesaj</label>
<textarea name="message" id="message" rows="8" required></textarea>
</div>
[attachments]
<div class="form-row">
<label for="feedback_files">Dosya ekle</label>
<input type="file" name="attachments[]" id="feedback_files" multiple>
</div>
[/attachments]
[question]
<div class="form-row">
<label for="question_answer">{question}</label>
<input type="text" name="question_answer" id="question_answer" required>
</div>
[/question]
[sec_code]
<div class="form-row">
<label for="sec_code">Doğrulama kodu</label>
{code}
<input type="text" name="sec_code" id="sec_code" required>
</div>
[/sec_code]
[recaptcha]
<div class="form-row">{recaptcha}</div>
[/recaptcha]
<button type="submit">Gönder</button>
</section>
Sık yapılan hatalar
| Hata | Sonuç |
Şablona <form> eklemek | İç içe form → mesaj gönderilmez |
Gizli user_hash alanı eklemek | Gereksizdir, motor zaten ekler; çift alan karışıklık yaratabilir |
{recipient}'ı bir <select> ile sarmak | Çift select oluşur; etiket kendi select'ini üretir |
Ad/e-posta alanlarını [not-logged] dışına koymak | Giriş yapan üyede de görünür; gereksiz karışıklık |
[attachments] alanına name vermemek | Dosyalar iletilmez — name="attachments[]" şart |
| Alıcı listesinin boş olmasına şaşırmak | Hiçbir üyede allow_mail açık değilse liste boş kalır |
Kontrol listesi
- Şablonda
<form> etiketi yok.
- Alan adları (
subject, message, recip …) olduğu gibi korundu.
[not-logged] ile ad/e-posta yalnızca ziyaretçiye gösteriliyor.
- Doğrulama blokları (
[question], [sec_code], [recaptcha]) şablonda mevcut.
- Dosya eki alanının adı
attachments[].
- Formu hem giriş yapmış üye hem ziyaretçi olarak göndererek test ettim.