Sitenizde tartışma

Kodu sayfaya yapıştırın — bloğun kabı neredeyse tartışma bloğu orada belirir. Geri kalan her şey bizim çerçevemizin içinde yaşar: sizin işaretlemeniz, stilleriniz ve betikleriniz olduğu gibi kalır.

Kendi sayfanızda deneyin

Sayfanın adresini yazın — kodu alın ve bloğu hemen burada görün. Önizleme, kopyaladığınız kodun aynısını kullanır: bir kapsayıcı, bir betik.

Hazır kod

<div data-vpvd-thread data-url="https://example.org/article" data-lang="tr" data-theme="auto">
  <a href="https://vpvd.io/embed/tr?url=https%3A%2F%2Fexample.org%2Farticle&amp;theme=auto" target="_blank" rel="noopener">Tartışmayı vpvd üzerinde aç</a>
</div>
<script src="https://vpvd.io/embed.js" async referrerpolicy="no-referrer"></script>

Okuyucularınız ne görecek

Site lansmandan önce kapalı: konu anonim olarak okunabilir, ancak giriş henüz çalışmıyor — sayfanızdaki okuyucu şimdilik bir yere gitmeyen bir düğme görür. Giriş, lansman günü açılır.

Nereye yapıştırılır

Kod her yerde aynı; farklı olan yalnızca konduğu yer.

  • Statik siteler ve kendi şablonlarınız Tartışmanın sayfada durması gereken yer: yazının ya da kaydın şablonu.
  • WordPress Yazı düzenleyicideki özel kod bloğu ya da kenar çubuğundaki kod aracı. Bazı düzenleyiciler kaydederken betik etiketini atar — yayımlanmış sayfayı açıp bloğun yerinde olduğunu kontrol edin.
  • Tilda Kendi kodunuzu ekleyen blok, «Diğer» bölümünden: parçayı betik etiketiyle birlikte tamamen yapıştırın.
  • Next.js, Nuxt, React Betik site şablonunda bir kez yüklenir; bileşen kapsayıcıyı koyar ve söküldüğünde bloğu kaldırır — yoksa sayfa geçişinde kapsayıcıda eski çerçeve kalır.
<div data-vpvd-thread data-url="https://example.org/article" data-lang="tr" data-theme="auto">
  <a href="https://vpvd.io/embed/tr?url=https%3A%2F%2Fexample.org%2Farticle&amp;theme=auto" target="_blank" rel="noopener">Tartışmayı vpvd üzerinde aç</a>
</div>
<script src="https://vpvd.io/embed.js" async referrerpolicy="no-referrer"></script>

Next.js, Nuxt, React

// components/VpvdThread.tsx — one page's discussion. Load the script once in the layout:
// <Script src="https://vpvd.io/embed.js" strategy="afterInteractive" />
'use client';
import { useEffect, useRef } from 'react';

export default function VpvdThread() {
	const box = useRef<HTMLDivElement>(null);
	useEffect(() => {
		const el = box.current;
		const vpvd = (window as any).vpvd;
		if (el && vpvd) vpvd.mount(el);
		return () => { if (el && vpvd) vpvd.destroy(el); };
	}, []);
	return (
		<div ref={box} data-vpvd-thread data-url="https://example.org/article" data-lang="tr" data-theme="auto">
			<a href="https://vpvd.io/embed/tr?url=https%3A%2F%2Fexample.org%2Farticle&amp;theme=auto" target="_blank" rel="noopener">Tartışmayı vpvd üzerinde aç</a>
		</div>
	);
}

Yeniden yüklenmeden değişen sayfalar

React, Vue, Svelte, Nuxt: Betik etiketi işaretlemenizde kalır ve sayfa değişimini atlatamaz: blok neredeyse kapsayıcı orada boş kalır. Betiği site şablonunda bir kez yükleyin ve her geçişten sonra aşağıdaki yenilemeyi çağırın: ilk yüklemede çalışan kodun aynısıyla sayfadaki bütün kapsayıcıları dolaşır.

// after every client-side transition:
window.vpvd.refresh();

Tema ve yazı tipi

Temayı açıkça belirtin — açık, koyu ya da otomatik — ve kapsayıcıdaki değişkenlerle sitenize uydurun: yazı tipi, boyut, satır aralığı, vurgu rengi ve köşe yuvarlaklığı.

data-theme, --vpvd-font, --vpvd-font-size, --vpvd-line-height, --vpvd-accent, --vpvd-radius

Otomatikte blok, sayfanızın temasını alır — sitenizde açtığınız tema ya da okuyucunun sistem ayarı — yazı tipi, boyut ve yuvarlaklığı ise kapsayıcının kendisinden. Hiçbir şey bulamazsa bizim görünümümüz kalır.

Nitelikler

data-url
tartışılan sayfanın adresi. Tartışma ona bağlıdır, bu yüzden bütün okuyucularda aynı olmalı.
data-lang
bloğun dili — aşağıdaki listedeki dillerden biri. Başka bir değer 404 verir: çerçeve diğer dillerde yok.
  • en — English
  • zh-Hans — 简体中文
  • es — Español
  • ar — العربية
  • ru — Русский
  • vi — Tiếng Việt
  • tr — Türkçe
  • fa — فارسی
