Ana Sayfa Slaytları

1.6k görüntülenme Markdown

Ana sayfa slider slaytlarını, görsellerini ve videolarını yöneten sekiz uç.

Genel Bakış

Slaytlar ana sayfanın üstündeki döner alanı besler. Her slaytın bir ana görseli vardır ve bu görsel zorunludur; metinler, bağlantı ve video isteğe bağlıdır.

Metinler dil başına tutulur: başlık, açıklama ve bağlantı her dilde ayrı yaşar. Bir dilde metin bırakmazsanız slayt orada sessizce yalnız görselden ibaret kalır.

Görsel ve video için ayrı uçlar vardır. Görsel her zaman bulunur; video isteğe bağlı bir katmandır ve kaldırıldığında slayt görseline geri döner.

Referans

Slaytları Listeleme

get/api/v1/admin/website/slides
Website/GetSlides admin

Ana sayfa slider slaytlarını döndürür.

Sorgu 3
searchstringBaşlıkta arar.
pageintKaçıncı sayfa.
limitintSayfa başına kayıt. En çok yüz.
Dönen alanlar data[] — 4 + meta — 4
idintSlaytın numarası.
titlestringGeçerli dildeki başlığı.
linkstringGeçerli dildeki bağlantısı.
created_atstringOluşturulma anı.
totalintToplam slayt. Meta altında döner.
pageintBulunulan sayfa.
limitintSayfa boyutu.
next_pageintSonraki sayfa. Sıfır, son sayfadasınız demektir.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/website/slides' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/website/slides', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Liste DURUMU ve SIRAYI tasimaz: hangi slaytin yayinda oldugunu detaydan okuyun.
$slides = Api::Website()->GetSlides()['data'];

Slayt Detayı

get/api/v1/admin/website/slides/{id}
Website/GetSlide admin

Tek bir slaytı metinleri, görseli ve videosuyla döndürür.

Dönen alanlar data — 7
idintSlaytın numarası.
statusstringSlayt yayında mı.
rankintSlider içindeki sırası.
created_atstring | nullOluşturulma anı.
languagesobjectDil başına başlık, açıklama ve bağlantı.
imagestring | nullAna görselin adresi.
videoobject | nullVideo: adresi ve süresi. Video atanmamışsa boştur.
Hatalar 2
slide_not_found404Slayt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/website/slides/2' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $id);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Video alani BOS gelebilir; okumadan once varligini sinayin.
$slide = Api::Website()->GetSlide(['id' => $id])['data'];
$clip  = $slide['video']['url'] ?? null;

Slayt Oluşturma

post/api/v1/admin/website/slides
Website/CreateSlide admin görsel zorunlu

Ana sayfa slider'ına yeni bir slayt ekler.

Gövde 4
imagestringreqSlaytın ana görseli. Görselsiz slayt oluşturulamaz.
statusstringSlayt yayında mı. Öntanımlı olarak yayında.
rankintSlider içindeki sırası.
languagesobjectDil başına başlık, açıklama ve bağlantı. Metinlerin hiçbiri zorunlu değil.
Dönen alanlar 201 — data — 7
dataobjectOluşan slayt. Detay ucuyla aynı şekildedir.
Hatalar 3
image_required422Ana görsel gönderilmedi.
create_failed500Slayt oluşturulamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/website/slides' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"image":"https://ornek.com/slayt.jpg","languages":{"tr":{"title":"Hos geldiniz"}}}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/website/slides', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    image: 'https://example.com/slide.jpg',
    languages: { en: { title: 'Welcome', link: 'https://example.com/' } },
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'image'     => 'https://example.com/slide.jpg',
        'languages' => ['en' => ['title' => 'Welcome', 'link' => 'https://example.com/']],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Slayt ACIK dogar ve ana sayfaya hemen girer; hazir degilse durumu kapali gonderin.
Api::Website()->CreateSlide([
    'image'  => $data,
    'status' => 'inactive',
]);

Slaytı Güncelleme

patch/api/v1/admin/website/slides/{id}
Website/UpdateSlide admin

Slaytın durumunu, sırasını ve metinlerini değiştirir.

Gövde 4
statusstringSlayt yayında mı.
rankintSlider içindeki sırası.
languagesobjectDil başına başlık, açıklama ve bağlantı.
imagestringAna görseli aynı istekte değiştirir.
Dönen alanlar data — 7
dataobjectGüncel slayt. Detay ucuyla aynı şekildedir.
Hatalar 2
slide_not_found404Slayt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/website/slides/2' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"inactive","rank":1}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ status: 'inactive', rank: 1 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $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', 'rank' => 1]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sira numarasi baska slaytlari OTELEMEZ; ayni sayiyi iki slayta verirseniz sira belirsizlesir.
foreach ($order as $i => $slideId)
    Api::Website()->UpdateSlide(['id' => $slideId, 'rank' => $i]);

