Skip to content

MegaforBB Blog › Rehberler

Rehberler

MegaforBB için eklenti geliştirmeye giriş

Bir MegaforBB eklentisi nelerden oluşur? Klasör yapısı, filtreler, rotalar, kurulum dosyası, dil dosyaları ve veritabanı için pratik bir başlangıç.

Slaweally2 min read1 views
Contents
  1. Klasör yapısı
  2. Filtrelerle entegrasyon
  3. Görünümler
  4. Veritabanı
  5. Küçük ama önemli ayrıntılar

MegaforBB’de eklentiler, çekirdeğe dokunmadan yeni özellik eklemenizi sağlar. Bu yazıda bir eklentinin temel parçalarını ve dikkat edilecek noktaları özetliyoruz.

Klasör yapısı

Her eklenti Inc/Plugin/EklentiAdi klasöründe yaşar. Küçük bir eklenti şunlardan oluşabilir:

  • plugin.json: ad, sürüm, açıklama
  • plugin.php: bağlanılacak olay, eylem ve filtreler
  • routes.php: adresler ve denetleyiciler
  • install.php / uninstall.php: kurulum ve kaldırma adımları
  • Controllers, Models, Services, views, lang

Filtrelerle entegrasyon

Yönetim menüsüne öğe eklemek, site aramasına kaynak tanıtmak ya da üye profiline sekme eklemek için ilgili filtrelere bağlanırsınız. Çeviri satırlarını da bir filtreyle eklersiniz; Türkçe ve İngilizce dosyaları aynı anahtarlarla tutun.

Görünümler

Eklentinin Twig şablonları, eklenti adıyla bir ad alanı kazanır (ör. @Blog/frontend/index). Tema değişkenlerini kullanırsanız eklentiniz her temada uyumlu görünür.

Veritabanı

Tabloları, tekrar çalıştırılabilir (idempotent) bir migrasyon dosyasıyla oluşturun; eski migrasyonları değiştirmeyin, yeni bir dosya ekleyin. Migrasyonlar hata fırlatmamalı: mevcut kurulumları bozmak yerine sessizce atlamalı.

Küçük ama önemli ayrıntılar

  • Eklenti modellerinde, Eloquent’in kendi metot adlarını (ör. on) ezmeyin.
  • Kullanıcıdan gelen HTML’i her zaman temizleyin; yorumları ve metinleri kaçışlayın.
  • CSS ve JS dosyalarını uzantısız, önbelleklenebilir bir adresten sunmak bazı sunucularda (nginx) sorunu önler.
  • Eklentinizi kapatılabilir ve kaldırıldığında veriyi silmeyecek biçimde tasarlayın.

You might also like

Comments (0)

Be the first to comment.

Log in to comment.