data-theme
blok teması: otomatik (sayfanızdaki gibi), açık ya da koyu.
data-height
çerçeve kendi yüksekliğini bildirene kadar blok için ayırdığımız yükseklik, piksel olarak, örneğin 200. Sonra blok gerçek yüksekliğe uyar; değer 120–2000 arasında kalır. Sayfanızda sıçrama belli oluyorsa bunu yazın: varsayılan olarak 160 piksel ayırıyoruz.

Bir yorum geldiğinde

Bu özniteliği ekleyin; blok sayfanıza yorum geldiğini bildirir. Olayda tek bir sözcük vardır, okuyucuya dair hiçbir şey yok:

data-events="on" → vpvd:commented

Liste için yorum sayısı

Yazı listesi widget değil bir sayı ister: bu istek bir sayfanın yanıt sayısını döndürür (kimse tartışmadıysa sıfır). Sayfanıza açıktır, çerez istemez ve okuyucu hakkında hiçbir şey bilmez:

GET /api/nodes/count?url=…

Kodun yapmadıkları

Sayfanızın içeriğini okumaz ve orada bizim çerezlerimizi bırakmaz. Sunucumuza yalnızca nitelikteki adres ulaşır: sayfa metni yok, isim yok, sayaç yok. Hem betik hem çerçeve için yönlendiren bilgisini kapatıyoruz.

Gerçekten yerleşti mi

Sayfayı tarayıcıda açın ve aşağıdaki satırları konsolda çalıştırın: bir satır, bir cevap.

  1. çerçeve yerinde: yükleyici kapsayıcıdaki yedek bağlantının yerine onu koydu
  2. yükleyici çalıştı: aşağıdaki değer tanımlı ve sürümü 1 window.vpvd
  3. çerçeve yüksekliğini bildirdi: sayı artık ayrılan 160 değil ve blok başlıkla aynı hizada
// 1
document.querySelector('iframe[data-vpvd-frame]')
// 2
window.vpvd.version
// 3
document.querySelector('iframe[data-vpvd-frame]').style.height

Otomatik olarak, penceresiz bir tarayıcıdan mı (Firefox) bakıyorsunuz? Sayfanın değerleri betiğinize görünmez: ayrı bir dünyada çalışır ve sayfayla yalnızca işaretlemeyi paylaşır. İşaretleri ana dünyadan okuyun: belgeye kendi betiğinizi ekleyin ve cevabı bir nitelikten alın.

Sitenizde katı politika

Bloğu getiren yönergelerde bizim adresimize (https://vpvd.io) izin verin:

  • script-src — bloğun betiği oradan gelir
  • frame-src — başlığın kendisi bizim çerçevemizde görünür
  • child-src → frame-src — politikanız onu tanımlıyorsa çerçeveleri genel yönerge değil o yönetir: başka bir kaynaktan gelen bir değer sayfadaki bütün çerçeveleri, bizimkini de sessizce kapatır. Adresimizi buraya da yazın — ya da o yönergeyi kaldırın.

Betik hiç çalışmazsa okuyucu yine de tartışmaya giden sade bir bağlantı görür: kabımız onu baştan taşır.

Sorular

Okuyucu ne görür?

Bu sayfanın dizisini ve giriş yolunu. Okumak için hesap gerekmez; yazmak konuk olarak (yanıt yaklaşık yarım saat yaşar) ya da blok içinde girerek olur. Giriş okuyucunun kendi kararı: sitenizin oturumu bize geçmez.

Okuyucularım hakkında ne biliyorsunuz?

Koda koyduğunuz sayfa adresi — o kadar. Gezinti geçmişini, sayfanızın metnini ve kimin girdiğini görmüyoruz: eklenti tartışma var mı diye sunucuya sormadan yerelde bakar. Çerezler yalnızca çerçeveye aittir.

Yorumlar aramada çıkar mı?

Hayır — arama motorları çerçevenin içindekini dizinlemez. Dizinin kendisi vpvd üzerinde dizinlenir ve bağlantısı kapsayıcının içindedir.

Site sahibi olarak ne yapabilirim?

Bloğu kaldırmak kodu kaldırmaktır. Adresin size ait olduğunu doğrulayın, yanıtlarınızın yanında bir işaret çıkar; ama işaret başkalarının yanıtlarını gizlemenize izin vermez: moderasyon kuralları herkes için aynı. Kendi alan adınızdaki kurallar ve yasaklar sahip panosuyla gelecek.

Erişimi nasıl geri alırım?

Sitenize erişimimiz yok: betik yalnızca bir çerçeve koyar. Kodu silin, blok gider. Çerçevenin içindeki oturum bizim çerezimizde yaşar ve onunla birlikte gider.

Sayfanız için kod

Oluşturucu, seçtiğiniz dil ve temayla kodu hazırlar.

Oluşturucuyu aç