Müşteri Panel Verisi Kancaları

1.6k görüntülenme Markdown

Müşteri panelinin on beş veri filtresi: hesap sekmeleri, ana sayfa panelleri, fatura listeleri, ortaklık ve bayi ekranları.

Genel Bakış

Müşteri panelinin ekrana taşıdığı verinin filtreleri burada: hesap sekmeleri, ana sayfa panelleri, fatura listeleri, ortaklık ve bayi ekranları.

Bu grupta iki şey tekrar eder. Birincisi aktif hesap: alt kullanıcı başka bir hesaba bakıyorsa elinizdeki kimlik giriş yapanın değil, bakılan hesabındır. İkincisi tutarların biçimlenmiş gelmesi: karşılaştırma yapacaksanız ham değeri ayrıca okuyun.

Referans

Hesap sekmelerini gizleme

filterclient.account.tabs
ClientAccount görünürlük haritası

Müşteri hesabının sekmeleri çizilmeden önce çalışır. Bir sekmeyi kapatmak, oradaki işlemi de kullanıcının gözünden kaldırır.

Parametreler 3
$tabsarraybağlaSekme karşılık görünürlük haritası: profil, kişiler, etkinlik, iletiler, bildirimler, güvenlik ve doğrulama. 🔴 Bu yalnız görünürlüktür: sekmeyi kapatmak arkasındaki işlemi kapatmaz. Erişimi gerçekten engellemek istiyorsanız ilgili kapıyı da kullanın.
$uidintbağlaAktif hesabın kimliği. Giriş yapanın kimliği değildir: alt kullanıcı başka bir hesaba bakıyorsa o hesabın kimliği gelir.
$selfboolbağlaAktif hesap kişinin kendi hesabı mı. Yanlışsa bir alt kullanıcı başka hesaba bakıyordur.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.account.tabs', 10, function (&$tabs, &$uid, &$self) {
    // Yalniz GORUNURLUK: islemi kapatmaz.
    if (!$self) $tabs['security'] = false;
});

Şablona geçen veriyi genişletme

filterclient.predefined_data
Controllers her sayfada

Müşteri sitesinde her sayfa çizilmeden önce çalışır. Buraya eklediğiniz her anahtar bir şablon değişkeni olur.

Parametreler 2
$dataarraybağlaSayfanın veri torbası. 🔴 Var olan bir anahtarı ezerseniz sayfanın kendi verisi kaybolur. Kendi anahtarlarınıza bir önek koyun.
$ctxarraybağlaBağlam: aktif rota ve denetleyici adı. Kanca her sayfada çalıştığı için ağır iş yapmadan önce hangi sayfada olduğunuza bakın.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.predefined_data', 10, function (&$data, &$ctx) {
    // HER sayfada calisir: once rotaya bakin.
    if (($ctx['route'] ?? '') !== 'my-account') return;

    $data['acme_banner'] = Acme::accountBanner();
});

Ana sayfa panellerini değiştirme

filterclient.homepage_panels
website/home tüm ana sayfa panelleri

Ana sayfanın panelleri hazırlandıktan sonra çalışır.

Parametreler 1
$panelsarraybağlaAna sayfa panellerinin ada göre verisi: slaytlar, öne çıkan uzantılar, plan rafı, ürün kartları, özellik blokları ve başlıkları, hakkımızda bandı, öne çıkan yazılımlar, müşteri yorumları, haber ve blog yazıları, istatistikler ve platform logoları. Hepsi tek dizide gelir: yapıyı bozmadan değiştirin, şablon her anahtarı adıyla okur.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.homepage_panels', 10, function (&$panels) {
    // Dort anahtarin hepsi kalmali.
    $panels['product_cards'] = Acme::reorderCards($panels['product_cards'] ?? []);
});

Bakım kararını değiştirme

filterclient.maintenance
Kernel ters okunur

Bakım modu kararı verildikten sonra, sayfa servis edilmeden önce çalışır. Belirli adresleri bakım dışında tutmanın yolu budur.

Parametreler 3
$passive_maintenanceboolbağlaÇekirdeğin kararı. 🔴 Ters okunur: doğru olması bakımın atlanacağı, yanlış olması bakım sayfasının gösterileceği anlamına gelir. Adına bakıp doğru yapmak, siteyi bakımdan çıkarır.
$controllerstringİstenen denetleyicinin adı.
$foundAdminboolİsteğin yönetim adresinde olup olmadığı.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.maintenance', 10,
    function (&$passive_maintenance, $controller, $foundAdmin) {
        // TERS okunur: true = bakim ATLANIR.
        if ($controller === 'status') $passive_maintenance = true;
    });

Fatura listesi satırlarını değiştirme

filterclient.invoice_list_data
ClientInvoices biçimlenmiş satırlar

