SSS (Sıkça Sorulan Sorular) nedir?

SSS, DataLife Engine 21 için kurulabilir tam bir eklenti paketidir. Ön yüze akordeon SSS sayfası, yönetim paneline soru yönetimi ekler. Veriler veritabanı tablosu değil, engine/data/faq.json dosyasında tutulur.

Taraf Adres Ne yapar
Ön yüz ?do=faq Yalnızca aktif soruları akordeon listesi olarak gösterir
Yönetim ?mod=faq Ekle / düzenle / sil / aktif-pasif / sürükle-bırak sıralama

Kurulum

  1. Yönetim paneli → Eklenti yönetimi → Eklenti yükle.
  2. Bu makaledeki ZIP içinden faq.xml dosyasını seçip yükleyin (XML’i tek başına yüklemeyin; paket ZIP’tir).
  3. Listede SSS (Sikca Sorulan Sorular) görünür; aktif edin.

Kurulumda otomatik olarak şunlar olur:

Dil uyarısı: Eklenti kurulumda mevcut language/Turkish ve language/English dosyalarını yamalar. Siteniz başka bir dil kullanıyorsa faq.xml içindeki after operasyonlarını o dile uyarlayın.

$config['allow_plugins'] açık olmalıdır.

Yaşam döngüsü

Panelden işlem DLE kancaları Menü (_admin_sections) Dosya yamaları
Kurulum mysqlinstall + (aktifse) mysqlenable, sonra phpinstall + phpenable eklenir uygulanır
Aktif et mysqlenable + phpenable geri eklenir yeniden uygulanır
Pasif et mysqldisable + phpdisable kaldırılır kaldırılır
Güncelle mysqlupgrade + phpupgrade tazelenir yeniden uygulanır
Sil mysqldelete + phpdelete kaldırılır kaldırılır, _plugins* kayıtları silinir
Kanca İçerik
phpinstall faq.json + simge (base64 gömülü) + faq.tpl + install_admin_module
phpenable menü kaydını geri koyar
phpdisable menü kaydını kaldırır (kırık link kalmasın diye)
phpupgrade menü kaydını tazeler; faq.json yoksa oluşturur
phpdelete menüyü kaldırır + simgeyi siler

Neden phpdisable? DLE, eklenti pasif edildiğinde _plugins_files.active alanını 0 yapar; oluşturulan dosyalar devre dışı kalır ve ?mod=faq açılamaz. Menü kaydı durursa panelde kırık link kalır.

Korunanlar: faq.json verisi ve faq.tpl şablonu silinmez. Yalnızca menü kaydı ve simge temizlenir.

Yönetim paneli bağlantısı

Menü, DLE API ile yazılır (elle SQL yok):

include_once ENGINE_DIR . '/api/api.class.php';
$dle_api->install_admin_module('faq', 'Sıkça Sorulan Sorular', 'SSS yönetimi', 'public/adminpanel/images/faq.png', '1');
Alan Değer
name faq — engine/inc/faq.php ile birebir aynı olmalı
title Sıkça Sorulan Sorular
descr SSS yönetimi
icon public/adminpanel/images/faq.png (70×70, kurulumda yazılır)
allow_groups 1

Paketin içeriği (9 dosya, 10 operasyon)

Dosya Aksiyon Ne yapar
engine/engine.php before ?do=faq için case "faq" dalı
engine/engine.php after Sayfa başlığı: $nam_e = $lang['faq_head']
engine/ajax/controller.php replace faq değerini $admin_modules whitelist’ine ekler
engine/modules/faq.php create Ön yüz modülü
engine/ajax/faq.php create Yönetim AJAX: save / delete / toggle / sort
engine/inc/faq.php create Yönetim sayfası (TinyMCE)
language/{Turkish,English}/website.lng after Ön yüz dil anahtarları
language/{Turkish,English}/adminpanel.lng after Yönetim dil anahtarları

Şablon (templates/<Skin>/faq.tpl) XML ile oluşturulamaz: DLE dosya operasyonları yalnızca .php ve .lng kabul eder. Bu yüzden phpinstall içinde file_put_contents kullanılır. PHP kancalarına <?php etiketi koyulmaz (eval ile global scope).

Korumalı dosyalara operasyon yazılmaz: engine/classes/mysql.php, plugins.class.php, data/config.php, dbconfig.php, socialconfig.php, videoconfig.php.

