Ürün Grubu ve Eklenti Kancaları
Grup, kategori, eklenti ve gereksinimlerin yedi kancası.
Genel Bakış
Ürünlerin çevresindeki yapılar burada durur: onları taşıyan gruplar, yanlarında satılan eklentiler ve sipariş sırasında istenen gereksinimler.
İki şekil sürprizi vardır. Grup ayarları bağlama göre dizi ya da metin gelir. Kategori kapısına ise tek kayıt değil bir işlem yığını gelir; içinde silme de bulunabilir.
Referans
Grup verisini değiştirme
Ürün grubu ya da kategorisi kaydedilmeden önce çalışır.
Hook::add('filter:product.group_save_data', 10, function (&$set_data, $category, $detail) {
// Ayarlar dizi de olabilir metin de: once tipe bakin.
if (!is_array($set_data['options'] ?? null)) return;
$set_data['options']['acme_tag'] = Acme::tagFor($category);
});Grup kaydını izleme
Ürün grubu ya da kategorisi kaydedildikten sonra çalışır.
Hook::add('action:product.group_saved', 10, function ($id, $is_new, $category) {
// Sabit kategoride id SIFIR gelebilir.
if ($id) Acme::refreshGroupMenu($id);
});Grup silmeyi durdurma
Bir ürün grubu ya da kategorisi silinmeden önce çalışır.
Hook::add('gate:product.group_delete', 10, function ($id, $category, $detail) {
if (Acme::groupHasProducts($id)) return 'Icinde urun bulunan grup silinemez.';
return null;
});Kategori toplu işlemini durdurma
Eklenti ya da gereksinim kategorileri kaydedilmeden önce çalışır. Tek bir kayıt değil, bir işlem yığını gelir: aynı istekte ekleme, güncelleme ve silme bir arada bulunabilir.
addon ya da requirement.Hook::add('gate:product.category_save', 10, function ($type, $categories) {
// Yigin icinde SILME de olabilir: hepsini gezin.
foreach ($categories as $op)
if (($op['action'] ?? '') === 'delete' && Acme::categoryInUse((int) ($op['id'] ?? 0)))
return 'Kullanimda olan kategori silinemez.';
return null;
});Eklenti verisini değiştirme
Ürün eklentisi kaydedilmeden önce çalışır.
Hook::add('filter:product.addon_save_data', 10, function (&$addonData, $detail) {
$addonData['status'] = Acme::allowedAddon($addonData) ? ($addonData['status'] ?? 0) : 0;
});Eklenti silmeyi durdurma
Bir ürün eklentisi silinmeden önce çalışır.
Hook::add('gate:product.addon_delete', 10, function ($id, $detail) {
if (Acme::addonInUse($id)) return 'Musteride etkin olan eklenti silinemez.';
return null;
});Gereksinim silmeyi durdurma
Bir ürün gereksinimi silinmeden önce çalışır. Gereksinimler sipariş sırasında müşteriden istenen bilgilerdir: kaldırmak bekleyen siparişleri etkiler.
Hook::add('gate:product.requirement_delete', 10, function ($id, $detail) {
if (Acme::pendingOrdersNeed($id)) return 'Bekleyen siparisler bu gereksinimi kullaniyor.';
return null;
});Tuzaklar
Ayarlar alanı sabit grup kaydında dizi, diğer durumlarda metin gelir. Tip denetimi yapmadan dizi gibi okumak hata üretir; ilk satırda tipe bakın.
Aynı istekte ekleme, güncelleme ve silme bir arada bulunabilir. Yalnız eklemeye bakan bir denetim, aynı istekteki silmeyi kaçırır.
İlgili Makaleler
- Ürün Kancaları
- Hizmet Kancaları
- Kancalar Nasıl Çalışır
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.