# Panel Kabuk ve Sipariş Kancaları

https://dev.wisecp.com/tr/panel-kabuk-ve-siparis-kancalari

Panel kabuğunun, panonun ve sipariş ekranlarının yirmi yerleşim noktası: başlık, gövde, üst menüler ve sipariş detayı.

## Genel Bakış

İki farklı ölçek burada bir arada. **Kabuk noktaları** panelin her sayfasında çalışır: başlık, gövde ve üst menüler. **Pano ve sipariş noktaları** ise tek bir ekrana bağlıdır.

Aradaki fark maliyettir. Kabuk noktalarına konan ağır bir dosya bütün paneli yavaşlatır; tek ekrana bağlı bir nokta yalnız o ekranı ilgilendirir.

## Referans

### Panele stil ekleme

uiadmin.head.css

`admin/inc` her sayfada

Panelin başlık bölümünde, her sayfada görünür. Kendi stil dosyanızı buradan bağlarsınız.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz HTML başlık bölümüne girer. ? **Panelin her sayfasında** çalışır: buraya konan ağır bir stil dosyası paneli baştan sona yavaşlatır. Tek bir ekran için gerekiyorsa oraya özel bir noktaya koyun.

Dinleyici PHP

```php
Hook::add('ui:admin.head.css', 10, function () {
    // HER sayfada calisir: hafif tutun.
    return '<link rel="stylesheet" href="' . Acme::assetUrl('panel.css') . '">';
});
```

### Panele betik ekleme

uiadmin.head.js

`admin/inc` her sayfada

Panelin alt bilgisinde, her sayfada görünür. Adının aksine çıktı **sayfanın sonunda** yer alır: betikler orada yüklenir.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz HTML sayfa sonunda görünür. ? Panelin her sayfasında çalışır. Betiğiniz hata verirse **panelin kendi betikleri de durabilir**: kendi kodunuzu kendi hata yakalayıcınıza alın.

Dinleyici PHP

```php
Hook::add('ui:admin.head.js', 10, function () {
    // Hatasi panelin kendi betiklerini de durdurabilir.
    return '<script src="' . Acme::assetUrl('panel.js') . '" defer></script>';
});
```

### Gövdenin başı

uiadmin.body.begin

`admin/inc` her sayfada

Sayfa gövdesinin en başında, her sayfada görünür. Tüm panele yayılan bir duyuru şeridi için uygundur.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz HTML gövdenin başında görünür. Her sayfada çalışır; yerleşimi bozmamak için kendi kapsayıcınızı kullanın.

Dinleyici PHP

```php
Hook::add('ui:admin.body.begin', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Gövdenin sonu

uiadmin.body.end

`admin/inc` her sayfada

Sayfa gövdesinin en sonunda görünür. Pencere ve gizli kapsayıcılar için uygun yerdir.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.body.end', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Oluştur menüsüne öğe

uiadmin.header.create_menu

`admin/inc` üst menü

Üst çubuktaki oluşturma menüsünde görünür. Kendi hızlı oluşturma bağlantınızı buraya koyarsınız.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.header.create_menu', 10, function () {
    return '<li><a class="dropdown-item" href="/acme/new">Acme kaydi</a></li>';
});
```

### Yardım menüsüne öğe

uiadmin.header.help_menu

`admin/inc` üst menü

Üst çubuktaki yardım menüsünde görünür. Kendi belge ya da destek bağlantınız için uygundur.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.header.help_menu', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Panonun üstü

uiadmin.dashboard.top

`admin/index` pano üstü

Panonun en üstünde, istatistik kartlarından önce görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.dashboard.top', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### İstatistik kartlarının ardı

uiadmin.dashboard.statistics.after

`admin/index` kartlardan sonra

Panodaki istatistik kartlarının hemen ardında görünür. Kendi sayaç kartınızı sıraya eklemenin yeri.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.dashboard.statistics.after', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Panonun altı

uiadmin.dashboard.bottom

`admin/index` pano sonu

Panonun en sonunda görünür. Kendi panelinizi eklemenin yeri.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.dashboard.bottom', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş başlığına rozet ya da buton

uiadmin.order_detail.header_actions

`admin/orders/detail` başlık alanı

Sipariş detayının başlık satırında görünür.

Parametreler 3

$orderarrayGörüntülenen sipariş kaydı.

$order_idintSiparişin kimliği.

$order_statusstringSipariş durumu: bekliyor, işlemde, etkin ya da iptal.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_detail.header_actions', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş detayının üstü

uiadmin.order_detail.top

`admin/orders/detail` içerikten önce

Sipariş içeriğinin üstünde görünür. Duruma göre uyarı göstermenin yeri.

Parametreler 3

$orderarrayGörüntülenen sipariş kaydı.

