Blog ve Yorum Kancaları

1.6k görüntülenme Markdown

Blog yorumlarının yedi kancası: moderasyon, düzenleme, silme, oy ve liste.

Genel Bakış

Blog yorumlarının yolu burada: yazılır, süzgeçten geçer, listelenir, moderasyondan geçer ve gerekirse silinir.

İki ayrım baştan bilinmeli. Misafir yorumunda yazar kimliği sıfırdır. Ve moderasyon kapısı size talebi, olay ise sonucu verir: sabitleme bir aç-kapa olduğu için ikisi aynı değildir.

Referans

Yorum moderasyonunu durdurma

gateclient.blog_comment_moderate
ClientBlog talep, sonuç değil

Bir yoruma moderasyon uygulanmadan önce çalışır.

Parametreler 5
$cidintYorumun kimliği.
$actionstringTalep edilen işlem: onay, istenmeyen ya da sabitleme. ? Sabitleme bir aç-kapa talebidir: sonucun sabitleme mi kaldırma mı olacağı kaydın mevcut durumuna bağlıdır. Buradaki değer sonucu değil isteği söyler.
$actor_idintİşlemi yapan yöneticinin kimliği.
$author_idintYorumun yazarı. Misafir yorumunda sıfırdır: üyeye bağlı iş yapmadan önce sınayın.
$owner_idintYorumun ait olduğu makale.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:client.blog_comment_moderate', 10,
    function ($cid, $action, $actor_id, $author_id, $owner_id) {
        // 'pin' bir AC-KAPA talebidir: sonucu buradan bilemezsiniz.
        if ($action === 'spam' && Acme::protectedAuthor($author_id))
            return 'Bu yazarin yorumu istenmeyen isaretlenemez.';

        return null;
    });

Yorum moderasyonunu izleme

actionclient.blog_comment_moderated
ClientBlog sonuç, talep değil

Moderasyon uygulandıktan sonra çalışır. Kapının aksine buradaki değer gerçekleşen işlemdir.

Parametreler 5
$cidintYorumun kimliği.
$actionstringGerçekleşen işlem: onaylandı, istenmeyen, sabitlendi ya da sabitleme kaldırıldı. Kapıdaki üç değerin aksine burada dört değer vardır: aç-kapa talebi burada iki ayrı sonuca ayrılmıştır.
$actor_idintİşlemi yapan yönetici.
$author_idintYorumun yazarı. Misafir yorumunda sıfırdır: üyeye bağlı iş yapmadan önce sınayın.
$owner_idintYorumun ait olduğu makale.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.blog_comment_moderated', 10,
    function ($cid, $action, $actor_id, $author_id, $owner_id) {
        // Burada DORT deger var: sabitleme ikiye ayrilmis.
        if ($action === 'approved' && $author_id) Acme::thankAuthor($author_id);
    });

Yorum düzenlemesini izleme

actionclient.blog_comment_edited
ClientBlog gövde kodlanmış

Bir yorum yönetici tarafından düzenlendikten sonra çalışır.

Parametreler 5
$cidintYorumun kimliği.
$actor_idintDüzenlemeyi yapan yönetici.
$author_idintYorumun yazarı. Misafir yorumunda sıfırdır: üyeye bağlı iş yapmadan önce sınayın.
$oldstringDüzenleme öncesi gövde. İkisi de kodlanmış hâlde gelir: doğrudan gösterirseniz işaretleme görünür metin olur.
$newstringDüzenleme sonrası gövde, kaydedilen hâliyle.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.blog_comment_edited', 10,
    function ($cid, $actor_id, $author_id, $old, $new) {
        // Iki govde de KODLANMIS gelir.
        Acme::auditEdit($cid, $actor_id, html_entity_decode($old), html_entity_decode($new));
    });

Yorum silinmesini izleme

actionclient.blog_comment_deleted
ClientBlog yanıtlar da gider

Bir yorum silindikten sonra çalışır.

