Entegrasyon

Sürüm 1.0.0 · Bu sayfa whmcs-musteri-yorumlari-1.0.0.zip paketindeki docs/ENTEGRASYON.md dosyasının HTML görünümüdür.

Kodlar modülün yönetim sayfasında, her kategori için Kategoriler → Düzenle ve kodlar → Entegrasyon kodları bölümünde kurulumun gerçek adresleriyle üretilir. Aşağıdaki örneklerde my.ornek.com WHMCS adresi, www.ornek.com yorumların gösterileceği sitedir.

1. WHMCS Smarty şablonları

ClientAreaPage kancası WHMCS istemci alanının bütün sayfalarında (ana sayfa, ürün grupları, pages.php sayfaları, sipariş formları, ClientArea sınıfını kullanan özel .php sayfaları) şu değişkenleri atar:

Değişken Çıktı
{$musteri_yorumlari} Bütün aktif kategorilerin yayındaki yorumlarından blok + "Daha Fazla Göster" (genel sayfa) + "Yorum Yap"
{$musteri_yorumlari_ozet} Genel puan ve sayı
{$musteri_yorumlari_<anahtar>} Yalnızca o kategorinin yorumları ve puanı; "Daha Fazla Göster" genel sayfanın ?kategori=<anahtar> filtresine gider
{$musteri_yorumlari_<anahtar>_ozet} Kategori puanı ve sayısı
{$musteri_yorumlari_<anahtar>_sema} Kategori bloğu + koşullar sağlanıyorsa tek JSON-LD (yalnızca kategorinin kendi tek ürün sayfasında; bkz. SEO-SEMA.md)
{$musteriYorumlariNav} Müşteri paneli menüsü için url, label

Örnekler:

{$musteri_yorumlari}

{$musteri_yorumlari_cpanel_hosting}
{$musteri_yorumlari_bayi_hosting}
{$musteri_yorumlari_vds}

{if isset($musteri_yorumlari_vds)}{$musteri_yorumlari_vds}{/if}
{$musteri_yorumlari_vds_ozet|default:''}

Nasıl çalışır: - Değerler tembel nesnelerdir: şablonda yazdırılmayan değişken için sorgu çalışmaz. Her sayfada yalnızca aktif kategori anahtarları tek indeksli sorguyla okunur. - Yazdırılan blok herkese açık sunucu önbelleğinden gelir; yayın durumu değişince önbellek anında yenilenir. - HTML sunucuda çizilir (arama motorları içeriği doğrudan görür). Stil (widget.css) ilk blokla birlikte bir kez eklenir; site fontu ve genel stiller değiştirilmez, bütün sınıflar myr- önekli. - Kart başlıkları h1–h6 değildir; blok eklendiği sayfanın başlık hiyerarşisini bozmaz. - Değişken adındaki anahtar kategori oluşturulurken sabitlenir; kategori adı değişse de çalışmaya devam eder. Pasif/arşiv kategori değişkeni atanmaz (|default:'' önerilir). - Herkese açık ana sayfa (homepage.tpl) ile müşteri paneli ana sayfası (clientareahome.tpl) ayrımı şablona göre yapılmaz: değişken hangi şablona konursa orada çizilir. ClientAreaPageHome kancasına güvenilmez.

Destek sınırı: WHMCS'in ClientArea akışını kullanmayan bir PHP dosyası (kendi HTML'ini basan betik) Smarty değişkenlerini almaz. Bunun için 2. bölüm.

2. WHMCS bootstrap'ını kullanan ama ClientArea'yı kullanmayan özel PHP sayfaları

<?php
require __DIR__ . '/init.php';
require_once __DIR__ . '/modules/addons/musteriyorumlari/lib/Bootstrap.php';

echo \MusteriYorumlari\Integration\Embed::block('vds');          // kategori bloğu
echo \MusteriYorumlari\Integration\Embed::block(null, 3);        // genel blok, 3 yorum
echo \MusteriYorumlari\Integration\Embed::summary('vds');        // yalnızca puan özeti
echo \MusteriYorumlari\Integration\Embed::block('vds', null, true); // blok + uygunsa JSON-LD
$veri = \MusteriYorumlari\Integration\Embed::data('vds');        // API ile aynı dizi

