Site Kategorileri
Blog ve referans kategorilerini kuran, taşıyan ve kaldıran yedi uç.
Genel Bakış
Kategoriler iki içerik tipinde vardır: blog yazıları ve referanslar. Düz sayfaların, sözleşmelerin ve haberlerin kategorisi yoktur, bu yüzden bu uçlarda da yer almazlar.
Kategoriler bir ağaç kurar. Her kaydın bir üst kategorisi olabilir ve sıfır onu köke koyar. Bu bilgi yalnız detay ucunda döner; liste kayıtları düz sırayla verir.
Yapı sayfalarınkiyle aynıdır: içerik dil başına tutulur, tip oluşturmada sabitlenir ve adres her dilde benzersizdir. Görsel tarafı daha basittir; kategorinin tek bir başlık görseli vardır.
Referans
Kategorileri Listeleme
Seçtiğiniz tipteki kategorileri döndürür.
articles, references. Öntanımlı olarak blog kategorileri.curl 'https://panel.ornek.com/api/v1/admin/website/categories?type=articles' \
-H "Authorization: Bearer $API_KEY"const url = new URL('https://panel.ornek.com/api/v1/admin/website/categories');
url.searchParams.set('type', 'articles');
const res = await fetch(url, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories?' . http_build_query(['type' => 'articles']));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Liste UST KATEGORIYI tasimaz: agaci kurmak icin her kaydi ayrica okumaniz gerekir.
$cats = Api::Website()->GetCategories([], ['type' => 'articles'])['data'];Kategori Detayı
Tek bir kategoriyi bütün dilleriyle döndürür.
articles, references.curl 'https://panel.ornek.com/api/v1/admin/website/categories/3' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/categories/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories/' . $id);
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 bu alandan kurulur.
$cat = Api::Website()->GetCategory(['id' => $id])['data'];
$isRoot = $cat['parent'] === 0;Kategori Oluşturma
Yeni bir kategori açar ve dillerini yazar.
articles, references. Sonradan değiştirilemez.curl -X POST 'https://panel.ornek.com/api/v1/admin/website/categories' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"type":"articles","languages":{"tr":{"title":"Duyurular"}}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/website/categories', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'articles',
languages: { en: { title: 'Announcements' } },
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'type' => 'articles',
'languages' => ['en' => ['title' => 'Announcements']],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Alt kategori kurmak icin UST numarasini verin; sifir kategoriyi koke koyar.
Api::Website()->CreateCategory([
'type' => 'articles',
'parent' => $parentId,
'languages' => ['en' => ['title' => 'Release notes']],
]);Kategoriyi Güncelleme
Kategorinin gönderdiğiniz alanlarını ve dillerini değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/website/categories/3' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":"inactive"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/categories/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ status: 'inactive' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['status' => 'inactive']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ust kategoriyi degistirmek AGACI tasir; altindakiler onunla birlikte gelir.
Api::Website()->UpdateCategory(['id' => $id, 'parent' => $newParent]);Kategoriyi Silme
Kategoriyi ve altındaki bütün kategorileri kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/categories/3' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/categories/${id}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
console.log(data.removed); // [3, 7, 8]$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories/' . $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);// Kac kaydin gittigini DONEN listeden okuyun; tek numara sandiginiz cagri bir dal silebilir.
$gone = Api::Website()->DeleteCategory(['id' => $id])['data']['removed'];Kategori Görseli Yükleme
Kategorinin başlık görselini yükler ve öncekinin yerine koyar.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/website/categories/3/image' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"image":"https://ornek.com/kapak.jpg"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/categories/${id}/image`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ image: 'https://example.com/cover.jpg' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories/' . $id . '/image');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['image' => 'https://example.com/cover.jpg']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kategoride TEK gorsel vardir; sayfalardaki gibi tur secmeye gerek yoktur.
Api::Website()->UploadCategoryImage(['id' => $id, 'image' => $data]);Kategori Görselini Kaldırma
Kategorinin başlık görselini kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/categories/3/image' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/categories/${id}/image`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/categories/' . $id . '/image');
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);// Gorseli DEGISTIRMEK icin once silmeye gerek yok; yukleme zaten yerine koyar.
Api::Website()->DeleteCategoryImage(['id' => $id]);Tuzaklar
Bir kategoriyi silmek altındaki bütün kategorileri de siler. Tek kayıt sildiğinizi sanırken bir ağaç dalı gidebilir. Yanıttaki silinenler listesi gerçekte ne gittiğini söyler; onu okumadan işlemi başarılı saymayın. Silmeden önce detayı okuyup üst kategori bağlarını görmek en güvenlisidir.
Listeleme ucu üst kategori alanını döndürmez; kayıtları düz bir sıra hâlinde verir. Yani listeden bir ağaç kuramazsınız. Hiyerarşiye ihtiyacınız varsa her kaydı detay ucundan okumanız gerekir; kategori sayısı azdır, bu genelde sorun çıkarmaz.
Kategori tipi kaydın kimliğinin parçasıdır ve güncelleme onu yoksayar. Blog kategorisi olarak açılmış bir kayıt referans kategorisine dönüşmez. Yanlış tiple açılan bir kategoriyi düzeltmek, doğru tiple yenisini kurup içindekileri taşımak demektir.
Aynı adres farklı dillerde yan yana durabilir, ama tek bir dilde iki kategori aynı adresi taşıyamaz. Kategoriler ve sayfalar aynı adres alanını paylaştığı için bir kategorinin adresi bir sayfayla da çakışabilir. Adres göndermezseniz başlıktan üretilir.
Güncellemede üst kategoriyi değiştirmek, kategorinin altındakileri de birlikte taşır. Bir kategoriyi kendi altındaki bir kategorinin altına koymak ise ağacı kendi üzerine kapatır ve o dal listelerden düşer. Taşımadan önce hedefin taşınan dalın içinde olmadığından emin olun.
İ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.