Slaytı Silme

delete/api/v1/admin/website/slides/{id}
Website/DeleteSlide admin

Slaytı, görselini ve videosunu kaldırır.

Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
idintSilinen slaytın numarası.
Hatalar 3
slide_not_found404Slayt bulunamadı.
delete_failed500Slayt silinemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/slides/2' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $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);
// Mevsimlik bir slayti silmek yerine DURUMU kapatin: gorsel ve metinler durur.
Api::Website()->UpdateSlide(['id' => $id, 'status' => 'inactive']);

Slayt Görselini Değiştirme

put/api/v1/admin/website/slides/{id}/image
Website/SetSlideImage admin

Slaytın ana görselini yenisiyle değiştirir.

Gövde 1
imagestringreqYeni ana görsel. Küçük resmi de üretilir.
Dönen alanlar 201 — data — 1
urlstringYeni görselin genel adresi.
Hatalar 2
slide_not_found404Slayt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/website/slides/2/image' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"image":"https://ornek.com/yeni.jpg"}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}/image`, {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ image: 'https://example.com/new.jpg' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $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/new.jpg']),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Ayni isi guncelleme cagrisi da yapar; ayri uc yalniz gorseli degistirmek icindir.
Api::Website()->SetSlideImage(['id' => $id, 'image' => $data]);

Slayt Videosu Atama

put/api/v1/admin/website/slides/{id}/video
Website/SetSlideVideo admin

Slayta arka plan videosu atar.

Gövde 2
videostringreqYüklenecek video. Tek bir biçim kabul edilir.
video_durationintVideonun uzunluğu. Slider geçiş süresini buna göre ayarlar.
Dönen alanlar 201 — data — 2
urlstringVideonun genel adresi.
durationintKaydedilen uzunluk.
Hatalar 2
slide_not_found404Slayt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/website/slides/2/video' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"video":"https://ornek.com/klip.mp4","video_duration":12}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}/video`, {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    video: 'https://example.com/clip.mp4',
    video_duration: 12,
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $id . '/video');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'video'          => 'https://example.com/clip.mp4',
        'video_duration' => 12,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sureyi VERMEZSENIZ slider gecisi videoyla uyusmaz; saniyeyi birlikte gonderin.
Api::Website()->SetSlideVideo([
    'id' => $id, 'video' => $data, 'video_duration' => 12,
]);

Slayt Videosunu Kaldırma

delete/api/v1/admin/website/slides/{id}/video
Website/DeleteSlideVideo admin

Slaytın videosunu kaldırır ve görseline geri döner.

Dönen alanlar data — 2
deletedboolİşlem çalıştı mı. Video zaten yoksa da doğru döner.
idintSlaytın numarası.
Hatalar 2
slide_not_found404Slayt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/slides/2/video' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/slides/${id}/video`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/slides/' . $id . '/video');
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);
// Videosu olmayan slaytta cagri SESSIZCE gecer; once kontrol etmeye gerek yok.
Api::Website()->DeleteSlideVideo(['id' => $id]);

Tuzaklar

Yeni slayt hemen ana sayfaya girer

Durum alanını göndermezseniz slayt açık oluşur ve ziyaretçiler onu o an görmeye başlar. Ana sayfa sitenin en görünür yeridir; hazırlık aşamasındaki bir slaytı kapalı oluşturup metinleri tamamladıktan sonra açın.

Liste durum ve sıra taşımaz

Listeleme ucu numarayı, başlığı, bağlantıyı ve tarihi verir; durum ve sıra alanları yoktur. Yani listeden hangi slaytın yayında olduğunu ya da hangi sırayla göründüklerini anlayamazsınız. Bu bilgi için her slaytı detay ucundan okuyun; slayt sayısı genelde azdır.

Sıra numarası ötelemez

Bir slayta sıra numarası vermek diğerlerini kaydırmaz. İki slayta aynı sayıyı verirseniz hangisinin önce geleceği belirsizleşir ve sıralama sayfa yenilendikçe değişebilir. Sırayı yeniden düzenlerken hepsine sırayla artan numaralar yazın.

Video süresi verilmezse geçiş uyuşmaz

Slider bir sonraki slayta ne zaman geçeceğini verdiğiniz süreye göre ayarlar. Video yükleyip süreyi göndermezseniz geçiş videoyla uyuşmaz: klip yarıda kesilir ya da bittikten sonra donuk bir kare kalır. Süreyi videoyla birlikte gönderin.

Görsel silinemez, ancak değiştirilir

Videonun kaldırma ucu vardır, görselin yoktur. Ana görsel slaytın var olma şartıdır: değiştirebilirsiniz ama boş bırakamazsınız. Görselden vazgeçmek istiyorsanız yapılacak şey slaytı silmektir; slaytı silmek görselini ve videosunu da götürü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.