Müşterinin fatura listesi ekrana gitmeden önce çalışır.

Parametreler 2
$rowsarraybağlaFatura satırları: numarası, rozeti, ödeme bağlantısı, tutarı ve vade satırı. Tutarlar biçimlenmiş metindir: karşılaştırma yapacaksanız faturayı ayrıca okuyun.
$uidintListesi görüntülenen müşteri.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.invoice_list_data', 10, function (&$rows, $uid) {
    foreach ($rows as $i => $r) $rows[$i]['acme_note'] = Acme::noteFor($r['id'] ?? 0);
});

Fatura özetini değiştirme

filterclient.invoice_list_summary
ClientInvoices kartlar ve uyarı

Fatura listesinin üstündeki özet hazırlandıktan sonra çalışır.

Parametreler 2
$summaryarraybağlaİki parça: özet kartları (tümü, ödenmiş, ödenmemiş, vadesi geçmiş) ve açık bakiye uyarısı. Sayıları değiştiriyorsanız uyarı metnini de güncelleyin: ikisi ayrı yerlerden okunur ve tutarsız kalabilir.
$uidintÖzeti görüntülenen müşteri.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.invoice_list_summary', 10, function (&$summary, $uid) {
    // Sayilari degistirirseniz uyari metnini de guncelleyin.
    $summary['outstanding']['show'] = Acme::hideOutstanding($uid) ? false : ($summary['outstanding']['show'] ?? false);
});

Fatura paylaşım adresini değiştirme

filterclient.invoice_share_url
ClientInvoices oturumsuz erişim

Müşteri bir faturayı paylaşmak istediğinde, adres üretildikten sonra çalışır.

Parametreler 3
$shareUrlstringbağlaÜretilen paylaşım adresi. 🔴 Bu adres giriş gerektirmez: onu gören fatura ve ödeme sayfasını açabilir. Kendi kaydınıza yazarsanız erişimi de kopyalamış olursunuz.
$idintFaturanın kimliği.
$ownerIdintFaturanın sahibi.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.invoice_share_url', 10, function (&$shareUrl, $id, $ownerId) {
    // Adres giris gerektirmez: kendi kaydiniza yazmayin.
    $shareUrl = Acme::shorten($shareUrl);
});

Fatura işlem listesini değiştirme

filterclient.invoice_transactions
ClientInvoices iade satırları dâhil

Faturanın ödeme hareketleri ekrana gitmeden önce çalışır.

Parametreler 3
$rowsarraybağlaİşlem satırları: yöntemi, referansı, tarihi, iade olup olmadığı ve tutarı. İadeler de bu listededir: toplam hesaplarken işareti gözetin.
$idintFaturanın kimliği.
$invCidintFaturanın para birimi.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.invoice_transactions', 10, function (&$rows, $id, $invCid) {
    // Iadeler de bu listede.
    foreach ($rows as $i => $r)
        if ($r['refund'] ?? false) $rows[$i]['method'] = 'Acme iade';
});

Toplu ödeme listesini değiştirme

filterclient.bulk_pay_rows
ClientInvoices aktif hesap

Müşterinin birden çok faturayı birlikte ödeyeceği ekranda çalışır.

Parametreler 2
$rowsarraybağlaÖdenebilir fatura satırları. Listeden çıkardığınız fatura ödenemez hâle gelir: müşteri onu ayrıca ödemek zorunda kalır.
$uidintbağlaAktif hesabın kimliği. Giriş yapanın kimliği değildir: alt kullanıcı başka bir hesaba bakıyorsa o hesabın kimliği gelir.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.bulk_pay_rows', 10, function (&$rows, &$uid) {
    // Cikardiginiz fatura burada odenemez hale gelir.
    $rows = array_values(array_filter($rows, fn ($r) => !Acme::onHold($r['id'] ?? 0)));
});

Komisyon listesini değiştirme

filterclient.affiliate_commissions
ClientAffiliate üç durum

Ortağın komisyon listesi ekrana gitmeden önce çalışır.

Parametreler 2
$commissionsarraybağlaKomisyon satırları; her satır bir durum taşır: ödenebilir, bekleyen ya da reddedilmiş. Toplam hesaplarken üçünü ayırın: hepsini toplamak ortağa ödenmeyecek parayı da gösterir.
$commissionsCtxarrayBağlam: hesap kimliği, ortaklık kaydı ve para birimi.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.affiliate_commissions', 10,
    function (&$commissions, $commissionsCtx) {
        // Uc durum var: hepsini toplamayin.
        $commissions = array_values(array_filter($commissions,
            fn ($c) => ($c['flag'] ?? '') !== 'rejected'));
    });

Ödeme kanalı listesini değiştirme