Modül etkin değilse boş döner. init.php yüklenmeden kullanılamaz.

3. WHMCS dışındaki siteler — JS widget (HTML, WordPress, PHP/Laravel, diğer CMS)

<div data-musteri-yorumlari
     data-kategori="cpanel_hosting"
     data-adet="6"
     data-gorunum="kart"></div>
<script src="https://my.ornek.com/modules/addons/musteriyorumlari/assets/widget.js?v=<özet>" defer></script>
Öznitelik Değerler
data-kategori kategori anahtarı ya da tum (varsayılan)
data-adet 1–50 (boş: yönetici ayarı)
data-gorunum kart, liste, ozet (yalnızca puan/sayı), sayfa (filtreli, sayfalı tam yorum sayfası)
data-tema acik, koyu, otomatik (boş: yönetici ayarı)
data-sirala yeni, eski, puan_yuksek, puan_dusuk
data-sema 1: kategori uygunsa tek JSON-LD ekler (yalnızca kategorinin kendi tek ürün sayfasında)
data-api API adresini açıkça vermek için (varsayılan: script adresinden türetilir)
  • Sitenin kökeni (https://www.ornek.com) modülün Alan adları listesinde olmalıdır. WHMCS'in kendi kökeni ve genel yorum sayfasının kökeni kendiliğinden izinlidir.
  • Script bir kez yüklenir; sayfadaki bütün blokları yönetir. İki kez eklense ya da MusteriYorumlari.init() tekrar çağrılsa mükerrer istek/DOM oluşmaz. Sonradan eklenen bloklar için MusteriYorumlari.init(kök) çağrılabilir.
  • İstekler çerez ve API anahtarı içermez (credentials: 'omit'), 8 sn zaman aşımı, ağ hatası/5xx/429'da en çok 2 yeniden deneme. Hata, boş ve yükleniyor durumları ekran okuyucuya duyurulur; hata ana sayfayı bozmaz.
  • site.com/musteri-yorumlari için tam sayfa: examples/html/musteri-yorumlari.html (data-gorunum="sayfa"); bu adresi Ayarlar → Genel yorum sayfası adresine yazın.
  • widget.js ve widget.css adreslerindeki ?v= dosya özetidir; CDN önbelleği yüzünden güncellemeden sonra gömme kodunu yeniden kopyalayın.

4. WHMCS dışındaki siteler — sunucu tarafı çizim

İçeriğin ilk HTML'de gelmesi istenirse (SEO, JS'siz ziyaretçi):

  • Düz PHP: examples/php/musteri-yorumlari-adaptor.php
  • WordPress: examples/wordpress/musteri-yorumlari/ (kısa kod [musteri_yorumlari kategori="vds" adet="6"])
  • Laravel: examples/laravel/

Ortak kurallar (örneklerde uygulanmıştır): API adresi yapılandırmada sabit ve https; kullanıcıdan gelen adrese istek yapılmaz; bağlantı 3 sn / toplam 5 sn zaman aşımı; yönlendirme izlenmez; yanıt boyutu sınırlı; JSON alan ve tür doğrulaması; bütün çıktı kaçışlı; önbellek (varsayılan 120 sn) — yayından kaldırılan yorum bu süre kadar adaptörün önbelleğinde görünebilir. Sunucu tarafı istekler CORS'tan etkilenmez; Alan adları listesine eklemek gerekmez.

5. "Yorum Yap" ve geri dönüş

"Yorum Yap" bağlantısı WHMCS'teki forma gider (index.php?m=musteriyorumlari&eylem=yaz&kategori=<anahtar>). Giriş gerekir; WHMCS girişten sonra aynı adrese döner. Harici siteden gelen ziyaretçinin geri dönmesi için bağlantıya &donus=<https adres> eklenebilir; adres yalnızca izinli kökenlerden biriyle birebir eşleşirse saklanır ve "Geldiğiniz sayfaya dönün" bağlantısı olarak gösterilir. Otomatik yönlendirme yapılmaz (açık yönlendirme yok).

İnternet bağlantınız kesildi