Parametreler 5
$cidintSilinen yorumun kimliği; kayıt artık yoktur.
$actor_idintSilen yönetici.
$author_idintYorumun yazarı. Misafir yorumunda sıfırdır: üyeye bağlı iş yapmadan önce sınayın.
$owner_idintYorumun ait olduğu makale.
$parent_idintYanıtlanan yorumun kimliği. ? Sıfırsa kök yorum silinmiştir ve altındaki yanıtlar da gitmiştir — ama onlar için ayrı çağrı gelmez. Kendi kaydınızda dalı bütün olarak temizleyin.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.blog_comment_deleted', 10,
    function ($cid, $actor_id, $author_id, $owner_id, $parent_id) {
        // Kok yorumda yanitlar da gitti ama ayri cagri gelmez.
        if ($parent_id === 0) Acme::dropBranch($cid);
        else Acme::dropComment($cid);
    });

Yorum oyunu izleme

actionclient.blog_comment_voted
ClientBlog aç-kapa

Bir yoruma faydalı oyu verildiğinde ya da geri alındığında çalışır.

Parametreler 4
$cidintOy verilen yorum.
$viewer_idintOyu veren üye. Bu akış üyeye özeldir: değer her zaman doludur.
$activeboolYön: doğruysa oy verildi, yanlışsa geri alındı.
$countintOy sonrası güncel toplam.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.blog_comment_voted', 10,
    function ($cid, $viewer_id, $active, $count) {
        if ($active && $count >= 10) Acme::promoteComment($cid);
    });

Yorum gövdesini kaydetmeden değiştirme

filterclient.blog_comment_message
ClientBlog ham metin

Yorum kaydedilmeden önce çalışır. Kendi süzgecinizi kurmanın yeri burasıdır.

Parametreler 2
$messagestringbağlaYorum gövdesi, ham hâliyle: henüz kodlanmamış. Üzerine yazdığınız değer kaydedilir.
$ctxarraybağlaBağlam: makale, yanıtlanan yorum, üye kimliği ve misafir olup olmadığı. Misafirde üye kimliği sıfırdır.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.blog_comment_message', 10, function (&$message, &$ctx) {
    // Govde HAM: kodlama sonra yapilir.
    $message = Acme::stripLinks($message);
});

Yorum listesini değiştirme

filterclient.blog_comment_list
ClientBlog yönetici fazlasını görür

Yorumlar ekrana gitmeden önce çalışır. Yanıt listeleri için de ayrıca çalışır.

Parametreler 2
$itemsarraybağlaGösterilecek yorumlar, biçimlenmiş alanlarıyla.
$ctxarraybağlaBağlam: yanıt listesi mi, hangi makale, bakan yönetici mi. ? Yönetici bakıyorsa onay bekleyen yorumlar da listededir. Bunu hesaba katmayan bir dinleyici, yayımlanmamış içeriği sayar ya da dışarı taşır.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.blog_comment_list', 10, function (&$items, &$ctx) {
    // Yonetici bakiyorsa onay bekleyenler de listede.
    if ($ctx['is_admin'] ?? false) return;

    $items = Acme::hideFlagged($items);
});

Tuzaklar

Kapı talebi, olay sonucu söyler

Moderasyon kapısında sabitleme aç-kapa bir taleptir: sonucun sabitleme mi kaldırma mı olacağını oradan bilemezsiniz. Olay kancasında ise değer ikiye ayrılmış hâlde gelir. Kapıda sonuç varsayan bir kural, sabitlemeyi kaldıran işlemi yanlış değerlendirir.

Kök yorum silinince yanıtları da gider

Silme olayında üst kimlik sıfırsa bir kök yorum silinmiştir ve altındaki bütün yanıtlar onunla birlikte gitmiştir. Ama o yanıtlar için ayrı çağrı gelmez: kendi tarafınızda dalı bütün olarak temizlemeniz gerekir, yoksa öksüz kayıtlar kalır.

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.