$order_idintSiparişin kimliği.

$order_statusstringSipariş durumu: bekliyor, işlemde, etkin ya da iptal.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_detail.top', 10,
    function ($order, $order_id, $order_status) {
        if ($order_status !== 'waiting') return null;

        return '<div class="alert alert-info">Acme onayi bekleniyor</div>';
    });
```

### Sipariş kalemlerine işlem ekleme

uiadmin.order_detail.item_actions

`admin/orders/detail` iki işaret gelir

Sipariş kalemlerinin işlem alanında görünür. Yanınızdaki iki işaret hangi işlemin anlamlı olduğunu söyler.

Parametreler 3

$orderarrayTam sipariş kaydı.

$has_pending_itemsboolBekleyen hizmet ya da eklenti var mı. Yanlışsa kurulum bekleyen bir şey kalmamıştır.

$has_moduleboolSiparişte modüle bağlı hizmet var mı. Yanlışsa uzak sunucuda işlem yapan bir buton boşa çalışır.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_detail.item_actions', 10,
    function ($order, $has_pending_items, $has_module) {
        // Modulsuz siparişte uzak islem butonu bosa calisir.
        if (!$has_pending_items || !$has_module) return null;

        return '<button class="btn btn-sm" onclick="acmeProvision()">Acme</button>';
    });
```

### Sipariş sayfasının en altı

uiadmin.order_detail.bottom

`admin/orders/detail` sayfa sonu

Sayfanın en sonunda görünür.

Parametreler 3

$orderarrayGörüntülenen sipariş kaydı.

$order_idintSiparişin kimliği.

$order_statusstringSipariş durumu: bekliyor, işlemde, etkin ya da iptal.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_detail.bottom', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş listesi araç çubuğu

uiadmin.order_list.toolbar

`admin/orders` parametresiz

Sipariş listesinin araç çubuğunda görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_list.toolbar', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş listesinde tablodan önce

uiadmin.order_list.before_table

`admin/orders` parametresiz

Sipariş tablosunun hemen üstünde görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_list.before_table', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş oluşturma formundan önce

uiadmin.order_create.before_content

`admin/orders` parametresiz

Elle sipariş oluşturma formunun üstünde görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_create.before_content', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Sipariş oluşturma formundan sonra

uiadmin.order_create.bottom

`admin/orders` parametresiz

Aynı formun altında görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.order_create.bottom', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Alan adı fiyatlandırmasının üstü

uiadmin.domain_pricing.top

`admin/domains` parametresiz

Uzantı fiyat tablosunun üstünde görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.domain_pricing.top', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Alan adı fiyatlandırmasının altı

uiadmin.domain_pricing.bottom

`admin/domains` parametresiz

Uzantı fiyat tablosunun altında görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.domain_pricing.bottom', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

### Belge listesi araç çubuğu

uiadmin.domain_doc_list.toolbar

`admin/domains` parametresiz

Uzantı belge gereksinimleri listesinin araç çubuğunda görünür.

Parametreler 0

—Parametre almaz.

Dönüş 1

string|nullDöndürdüğünüz **HTML görünür**. Birden çok dinleyici varsa çıktılar öncelik sırasıyla art arda eklenir. Boş metin, `null` ve `false` atlanır: bir şey eklemek istemediğinizde `null` dönün. Çıktı kaçışsız girer — dışarıdan gelen değeri kendiniz temizleyin.

Dinleyici PHP

```php
Hook::add('ui:admin.domain_doc_list.toolbar', 10, function () {
    return '<div class="alert alert-info">Acme</div>';
});
```

## Tuzaklar

> **Kabuk noktaları panelin her sayfasında çalışır**
> 
> Stil ve betik noktaları tek bir ekranla sınırlı değildir: yönetici hangi sayfayı açarsa açsın çıktınız oraya girer. Ağır bir dosya ya da her açılışta dış servise giden bir betik, **panelin tamamını** yavaşlatır. Tek ekrana ait bir şey ekliyorsanız o ekranın kendi noktasını kullanın.

> **Betiğinizin hatası panelin betiklerini durdurabilir**
> 
> Sayfa sonuna eklediğiniz kod, panelin kendi kodunun yanında çalışır. Yakalanmamış bir hata tarayıcıda betik yürütmesini keser: sizin paneliniz değil, **yöneticinin kullandığı ekran** tepkisiz kalır. Kendi kodunuzu kendi hata yakalayıcınıza alın.

## İlgili Makaleler

- [Yönetim Paneli Kancaları](https://dev.wisecp.com/tr/yonetim-paneli-kancalari)
- Sipariş Kancaları
- [Panel Analitik Kancaları](https://dev.wisecp.com/tr/panel-analitik-kancalari)
