# Müşteri Sitesi Kancaları

https://dev.wisecp.com/tr/musteri-sitesi-kancalari

Müşterinin gördüğü sitede kendi HTML'inizi ekleyeceğiniz 156 nokta: nerede durdukları, adların nasıl okunduğu ve dönüşün ne olması gerektiği.

## Genel Bakış

Müşteri sitesindeki ekran kancaları **156 tanedir** ve hepsi aynı işi yapar: döndürdüğünüz HTML, şablonda o noktanın bulunduğu yere yerleşir.

Kancalar tema şablonlarının içine `{hook}` etiketiyle yerleştirilmiştir. Ölçüldü: üç yerleşik temanın üçü de **aynı 154 çağrıyı** taşıyor, yani tema değiştirmek dinleyicilerinizi düşürmez.

Dönüş sözleşmesi tek tiptir. Boş olmayan string dönüşler sırayla birleşip sayfaya girer; boş ve `null` dönüşler atlanır.

## Yapı

Ad üç parçadır: aile, ekran, nokta. Son parça noktanın ekranda **nereye** düştüğünü söyler.

```twig
{* templates/website/{Tema}/views/account/domain-detail.tpl *}
{hook name='ui:client.domain_detail.hero.after'}
{hook name='ui:client.domain_detail.tabs.end'}
```

- **after**: Bir bölümün hemen ardı. **46**
- **bottom**: Bir bölümün en altı, hâlâ içinde. **34**
- **top**: Bir bölümün en üstü. **31**
- **end**: Bir listenin ya da şeridin son öğesinden sonrası. **17**
- **before**: Bir bölümün hemen öncesi. **10**

## Referans

Noktaların ekranlara dağılımı. Alan adı ve hizmet detayı en zengin ekranlardır; bir eklentinin müşteriye görünen yüzü çoğu kez oralarda kurulur.

- **account/domain-detail (22)**: Alan adı detayı
- **account/service-detail (11)**: Hizmet detayı
- **account/ticket-detail (7)**: Destek talebi detayı
- **account/settings (5)**: Hesap ayarları
- **account/domains (5)**: Alan adı listesi
- **account/invoice-detail (4)**: Fatura detayı
- **account/ticket-create (4)**: Yeni talep formu
- **products/detail (4)**: Ürün sayfası
- **checkout/* (8)**: Sepet, yapılandırma, ödeme, sipariş sonu
- **content/* (15)**: Bilgi bankası, blog, iletişim, eklenti sayfaları
- **auth/* (3)**: Parola sıfırlama ve davet kabul ekranları
- **partials + layouts (13)**: Başlık, altbilgi, ödeme kabuğu, sayfa gövdesi

### Dinleyici

```php
// Cogu ekran kancasi parametre ALMAZ: hangi ekranda oldugunuzu ad soyler.
Hook::add('ui:client.domain_detail.hero.after', 10, function () {
    if (!AcmeBanner::active()) return null;          // dokunma
    return '<div class="alert alert-info">' . AcmeBanner::text() . '</div>';
});
```

## Tuzaklar

> **Dönen HTML kaçırılmaz**
> 
> Bu noktalara **ham HTML** girer. Müşteriden, adres satırından ya da veritabanından gelen bir değeri doğrudan gömerseniz siteye kod enjekte etmiş olursunuz. Dışarıdan gelen her parçayı **kendiniz kaçırın**; kanca bunu sizin yerinize yapmaz.

> **Kendi temanız kancaları taşımak zorunda**
> 
> Kancalar tema şablonlarının içindedir. Yerleşik üç tema aynı çağrıları taşır, ama **sıfırdan yazdığınız bir tema** yalnız kendi koyduğunuz noktaları taşır. Bir eklentinin sitede görünmemesinin sık nedeni kancanın değil, **temanın** eksik olmasıdır.

> **Nokta seçimi düzeni bozabilir**
> 
> Bir nokta bir kutunun içinde, bir başkası dışındadır. Izgara içine tam genişlikte bir blok koymak sayfayı kaydırır. Adın son parçası nereye düştüğünü söyler, ama emin olmanın yolu **şablonu açıp o satıra bakmaktır**; kancanın kaydı dosya ve satır numarası verir.

> **Boş dönüş temiz yoldur**
> 
> Bir noktada iş yapmak istemiyorsanız `null` dönün: boş dönüşler atlanır ve sayfada iz bırakmaz. Boş bir `<div>` döndürmek ise ızgarada gerçek bir boşluk açar.

## İlgili Makaleler

- [Müşteri Sitesi Verisi ve Kapıları](https://dev.wisecp.com/tr/musteri-sitesi-verisi-ve-kapilari)
- [Yönetim Paneli Kancaları](https://dev.wisecp.com/tr/yonetim-paneli-kancalari)
- [Kanca Dinleyicisi Yazma](https://dev.wisecp.com/tr/kanca-dinleyicisi-yazma)
