İçeriğe geç

Genisletme noktalari


title: Genişletme noktaları description: Bir modülün çekirdeğe bağlanabileceği tüm yerlerin tablosu: öznitelikler, arayüzler, etiketler ve YAML dosyaları; hangisinin otomatik, hangisinin elle etiketlendiği.

Çekirdeği değiştirmeden genişletmenin tüm yolları aşağıdadır. Üç mekanizma vardır:

  1. Öznitelik: bir sınıfa ya da metoda #[...] eklersiniz; derleme sırasında toplanır.
  2. Arayüz: bir arayüzü uygularsınız. Bazı arayüzler otomatik etiketlenir, bazıları için modülün services.yaml dosyasında _instanceof etiketi vermeniz gerekir.
  3. YAML dosyası: belirli bir adla koyarsınız; çekirdek okur.
Etiketin kuralı

Tablodaki "Otomatik" sütunu evet ise yalnızca arayüzü uygulamanız yeter (autoconfigure: true). Hayır ise modülünüzün services.yaml dosyasına şunu ekleyin:

services:
    _instanceof:
        App\Core\Queue\AsyncJobHandlerInterface:
            tags: ['cp.async_job_handler']

Öznitelikler

Öznitelik Nereye konur Ne yapar Ayrıntı
#[CpAdminMenu] Denetleyici metodu Studio/AACP menü öğesi Menü ve yetkiler
#[CpSetting] Boş taşıyıcı sınıf (tekrarlanabilir) Ayar tanımı Ayarlar
#[CpResource] Doctrine varlığı İş kaydı: yetenek, denetim, kiracı, iş akışı İçerik modeli
#[CpField] Varlık özelliği CpResource formunda alan sunumu İçerik modeli
#[CpEntityType] Varlık Alan, sürüm geçmişi gibi platform hizmetlerine açılır Alan sistemi
#[CpFieldType] Alan türü sınıfı Yeni alan türü Alan sistemi
#[CpHook] Servis metodu (tekrarlanabilir) Hook noktasına bağlanma Hook, cron, kuyruk
#[CpCronJob] Servis metodu Zamanlanmış iş Hook, cron, kuyruk
#[CpApi] Servis metodu REST ucu (/api/...) API ve webhook
#[Auditable], #[Publishable], #[SoftDeletable], #[NotTrashable] Varlık Denetim kaydı, yayın durumu, yumuşak silme, çöp kutusundan hariç İçerik modeli

Arayüzler

Otomatik etiketlenenler

Arayüz Ne ekler
SearchProviderInterface Site içi arama grubu
UpdateHookInterface Sürüm yükseltmesinde bir kez çalışan veri işi
DoctorCheckInterface cp:doctor denetimi
RebuilderInterface Parti halinde çalışan "yeniden say" işi; içerik üreten modül için zorunludur (Rebuild)
MailTemplateProviderInterface Düzenlenebilir e-posta şablonları
AccountProfileExtensionInterface Hesap sayfasına bölüm
SettingVariantProviderInterface Bir ayarın seçeneklerini dinamik sağlamak
WidgetTypeInterface, WidgetAreaProviderInterface, WidgetAreaRendererInterface Widget türü, alanı ve çizimi
StudioDashboardStatsProviderInterface Studio panosuna istatistik
StudioShellBrandingInterface Studio markalama
SystemWidgetProviderInterface AACP panosuna sistem parçacığı
SeoHeadRendererInterface Tam <head> SEO çizimi
MigrationInterface ve ilgili Veri göçü (cp:migrate)
PluginInterface Modül içi alt özellik (eklenti)

_instanceof ile elle etiketlenenler

Arayüz Etiket Ne ekler
AsyncJobHandlerInterface cp.async_job_handler Arka plan iş işleyicisi
AdminSearchProviderInterface cpalius.admin_search.provider Panel canlı aramasına grup
NotificationChannelInterface cpalius.notification.channel Bildirim kanalı
ConfigProviderInterface cp.config_provider cp:config için yapılandırma belgesi
TokenValueProviderInterface cp.token_value_provider [tür:özellik] token türü
TextFilterInterface cp.text_filter Metin biçimi süzgeci
InboxPulseChannelInterface cpalius.inbox_pulse_channel Gelen kutusu rozeti kaynağı
CspSourceProviderInterface cp.csp_source_provider CSP'ye izinli kaynak
TrashPurgeHandlerInterface cp.trash_purge_handler Çöp kutusundan kalıcı silmede ek temizlik
InboundWebhookHandlerInterface contributions.yaml → inbound_webhooks Gelen webhook ucu
Etiketi unutmak sessizdir

Etiketsiz bir sınıf yalnızca toplanmaz; hata vermez. "Sağlayıcım çalışmıyor" sorununun ilk kontrolü etikettir. php cp-core/bin/console cp:debug ve debug:container --tag=<etiket> toplananları listeler.

YAML dosyaları

Dosya Konum İçerik
capabilities.yaml Resources/config/ Modülün yetenekleri
routes.yaml Resources/config/ Rota yükleyicileri
services.yaml Resources/config/ Servis tanımları ve etiketler
contributions.yaml Resources/config/ Çekirdeğe katkılar (içerik türü rotaları, schema.org, ana sayfa modları, Studio kısayolları…)
importmap.php Resources/config/ JavaScript giriş noktaları
*.sql Resources/migrations/ Şema migration'ları
messages+intl-icu.<dil>.yaml Resources/translations/ Arayüz çevirileri
user.role.*.yaml cp-content/config/sync/ Rol tanımı (kurulumcu ekleyebilir)
workflow/*.yaml cp-content/config/sync/ İş akışı tanımı
path_pattern.*.yaml cp-content/config/sync/ Adres kalıbı
Hooks/<hook_noktası>.php Modül kökü DI'siz dosya hook'u
Hooks/cron.<ad>.php Modül kökü DI'siz dosya cron işi

Çekirdeğin kendi YAML'ları (cp-core/config/): capabilities.yaml, text_formats.yaml, tokens.yaml, view_modes.yaml.

Hook noktaları

Çekirdek ve modüllerin sunduğu hook noktalarının listesi ve yazım yolu Hook, cron, kuyruk sayfasındadır. Kısa liste: entity.<tür>.pre_save | post_insert | post_update | pre_delete | post_delete, entity.any.<an>, entity.<tür>.access, workflow.<ad>.transitioned, theme.*, studio.body.end (Studio sayfalarının sonu), page.render.content, blog.render.sidebar.

Hangisini seçmeli?

İhtiyaç Yol
Her kayıtta bir şey yap entity.any.post_insert hook'u
Sayfaya HTML eklemek theme.* hook noktası ya da widget
Dış sisteme haber ver Webhook (WebhookEventEmitter)
Dışarıdan veri al #[CpApi] ya da gelen webhook
Periyodik iş #[CpCronJob]
Yavaş iş AsyncJob kuyruğu
Aramada çıkmak SearchProviderInterface
Yeni alan türü #[CpFieldType]
Yönetilebilir ayar #[CpSetting]
E-posta metni MailTemplateProviderInterface
Veri düzeltmesi (yükseltmede) UpdateHookInterface
Son güncelleme: 13.10.2026