filterclient.affiliate_gateways
ClientAffiliate etiket listesi

Ortağın seçebileceği ödeme kanalları hazırlandıktan sonra çalışır.

Parametreler 2
$outarraybağlaKanal etiketleri. Kimlik değil düz metin listesidir: seçim de bu metinle kaydedilir. Etiketi değiştirmek eski kayıtlarla eşleşmeyi bozabilir.
$gatewaysCtxarrayBağlam: etiketlerin çözüldüğü dil.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.affiliate_gateways', 10, function (&$out, $gatewaysCtx) {
    // Etiket degistirmek eski kayitlarla eslesmeyi bozabilir.
    $out[] = 'Acme Wallet';
});

Yönlendirme hedefini değiştirme

filterclient.affiliate_referral_redirect
ClientAffiliate geçersiz kod da gelir

Ziyaretçi bir ortaklık bağlantısına tıkladığında, yönlendirme yapılmadan önce çalışır.

Parametreler 2
$redirectstringbağlaYönlendirme hedefi.
$redirectCtxarrayBağlam: adresteki ham kod, çözümlenen ortak ve kodun geçerli olup olmadığı. 🔴 Kanca geçersiz kodda da çalışır: geçerlilik işaretine bakmadan ortak kimliğini kullanan bir dinleyici sıfırla iş yapar.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.affiliate_referral_redirect', 10,
    function (&$redirect, $redirectCtx) {
        // Gecersiz kodda da calisir: once isarete bakin.
        if (!($redirectCtx['valid'] ?? false)) return;

        $redirect = Acme::landingFor((int) ($redirectCtx['owner_id'] ?? 0)) ?: $redirect;
    });

Ödeme talebi tutarını değiştirme

filterclient.affiliate_withdraw_amount
ClientAffiliate ortağın para birimi

Ortak kazancının ödenmesini isterken, tutar kaydedilmeden önce çalışır. Yazdığınız değer kayda geçer.

Parametreler 4
$amountfloatbağlaTalep edilen tutar.
$uidintTalep eden hesap.
$cidintOrtağın para birimi. Mağazadaki seçili para birimi değildir: tutarı dönüştürüyorsanız bu değeri kullanın.
$amountCtxarrayBağlam bilgisi.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.affiliate_withdraw_amount', 10,
    function (&$amount, $uid, $cid, $amountCtx) {
        // Para birimi ORTAGIN birimidir, magazaninki degil.
        $amount = Acme::roundToPayoutStep($amount, $cid);
    });

Bayi istatistiklerini değiştirme

filterclient.reseller_stats
ClientReseller faturadan hesaplanır

Bayi panosunun sayıları hesaplandıktan sonra çalışır.

Parametreler 2
$statsarraybağlaBayi sayıları: toplam satış, ciro ve indirimler; bugünkü karşılıklarıyla birlikte.
$statsCtxarrayBağlam: bayinin hesap kimliği.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.reseller_stats', 10, function (&$stats, $statsCtx) {
    $stats['acme_target'] = Acme::monthlyTarget((int) ($statsCtx['uid'] ?? 0));
});

Bayi kademelerini değiştirme

filterclient.reseller_tiers
ClientReseller iki ayrı ekran

Bayi kademe listesi hazırlandıktan sonra çalışır. Kanca iki ayrı ekranda kullanılır.

Parametreler 2
$tiersarraybağlaKademe satırları.
$tiersCtxarrayBağlam: hangi ekran ve hesap kimliği. 🔴 Tanıtım sayfasında hesap kimliği sıfırdır (ziyaretçi giriş yapmamış olabilir); panoda bayinin kimliği gelir. Kimliğe dayanan bir kural iki ekranda farklı davranmalıdır.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.reseller_tiers', 10, function (&$tiers, $tiersCtx) {
    // Tanitim sayfasinda hesap kimligi SIFIR gelir.
    if (($tiersCtx['scope'] ?? '') === 'program') return;

    $tiers = Acme::highlightCurrent($tiers, (int) ($tiersCtx['uid'] ?? 0));
});

Tuzaklar

Bakım işareti ters okunur

Bakım filtresindeki değer "bakım açık mı" değil "bakım atlanacak mı" sorusunu cevaplar. Adına bakıp doğru yapan bir dinleyici, bakım moduna aldığınız siteyi ziyaretçilere açar. Değeri değiştirmeden önce yönünü doğrulayın.

Sekme gizlemek erişimi kapatmaz

Hesap sekmesi filtresi yalnız görünürlüğü yönetir. Sekmeyi kapatmak arkasındaki işlemi kapatmaz: adresi bilen biri oraya doğrudan istek atabilir. Erişimi gerçekten engellemek için ilgili kapıyı kullanın.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.