Alan Adı Katalog Kancaları
Müşteri bir ad ararken ve operatör uzantı kataloğunu kurarken çalışan on dört kanca: uygunluk, öneriler, kategoriler, fiyat matrisi.
Genel Bakış
Alan adı satışının iki yüzü var. Müşteri tarafında arama vardır: bir ad yazılır, sağlayıcıya sorulur, sonuç ve öneriler döner. Operatör tarafında ise katalog vardır: hangi uzantılar satılır, hangi kategoride, hangi fiyattan.
Buradaki kancaların hepsi referansla çalışır: size bir dizi verilir, siz onu değiştirirsiniz, dönüşünüze bakılmaz. Şekil sözleşmesi sıkıdır çünkü çıktıyı ekran ve sepet doğrudan okur.
Referans
Uygunluk cevabını değiştirme
Sağlayıcının uygunluk cevabı türetildikten sonra, yanıt kurulmadan önce çalışır.
false yapmak adı satıştan kaldırır.Hook::add('filter:domain.availability', 10,
function (&$available, $sld, $tld, $check_result) {
// Marka korumasi: kendi adimizi kimse kaydedemesin.
if (Acme::brandTerm($sld)) $available = false;
});Müşteri arama sonucunu değiştirme
Birincil sonuç ve öneriler kurulup sepet durumu işlendikten ve öneriler sıralandıktan sonra çalışır.
status, type (register ya da transfer), currency, primary (birincil sonuç ya da null), suggestions. Sepet durumu her girdide in_cart ile gelir.sld, tld, transfer, ucid (görüntüleme para birimi).Hook::add('filter:domain.client_search_results', 10,
function (&$response, $searchContext) {
// Siralama zaten yapildi: kendi onerinizi BASA koyun, sona degil.
$extra = Acme::suggest($searchContext['sld'] ?? '');
if ($extra) array_unshift($response['suggestions'], $extra);
});Öne çıkan uzantıları değiştirme
Dil dosyasından gelen liste küçük harfe indirilip baştaki nokta kırpıldıktan sonra çalışır.
["net","org","io"]). Nokta koymak ya da büyük harf yazmak uzantıyı bulunamaz yapar.Hook::add('filter:domain.spotlight_tlds', 10, function (&$tlds) {
$tlds = ['com', 'net', 'com.tr']; // noktasiz, kucuk harf
});Uzantı kategorilerini değiştirme
Kategori anahtarları yerelleştirilmiş etiketlerle eşleştirildikten sonra çalışır.
key ve label taşır. Anahtar, uzantı satırlarındaki kategori listesiyle eşleşmelidir; uydurma anahtar hiçbir uzantı getirmez.Hook::add('filter:domain.tld_categories', 10, function (&$out) {
// Anahtar TLD satirlarindaki kategori listesiyle ESLESMELI.
$out[] = ['key' => 'turkiye', 'label' => 'Turkiye'];
});Uzantı fiyat tablosunu değiştirme
Uzantı satırları kurulup fiyatlar görüntüleme para birimine çevrildikten sonra çalışır.
name (noktasız), categories (virgülle ayrılmış anahtarlar), kayıt ve yenileme fiyatları.Hook::add('filter:domain.tld_table', 10, function (&$out, $ucid) {
// Bos fiyatli satirlari gizle: musteri fiyatsiz uzantiya tiklamasin.
$out = array_values(array_filter($out,
fn ($r) => (float) ($r['register'] ?? 0) > 0));
});Yenileme fiyatını değiştirme
Uzantının yenileme fiyatı bulunup para birimi çevrimi ve yıl çarpanı uygulandıktan sonra çalışır.
id, name, min_years.Hook::add('filter:domain.premium_renewal_price', 10,
function (&$renewal_amount, $service, $tld, $target_currency) {
// Premium adin yenilemesi saglayicidan gelir; katalog fiyati yanlistir.
$real = Acme::premiumRenewal($service['name'] ?? '', $target_currency);
if ($real > 0) $renewal_amount = $real;
});Fiyat matrisini kaydetmeden değiştirme
Sağlayıcıdan çekilen maliyetler kâr oranıyla fiyata çevrildikten sonra, veritabanına yazılmadan önce çalışır.
[tür][yıl][para birimi] → cost ve promo. Tür: register, renewal, transfer.module, tld, cost_cid, profit_rate.Hook::add('filter:domain.pricing_save', 10, function (&$pricing, $context) {
// Ilk yil kaydi maliyetine satilsin; yenileme dokunulmasin.
foreach ($pricing['register'][1] ?? [] as $cid => $row)
$pricing['register'][1][$cid]['promo'] = $row['cost'];
});Yeni uzantı kaydını değiştirme
Yeni uzantı veritabanına yazılmadan önce çalışır.
name, module, status, rank, dns_manage, forwarding, whois_privacy, epp_code.Hook::add('filter:domain.tld_save_data', 10, function (&$insert_data, $extension) {
// Yeni uzanti once kapali gelsin; fiyat girilmeden satisa acilmasin.
$insert_data['status'] = 0;
});Uzantı silmeyi durdurma
Uzantı katalogdan silinmeden önce çalışır.
Hook::add('gate:domain.tld_delete', 10, function ($extension, $tld) {
// Satilmis alan adi olan uzantiyi silmek kayitlari oksuz birakir.
if (Acme::soldCount((int) ($tld['id'] ?? 0)) > 0)
return 'Bu uzantida satilmis alan adi var; silinemez.';
return null;
});Yeni uzantıyı izleme
Uzantı katalogda oluşturulduktan sonra çalışır.
Hook::add('action:domain.tld_created', 10,
function ($tld_id, $extension, $registrar) {
Ops::note('tld-added', $extension . ' -> ' . ($registrar ?: 'modulsuz'));
});Tek uzantının sorgusunu devralma
Bir uzantı için kullanılabilirlik sorusu sorulmadan önce çalışır. Dolu bir yanıt döndürürseniz sistem ne WHOIS sorar ne de kayıt kuruluşuna gider: cevabı siz vermiş olursunuz.
sld (ad), tld (uzantı), module. module boşsa WHOIS yolundasınız, doluysa kayıt kuruluşu yolunda. İki yol da bu kancadan geçer.status (available, unavailable ya da error), isteğe bağlı message, premium, premium_price. Boş dizi, false ya da hiç dönüş: sistem kendi yoluna devam eder. Birden çok dinleyici cevap verirse sonuncusu geçerlidir.Hook::add('filter:domain.available', 10, function ($query) {
// Yasakli listedeki adlari kayit kurulusuna hic sormayin.
if (Acme::blocked($query['sld'] ?? ''))
return ['status' => 'unavailable', 'message' => 'bu ad kullanilamaz'];
return false; // geri kalani sistem sorsun
});Toplu sonuç haritasını değiştirme
Bütün uzantıların cevabı toplandıktan sonra, çağırana dönmeden hemen önce çalışır. Tek uzantı değil, sonucun tamamı elinizdedir.
sld, tld, status, ayrıca message, premium, premium_price bulunabilir.sld ve tlds.Hook::add('filter:domain.whois_result', 10, function (&$result, $context) {
foreach ($result as $domain => $row) {
if (($row['premium'] ?? false) !== true) continue;
// Premium fiyata kendi kar payinizi ekleyin.
$result[$domain]['premium_price'] = round(((float) $row['premium_price']) * 1.15, 2);
}
});Ham kayıt metnini maskeleme
Kayıt kuruluşundan gelen ham metin ziyaretçiye gösterilmeden önce çalışır. Metinde başkasının adı, e-postası ve telefonu bulunur: maskeleme yeri burasıdır.
sld, tld, status.Hook::add('filter:domain.whois_record', 10, function (&$raw, $whoisContext) {
if ($raw === '') return;
// E-posta ve telefon satirlarini gizleyin.
$raw = preg_replace('~^(.*(?:Email|Phone).*)$~mi', '[gizlendi]', $raw);
});Belge gereksinimi değişikliğini izleme
Bir uzantının zorunlu belge listesi değiştikten sonra çalışır. Değişiklik geriye dönük etkilidir: o uzantıda bekleyen siparişler artık başka belge istiyor olabilir.
Hook::add('action:domain.doc_saved', 10, function ($tld, $added, $updated, $removed) {
// Yeni belge istendiyse o uzantida bekleyen siparisleri yeniden degerlendirin.
if ($added) Acme::reviewPendingOrders($tld);
});Tuzaklar
Öneriler siz görmeden önce duruma göre sıralanır. Listenin sonuna eklediğiniz bir öneri en altta kalır ve çoğu müşteri oraya bakmaz. Kendi önerinizi öne almak istiyorsanız listenin başına koyun.
Öne çıkan uzantı listesi ve tablo satırları uzantıyı noktasız ve küçük harf bekler. .COM yazmak eşleşmeyi bozar: uzantı ne katalogda bulunur ne fiyatı çözülür, ekranda sessizce boş kalır.
Hem yenileme fiyatı hem tablo satırları size çevrilmiş tutarı verir. Kendi fiyatınızı yazarken aynı para biriminde yazın; sağlayıcı maliyetini olduğu gibi koymak, müşteriye başka bir para biriminin sayısını göstermek olur.
Kategori listesine yeni bir anahtar eklemek yalnız butonu açar. O anahtarın uzantı satırlarındaki kategori listesinde de bulunması gerekir, yoksa butona tıklayan müşteri boş bir liste görür.
İlgili Makaleler
- Alan Adı Edinme Kancaları
- Sipariş Akışı Kancaları
- Alan Adı Kancaları
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.