Nasıl kullanılır? (yönetim)

  1. admin.php?mod=faq açın (grup 1).
  2. Soru ekle ile modalı açın. Soru düz metin, cevap TinyMCE ile HTML’dir.
  3. Kaydet / düzenle / sil. Satırdaki anahtarla aktif-pasif değiştirin.
  4. Satırları sürükleyerek sıralayın (Sortable). Sıra faq.json dizisinin sırasıdır.
  5. Ön yüzde yalnızca active = 1 kayıtlar, bu sırayla görünC�r.

JSON kayıt yapısı: q (soru), a (cevap HTML), active (0/1).

Cevap alanında TinyMCE

İçerik temizleme (güvenlik)

Hem engine/ajax/faq.php (kaydetme) hem engine/modules/faq.php (gösterim) faq_clean_html() kullanır. İki yerde aynı olmalıdır.

Bu, regex tabanlı pragmatik bir temizleyicidir; içeriği yalnızca grup-1 girdiği için yeterlidir. Yazarlara/üyelere açacaksanız DLE’nin ParseFilter / HTMLPurifier’ı ile değiştirin.

Geriye dönük uyumluluk: içerikte < yoksa (düz metin) eski davranış korunur — htmlspecialchars + nl2br.

Ön yüz şablonu ve etiketler

Modülün şablona verdiği yer tutucular yalnızca ikidir: {faq-title} ve {faq-body}.

Modülün ürettiği HTML sözleşmesi (faq.tpl CSS’i bunlara bağlıdır):

div.faq-list
div.faq-item
div.faq-question   -> "N. soru" + <i class="fa fa-chevron-down"></i>
div.faq-answer     -> cevap HTML'i
div.faq-empty      -> kayıt yoksa

Kurulumun yazdığı varsayılan faq.tpl: başlık + gövde, gömülü CSS (kenarlıklı kart, tıklanınca .open), FontAwesome ok ikonu, tıklama ile akordeon JS’i.

Ne değiştirilir → hangi dosya

İstek Dosya
Görünüm, akordeon yerine sekme, CSS/JS templates/<Tema>/faq.tpl
Sayfa başlığı / “kayıt yok” metni language/<Dil>/website.lng → faq_head, faq_empty
Kayıtlar engine/data/faq.json veya ?mod=faq
Yeni alan (kategori, tarih, ikon) faq.json + engine/modules/faq.php (+ yönetim: inc/faq.php, ajax/faq.php)
URL’yi ?do=faq dışında yapmak engine/engine.php yaması + modül adı + website.lng
İzinli HTML’i daraltmak faq_clean_html() — iki dosyada aynı

CSS/JS’i tema dosyalarına taşımak

  1. templates/<Tema>/css/faq.css ve js/faq.js oluşturun.
  2. faq.tpl içindeki <style> yerine {include file="{THEME}/css/faq.css"}, script yerine {include file="{THEME}/js/faq.js"} yazın.

{THEME} çıktıda $config['http_home_url'] . 'templates/' . $config['skin'] olur.

Dokunulmaması gerekenler

Başka siteye uyarlama — kontrol listesi

  1. XML’i yükleyip aktive edin.
  2. Kendi diliniz için website.lng ve adminpanel.lng anahtarlarını ekleyin (paket yalnızca TR/EN yamalar).
  3. Aktif temanın faq.tpl dosyasını düzenleyin (yalnızca iki yer tutucu doldurulur).
  4. ?mod=faq ile iaçerik girin, ?do=faq ile test edin.
  5. Bağka sayfada göstermek: en basit yol ?do=faq bağlantısıdır. Aynı sayfaya gömmek için ikinci bir case veya ortak fonksiyon gerekir.
  6. Tema değiştirirseniz faq.tpl’i yeni temanın klasörüne kopyalayın. phpinstall yalnızca o anki aktif temaya ve yalnızca dosya yoksa yazar.


Güvenlik ve log



Yama uygulanmadıysa


?mod=plugins → ilgili eklenti → hata listesi (PREFIX_plugins_logs). En sık neden: searchcode metninin DLE sürümünde değişmiş olması.


Kaldırma


phpdelete menüyü kaldırır ve public/adminpanel/images/faq.png simgesini siler. faq.json ve faq.tpl kalır (içeriğiniz / tema düzenlemeniz). İsterseniz bunları elle silin.


Dosya İndirme Kilitli