Yardım Kategorileri
Yardım kategorilerini açan, okuyan, güncelleyen ve kaldıran beş uç.
Genel Bakış
Kategoriler yardım makalelerini gruplar ve ağaç kurar: her kategori bir üst kategoriye bağlanabilir, kök olanların üstü sıfırdır.
Makalelerle aynı sözleşmeyi taşırlar: başlık her etkin dilde zorunlu, adres parçası isteğe bağlı ve dil başına benzersiz, güncelleme ise tam yazım.
Bir fark vardır: kategorinin arama motoru alanları indeksleme açıkken saklanır. Kapalıyken doldurulan alanlar kaydedilmez.
Referans
Kategorileri Listeleme
Yardım kategorilerini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/knowledgebase/categories' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/knowledgebase/categories', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const byId = Object.fromEntries(data.map((c) => [c.id, c.title]));$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/categories');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Listede UST KATEGORI numarasi YOKTUR: agaci kurmak icin her kategorinin detayi gerekir.
$rows = Api::Knowledgebase()->GetKnowledgebaseCategories()['data'];
foreach ($rows as $c)
$parent[$c['id']] = Api::Knowledgebase()->GetKnowledgebaseCategory(['cid' => $c['id']])['data']['parent_id'];Kategori Açma
Yeni bir yardım kategorisi açar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/knowledgebase/categories' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"parent_id":0,"icon":"bi bi-book","translations":{"en":{"title":"Billing"}}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/knowledgebase/categories', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
parent_id: 0,
icon: 'bi bi-book',
seo_index: true,
translations: { en: { title: 'Billing', sub_title: 'Invoices and payments' } },
}),
});
const { data, meta } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/categories');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'parent_id' => 0, 'translations' => ['en' => ['title' => 'Billing']],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Arama motoru alanlari indeksleme KAPALIYKEN saklanmaz: doldursaniz da kaybolurlar.
Api::Knowledgebase()->CreateKnowledgebaseCategory([
'seo_index' => true,
'translations' => ['en' => ['title' => 'Billing', 'seo_title' => 'Billing help']],
]);Kategoriyi Okuma
Kategoriyi bütün dilleriyle döndürür.
curl 'https://panel.ornek.com/api/v1/admin/knowledgebase/categories/3' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/categories/${cid}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/categories/' . $cid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ust kategori numarasi YALNIZ burada gelir; agac kurarken bu ucu her kategori icin cagirin.
$c = Api::Knowledgebase()->GetKnowledgebaseCategory(['cid' => $cid])['data'];
$isRoot = (int) $c['parent_id'] === 0;Kategoriyi Güncelleme
Kategorinin tamamını yeniden yazar.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/knowledgebase/categories/3' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":"inactive","translations":{"en":{"title":"Billing"}}}'const cur = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/categories/${cid}`, {
headers: { Authorization: `Bearer ${apiKey}` },
}).then((r) => r.json());
const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/categories/${cid}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ ...cur.data, rank: 2 }),
});$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/categories/' . $cid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($category),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kategoriyi kapatmak makaleleri SILMEZ ama musteri onlara kategoriden ulasamaz.
$c = Api::Knowledgebase()->GetKnowledgebaseCategory(['cid' => $cid])['data'];
$c['status'] = 'inactive';
Api::Knowledgebase()->UpdateKnowledgebaseCategory($c + ['cid' => $cid]);Kategoriyi Silme
Kategoriyi ve bütün çevirilerini siler.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/knowledgebase/categories/3' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/categories/${cid}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/categories/' . $cid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Icindeki makaleler KALIR ve kategorisiz duser; once onlari baska bir kategoriye tasiyin.
$arts = Api::Knowledgebase()->GetKnowledgebaseArticles()['data'];
foreach ($arts as $a) { /* kategorisi $cid olanlari tasiyin */ }
Api::Knowledgebase()->DeleteKnowledgebaseCategory(['cid' => $cid]);Tuzaklar
Kategori listesi üst kategori numarasını taşımaz; geriye numara, başlık, adres, durum ve simge kalır. Ağaç kurmak için her kategoriyi ayrı ayrı okumanız gerekir. Büyük bir bilgi bankasında bu, kategori sayısı kadar çağrı demektir.
Makalelerde olduğu gibi güncelleme gövdesi kategorinin tamamıdır. Tek başına sırayı değiştirmek için bile önce mevcut hâli okuyup üzerine yazmalısınız; aksi hâlde göndermediğiniz diller ve alanlar boşalır.
Arama motoru başlığı, anahtar kelimeleri ve açıklaması indeksleme açıkken kalıcı olur. Kapalıyken bu alanları doldurmak hata vermez, ama değerler kaydedilmez ve bir sonraki okumada boş görünür. Önce indekslemeyi açın.
Kategori silindiğinde içindeki makaleler silinmez; kategorisiz kalırlar ve müşteri onlara kategori listesinden ulaşamaz. Makaleler hâlâ adreslerinden ve aramadan bulunur, ama gezinme kırılır. Silmeden önce makaleleri taşıyın.
Bir kategorinin üstü kendisi olamaz ve bu denetlenir. Daha uzun halkalar (A üstü B, B üstü A) için aynı güvence yoktur; ağacı yeniden düzenlerken döngü kurmamaya kendiniz dikkat edin.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.