Bilgi Bankası Görünüm Kancaları

1.7k görüntülenme Markdown

Ziyaretçinin gördüğü bilgi bankasının dokuz kancası: gövde, ağaç, kapsam, popüler kutusu, arama ve dört gözlem noktası.

Genel Bakış

Ziyaretçinin gördüğü her şey bu kancalardan geçer: makale gövdesi, kategori ağacı, popüler kutusu ve arama sonuçları. Dördü de bağla geçer, yani değişikliği döndürerek değil, gelen değerin üzerine yazarak yaparsınız.

Yanlarında dört gözlem kancası bulunur: makale okunması, kategori açılışı, oy ve arama. Bunlar bir şeyi değiştirmez, olduğunu bildirir.

Referans

Makale okunmasını izleme

actionknowledgebase.article.viewed
website/knowledgebase her açılışta

Bir makale görüntülendiğinde çalışır. Ziyaretçi giriş yapmamış olabilir.

Parametreler 2
$idintGörüntülenen makalenin kimliği.
$articlearrayMakale verisi; okunma sayacı çoktan artırılmış hâliyle.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:knowledgebase.article.viewed', 10, function ($id, $article) {
    // Ziyaretci giris yapmamis olabilir: kimlik varsayimi kurmayin.
    Acme::trackRead($id);
});

Makale oyunu izleme

actionknowledgebase.article.voted
website/knowledgebase iki değerden biri

Ziyaretçi bir makaleyi yararlı ya da yararsız bulduğunda çalışır.

Parametreler 2
$idintOy verilen makalenin kimliği.
$typestringOyun yönü: useful ya da useless.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:knowledgebase.article.voted', 10, function ($id, $type) {
    // Yararsiz oylari yazi ekibine biriktirin.
    if ($type === 'useless') Acme::flagForReview($id);
});

Kategori açılışını izleme

actionknowledgebase.category.viewed
website/knowledgebase seçili dilde

Bir kategori sayfası görüntülendiğinde çalışır.

Parametreler 2
$catIdintGörüntülenen kategorinin kimliği.
$catarrayKategori kaydı, seçili dilde: başlığı, bağlantısı ve arama başlıkları.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:knowledgebase.category.viewed', 10, function ($catId, $cat) {
    Acme::trackCategory($catId);
});
actionknowledgebase.searched
website/knowledgebase filtre sonrası

Ziyaretçi arama yaptığında çalışır. Sonuç boş olabilir; sonuçsuz aramalar yazılacak makaleyi gösteren en iyi listedir.

Parametreler 3
$querystringArama terimi, temizlenmiş hâliyle; boş gelmez.
$resultsarrayNihai sonuçlar, filtreden geçtikten sonra. Boş dizi sonuç bulunamadığı anlamına gelir.
$langstringAramanın yapıldığı dil.
Dönüş 1
voidDönüş yoksayılır. Sonucu değiştirmek için bu kanca değil, arama sonucu filtresi kullanılır.
Dinleyici
Hook::add('action:knowledgebase.searched', 10, function ($query, $results, $lang) {
    // Sonucsuz aramalar yazilacak makaleyi gosterir.
    if (!$results) Acme::noteGap($query, $lang);
});

Makale gövdesini değiştirme

filterknowledgebase.article_content
website/knowledgebase bağla geçer

Makale gövdesi ekrana gitmeden önce çalışır. Kendi kısa kodlarınızı burada çözer, sürüm numarası gibi değişkenleri buraya gömersiniz.

Parametreler 2
$contentstringbağlaMakalenin ham gövdesi. Üzerine yazdığınız hâli nihai gövdedir.
$ctxarraybağlaBağlam: makalenin kimliği, aktif dil ve kategorisi.
Dönüş 1
voidDönüş yoksayılır; gövdenin üzerine yazarsınız. Gövde ham işaretlemedir ve doğrudan ekrana gider: buraya koyduğunuz kullanıcı verisini kendiniz temizleyin.
Dinleyici
Hook::add('filter:knowledgebase.article_content', 10, function (&$content, &$ctx) {
    // Kendi kisa kodunuzu cozun.
    $content = str_replace('[surum]', Acme::currentVersion(), $content);
});

Görünecek kategorileri sınırlama

