Yardım Makaleleri
Yardım makalelerini yazan, okuyan, güncelleyen ve kaldıran beş uç.
Genel Bakış
Yardım makalesi iki katmanda yaşar: yapısal veri (kategori, durum, görünürlük, sıra) ve dil başına içerik (başlık, adres parçası, gövde, etiketler, arama motoru alanları).
Başlık her etkin dilde zorunludur. Adres parçası ise isteğe bağlıdır ve boş bırakılırsa başlıktan türetilir; benzersizliği dil başına denetlenir.
Güncelleme adı düzeltme çağrıştırsa da davranışı tam yazımdır: çeviri seti her dil için yeniden kaydedilir. Bu yüzden değişiklik yapmadan önce mevcut hâli okumak gerekir.
Referans
Makaleleri Listeleme
Yardım makalelerini okunma ve oy sayılarıyla döndürür.
curl 'https://panel.ornek.com/api/v1/admin/knowledgebase/articles?search=password' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/knowledgebase/articles', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const poor = data.filter((a) => a.useless > a.useful);$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/articles');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Baslik TEK dilde gelir; ceviri karsilastirmasi icin detayi okumak gerekir.
$rows = Api::Knowledgebase()->GetKnowledgebaseArticles()['data'];
$weak = array_filter($rows, fn ($a) => $a['useless'] > $a['useful']);Makale Yazma
Yeni bir yardım makalesi açar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/knowledgebase/articles' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"category_id":3,"translations":{"en":{"title":"How to reset your password","content":"<p>Open the account page.</p>"}}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/knowledgebase/articles', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
category_id: 3,
status: 'published',
translations: {
en: { title: 'How to reset your password', route: 'reset-password', content: html },
},
}),
});
const { data, meta } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/articles');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'category_id' => 3,
'translations' => ['en' => ['title' => $title, 'content' => $html]],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// HER etkin dilde baslik ister; eksik dil tum cagriyi reddeder, kismi kayit olmaz.
$langs = array_column(Api::Reference()->GetLanguages()['data'], 'code');
foreach ($langs as $l) $t[$l] = ['title' => $titles[$l] ?? $titles['en']];
Api::Knowledgebase()->CreateKnowledgebaseArticle(['translations' => $t]);Makaleyi Okuma
Makaleyi bütün dilleriyle döndürür.
curl 'https://panel.ornek.com/api/v1/admin/knowledgebase/articles/12' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/articles/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const missing = langs.filter((l) => ! data.translations[l]?.content);$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/articles/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Guncellemeden ONCE buradan okuyun: guncelleme ceviri setinin TAMAMINI yeniden yazar.
$a = Api::Knowledgebase()->GetKnowledgebaseArticle(['id' => $id])['data'];
$a['translations']['en']['content'] = $newHtml;Makaleyi Güncelleme
Makalenin tamamını yeniden yazar.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/knowledgebase/articles/12' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":"draft","translations":{"en":{"title":"How to reset your password","content":"<p>Updated steps.</p>"}}}'const cur = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/articles/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
}).then((r) => r.json());
cur.data.translations.en.content = html;
const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/articles/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(cur.data),
});$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/articles/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($article),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Adi PATCH ama davranisi TAM YAZIM: ceviriler her dil icin yeniden kaydedilir.
$a = Api::Knowledgebase()->GetKnowledgebaseArticle(['id' => $id])['data'];
$a['translations']['en']['content'] = $newHtml;
Api::Knowledgebase()->UpdateKnowledgebaseArticle($a + ['id' => $id]);Makaleyi Silme
Makaleyi, bütün çevirilerini ve başlık görselini siler.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/knowledgebase/articles/12' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/knowledgebase/articles/${id}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/knowledgebase/articles/' . $id);
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);// Adres parcasi da gider: o adrese gelen eski baglantilar bulunamadi sayfasina duser.
Api::Knowledgebase()->UpdateKnowledgebaseArticle(['id' => $id, 'status' => 'draft'] + $article);
// silmek yerine taslaga cekmek baglantiyi korurTuzaklar
Güncelleme gövdesi makalenin tamamıdır. Yalnız bir dili gönderirseniz diğer dillerin içeriği yeniden kaydedilmez ve kaybolur. Önce okuma ucundan tam seti alın, üzerinde değişikliği yapın, sonra tümünü geri gönderin.
Başlık her etkin dilde gerekir; biri eksikse çağrı 422 döner ve hiçbir dil kaydedilmez. Yeni bir dil kurulduğunda var olan makaleler o dilde başlıksızdır, yani ilk düzenlemede bu hata karşınıza çıkar. Dil listesini başvuru ucundan alıp gövdeyi ona göre kurun.
Aynı adres parçasını iki makalede kullanmak route_in_use verir, ama bu denetim dil başınadır: aynı parça İngilizcede dolu, Türkçede boş olabilir. Toplu içe aktarmada çakışma tek bir dilde çıkar ve tüm kaydı durdurur.
Gizlilik alanı makaleyi giriş yapmış müşterilere sınırlar; yönetim panelinde ve arama sonuçlarında görünmeye devam eder. Bir içeriği tümüyle kaldırmak istiyorsanız durumu taslağa çekin.
Makale silindiğinde adres parçası da gider ve o adrese gelen dış bağlantılar bulunamadı sayfasına düşer. Arama motorunda yer etmiş bir makaleyi silmek yerine taslağa çekmek çoğu zaman daha iyidir; içerik gizlenir, adres yerinde kalır.
İ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.