Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

bir proje geliştiriyorum ve modül sistemi için "https://github.com/nWidart/laravel-modules" paketini kullanıyorum ancak örnek veriyorum; wordpress tarzı seo paketi yazmak istesem modülleri diğer modüllerin içerisinde çalıştırmayı nasıl yapacağımı bulamadım (iç içe modül).
daha çok açıklarsam örnek gönderiler ve sayfalar modülü var ve bir de seo modülümüz var bu seo modülünü sayfalar ve gönderiler modülünde wordpress gibi çalıştırıyor olmam lazım.
bunun için bana yardımcı olur musun? bir fikire ihtiyacım var.

    coderr Çalıştırma ile kastettiğiniz şey nedir? Pakete baktım, Modules klasörü altında topluyor, bu durumda oradaki herhangi bir sınıfa namespace ile ulaşabiliyor olmanız lazım.

      mgsmus pakette sorun yok onu kullanabiliyorum sorun şurda; mesela o pakette modülleri yazıyorsun örnek; sayfalar modülü blog modülü gibi buraya kadar sorun yok ama ben mesela wordpress gibi bir de seo modülü yazmak istesem bu yazdığım seo modülünü eklenen diğer seo kullanılabilecek modüllerde wordpress seo paketleri gibi form da felan nasıl çalıştırabilirim.
      umarım anlatabilmişimdir.
      yapmak istediğim şey wordpress eklenti sistemi gibi bir sistem yazmak.

        coderr Çok genel bir soru ama aklıma ilk gelenleri söyleyeyim.

        Soruna parça parça yaklaşmanız lazım. Bir modül var. Bu modül backend işi yapıyor olabilir, frontend işi yapıyor olabilir ya da her ikisini de yapıyor olabilir. Beklentiniz bu modülün başka bir modül ile ilişki kurması. Demek ki ilişki kuran modül, ilişki kurulan modül (buna plugin diyelim) ve bir de bu ilişkiyi tutan bir yere ihtiyacınız var (veri tabanı gibi).

        +----------+--------+
        |  module  | plugin |
        +----------+--------+
        | pages    | seo    |
        | articles | seo    |
        +----------+--------+

        Bu üstteki gibi ilişkiyi veri tabanında tuttuğunuzu düşünürseniz eğer, demek ki pages modülü plugin kabul eden bir modül olduğunu varsaymamız gerekiyor. Peki seo plugini pages modülünde nasıl devreye girebilir? Bu durumda pages modülünde plugin işlemlerinin girebileceği yer tutucular oluşturmanız lazım. Mesela frontend için şöyle yaptığınızı düşünün

        pages/create.blade.php

        @foreach($pageModule->plugins as $plugin)
            @if($plugin->hasRenderableComponent())
                <x-dynamic-component :component="$plugin->getRenderableComponentName()" />
            @endif
        @endif

        Burada isimleri ve yöntemleri salladım. Eğer page modülünde render edilebilir bir component varsa (mesela seo formu) bunu create.blade.php sayfasına dahil ettim. Buna benzer bir şeyi de backend için yapacaksınız.

        Bu konu açıkçası arge gerektiren bir konu, yapmanın bir çok yolu var ve hiçbiri kısa ve kolay değil. Araştırarak ilerlemeniz lazım. Wordpress ve diğer CMS'leri inceleyebilirsiniz. Daha önce hiç yapmadığım için daha detaylı bilgi veremiyorum.

          Sizin sorunununuzun çözümü mevcut tüm modüllerin ortak kullanabileceği kancalar üretmek. Wordpress de olduğu gibi. Bunla ilgili tayfun erbilen in bir videosu var. Örneğin save kancasına öncelikle modülleri autoload edip ekleme yapacak bir sistem kurmanız gerekiyor.

          Her modül içinde yazı kaydından sonra save kancasındaki fonksiyonlar sırayla çalışacak.

          Bu sadece bir örnektir.

          Ama o zaman da bu kancalar nedeniyle performans sorunları yaşayacaksınız wordpress de olduğu gibi.

            gokhancelebi
            Teşekkür ederim. Aynen kanca sistemiyle yapmam gerektiğini düşündüm bende ancak laravelde nasıl kanca sistemi oluştururum mantığını kafamda oturtturamadım 1 haftadır kanca sistemini laravel'de araştırıyorum ama bir sonuca ulaşamadım bu konu hakkında öneriniz var mı? yanıtınız için teşekkür ederim.

            mgsmus evet bunu düşündüm ancak dediğim gibi wp deki gibi hook sistemiyle çalıştırmam gerekecek ama nasıl bir yol izleyeceğim bilmiyorum laravelde hook anlamında. kafamda canlandıramadım.
            teşekkür ederim.