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.

KonuAyrıntı
İşleyen dosyaengine/modules/feedback.php
Adresindex.php?do=feedback
Çıktı yeriresult['content'] — yani {content}
İzinallow_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ı

AlanAnlamıNot
nameGönderenin adıYalnızca giriş yapmamışlarda kullanılır
emailGönderenin e-postasıYalnızca giriş yapmamışlarda kullanılır
subjectMesaj konusu
messageMesaj metniÇok satırlı alan (textarea)
recipAlıcının üye kimliği{recipient} bunu üretir; elle yazmayın
attachments[]Eklenecek dosyalarYalnızca [attachments] açıkken
question_answerSoru-cevap yanıtı[question] ile birlikte
sec_codeDoğrulama kodu[sec_code] ile birlikte

Alıcı listesi nasıl oluşur?

{recipient} etiketinin içeriği şu kurallarla üretilir:

KuralAyrıntı
Grup filtresiYalnızca feedback_groups ayarında listelenen gruplar
Mesaj izniYalnızca allow_mail = 1 olan üyeler
Engel durumuEngellenmiş ü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:

AdresYüklenen şablon
index.php?do=feedbackfeedback.tpl
index.php?do=feedback&template=sikayetfeedback_sikayet.tpl
index.php?do=feedback&template=reklamfeedback_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

HataSonuç
Şablona <form> eklemekİç içe form → mesaj gönderilmez
Gizli user_hash alanı eklemekGereksizdir, 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 koymakGiriş yapan üyede de görünür; gereksiz karışıklık
[attachments] alanına name vermemekDosyalar iletilmez — name="attachments[]" şart
Alıcı listesinin boş olmasına şaşırmakHiç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.