filterknowledgebase.category_scope
website/knowledgebase boş = kısıt yok

Makale sorguları kurulurken çalışır. Bilgi bankasını bir kitleye daraltmanın yolu budur: bayilere ayrı, son müşteriye ayrı.

Parametreler 2
$scopearraybağlaSorguların sınırlanacağı kategori kimlikleri. Kancaya her zaman boş girer, ve boş bırakmak kısıt yok demektir: dokunmazsanız bilgi bankasının tamamı görünür.
$ctxarraybağlaBağlam: hangi sayfa ve hangi dil. Salt bilgidir; değiştirmek akışı etkilemez.
Dönüş 1
voidDönüş yoksayılır; listeye kimlik yazarsınız.
Dinleyici
Hook::add('filter:knowledgebase.category_scope', 10, function (&$scope, &$ctx) {
    // Bos birakmak "kisit yok" demektir: daraltmak istiyorsaniz doldurun.
    if (!Acme::isReseller()) $scope = Acme::publicCategories();
});

Kategori ağacını değiştirme

filterknowledgebase.category_tree
website/knowledgebase bağla geçer

Yan taraftaki kategori ağacı hazırlandıktan sonra çalışır.

Parametreler 2
$treearraybağlaÜst seviye düğümler. Üzerine yazdığınız hâli nihai ağaçtır.
$ctxarraybağlaBağlam: hangi sayfa ve hangi dil.
Dönüş 1
voidDönüş yoksayılır; ağacın üzerine yazarsınız.
Dinleyici
Hook::add('filter:knowledgebase.category_tree', 10, function (&$tree, &$ctx) {
    // Ic kullanim dalini ziyaretciden gizleyin.
    $tree = array_values(array_filter($tree, fn ($n) => ($n['id'] ?? 0) !== Acme::INTERNAL_CAT));
});
filterknowledgebase.popular_articles
website/knowledgebase bağla geçer

Yan taraftaki popüler makale kutusu doldurulurken çalışır.

Parametreler 2
$articlesarraybağlaListelenecek makaleler: başlıkları, bağlantıları ve okunma sayıları.
$ctxarraybağlaBağlam: hangi sayfa, hangi dil ve istenen kayıt sayısı. Listeye eklerken sınırı kendiniz gözetin: fazlası kutuya sığmaz.
Dönüş 1
voidDönüş yoksayılır; listenin üzerine yazarsınız.
Dinleyici
Hook::add('filter:knowledgebase.popular_articles', 10, function (&$articles, &$ctx) {
    // Sinir baglamda gelir: fazlasi kutuya sigmaz.
    array_unshift($articles, Acme::featuredArticle());
    $articles = array_slice($articles, 0, (int) ($ctx['limit'] ?? 6));
});

Arama sonuçlarını değiştirme

filterknowledgebase.search_results
website/knowledgebase bağla geçer

Arama sonuçları ekrana gitmeden önce çalışır. Kendi kaynağınızdan sonuç eklemenin ya da sıralamayı değiştirmenin yeri burasıdır.

Parametreler 2
$resultsarraybağlaHam sonuç satırları: başlık, bağlantı, kategori adı ve okunma sayısı.
$ctxarraybağlaBağlam: arama metni ve dil.
Dönüş 1
voidDönüş yoksayılır; listenin üzerine yazarsınız. Burada yaptığınız değişiklik arama olayına da geçer: o kanca sizden sonra çalışır ve düzeltilmiş listeyi görür.
Dinleyici
Hook::add('filter:knowledgebase.search_results', 10, function (&$results, &$ctx) {
    // Kendi kaynaginizdan sonuc ekleyin.
    foreach (Acme::search($ctx['query'] ?? '', $ctx['lang'] ?? '') as $row) $results[] = $row;
});

Tuzaklar

Boş kapsam kısıt değil, kısıtsızlıktır

Kapsam listesi kancaya her zaman boş girer ve boş kalması “bilgi bankasının tamamı görünsün” demektir. Erişimi daraltmak isteyip listeyi boş bırakmak, tam tersini yapar.

Gövde ham işaretlemedir

Makale gövdesi doğrudan ekrana gider; temizlenmez. Gövdeye dışarıdan gelen bir değer gömüyorsanız kaçışını kendiniz yapı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.