Yorum Sistemi

Müşteri yorumları, puanlama ve moderasyon

Yorum Sistemi

Müşteri yorumları ve değerlendirmelerini yönetin. Ürün puanları, yorum moderasyonu, spam koruması ve ön yüz widget'ı ile güçlü bir yorum altyapısı oluşturun.

Genel Bakış

Yorum Sistemi addon'u, e-ticaret siteniz için kapsamlı bir müşteri değerlendirme altyapısı sunar. Ürün yorumları, yıldız puanlaması, faydalı/faydasız oylaması ve moderasyon araçlarıyla müşteri güvenini artırın.

Yıldız Puanlama

1-5 yıldız arası puan sistemi ile ürün değerlendirmesi

Moderasyon

Onay mekanizması ve spam koruması ile içerik kalitesi

Oylama Sistemi

Faydalı/faydasız oylaması ile kaliteli yorumları öne çıkarma

Widget Entegrasyonu

Kolay entegre edilebilen ön yüz widget'ı

Yorum Listesi

Tüm yorumları görüntüleyin, filtreleyin ve yönetin. Admin panelinden Eklentiler → Yorumlar → Yorum Listesi menüsüne gidin.

Filtreleme Seçenekleri

Duruma göre (bekleyen, onaylı, reddedilmiş, spam) ve puana göre (1-5 yıldız) filtreleme yapabilirsiniz.

Yorum Durumları

Durum Açıklama Görünürlük
Bekleyen Moderasyon bekleyen yeni yorumlar Sadece admin görebilir
Onaylı Onaylanmış ve yayında olan yorumlar Herkes görebilir
Reddedilmiş Reddedilmiş ve yayında olmayan yorumlar Sadece admin görebilir
Spam Spam olarak işaretlenmiş yorumlar Sadece admin görebilir

Yorum Detayı ve İşlemler

Her yoruma tıklayarak detay sayfasına erişebilir ve çeşitli işlemler yapabilirsiniz.

Görüntülenebilir Bilgiler

  • Yorum yazarı (isim, e-posta)
  • Yorum tarihi ve saati
  • Ürün bilgisi ve linki
  • Yıldız puanı (1-5)
  • Yorum başlığı ve içeriği
  • Faydalı/faydasız oy sayıları
  • IP adresi

Mevcut İşlemler

İşlem Açıklama
Onayla Yorumu onaylayarak yayına alır
Reddet Yorumu reddederek yayından kaldırır
Spam İşaretle Yorumu spam olarak işaretler
Sil Yorumu kalıcı olarak siler
Yanıtla Yoruma admin yanıtı ekler
Dikkat

Silinen yorumlar geri alınamaz. Silmeden önce yorum içeriğini kontrol edin.

Admin Yanıtları

Müşteri yorumlarına resmi yanıt vererek müşteri ilişkilerinizi güçlendirin. Admin yanıtları yorumun altında özel bir stil ile gösterilir.

Yanıt Ekleme

  1. Yorum listesinden ilgili yorumu seçin
  2. Detay sayfasında "Yanıtla" butonuna tıklayın
  3. Yanıtınızı yazın
  4. "Yanıt Gönder" butonuna tıklayın
İpucu

Olumsuz yorumlara profesyonel ve çözüm odaklı yanıtlar verin. Bu, diğer müşterilere de güven verir.

Ayarlar

Eklentiler → Yorumlar → Ayarlar menüsünden yorum sistemini ihtiyaçlarınıza göre yapılandırabilirsiniz.

Genel Ayarlar

Ayar Açıklama Varsayılan
Yorumları Aktif Et Yorum sistemini açar/kapatır Aktif
Moderasyon Gerektir Yeni yorumların onay gerektirip gerektirmediği Evet
Oylamayı Etkinleştir Faydalı/faydasız oylama özelliği Aktif
Sayfa Başına Yorum Ön yüzde sayfa başına gösterilecek yorum sayısı 10
Varsayılan Sıralama Yorumların varsayılan sıralama kriteri Yeni → Eski

Spam Koruması

Ayar Açıklama
Minimum Yorum Uzunluğu Yorumların kabul edileceği minimum karakter sayısı
Maksimum Yorum Uzunluğu Yorumların kabul edileceği maksimum karakter sayısı
Link Kontrolü Yorumlarda link içeriğini engeller veya moderasyona alır
Yasaklı Kelimeler İçeriğinde bu kelimeler geçen yorumlar otomatik spam olarak işaretlenir

Oylama Sistemi

Ziyaretçiler yorumları "Faydalı" veya "Faydasız" olarak oyalayabilir. Bu sistem, kaliteli yorumları öne çıkarmanıza yardımcı olur.

Nasıl Çalışır?

  • Her ziyaretçi bir yoruma sadece bir kez oy verebilir
  • Oylar IP adresi bazında takip edilir
  • Toplam faydalı ve faydasız oy sayıları görüntülenir
  • Yüksek faydalı oy alan yorumlar öne çıkarılabilir
JavaScript - Oy Verme Fonksiyonu
// Yoruma oy verme
function voteReview(reviewId, type) {
    // type: 'up' (faydalı) veya 'down' (faydasız)
    fetch('/addons/reviews/includes/api.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'action=vote&review_id=' + reviewId + 
              '&vote_type=' + (type === 'up' ? 'helpful' : 'unhelpful')
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            // Başarılı - oy sayılarını güncelle
        }
    });
}

Widget Entegrasyonu

Yorum widget'ını tema dosyalarınıza ekleyerek ürün sayfalarında yorumları gösterebilirsiniz.

Temel Kullanım

PHP - Widget Ekleme
<?php
// Yorum fonksiyonlarını dahil et
require_once 'addons/reviews/includes/functions.php';

// Ürün ID'si ile yorumları göster
$product_id = 123; // Ürün ID'nizi belirtin

// Yorumları çek
$reviews = reviews_get_by_product($product_id, [
    'status' => 'approved',
    'limit' => 10,
    'order' => 'newest'
]);

// Ortalama puanı hesapla
$stats = reviews_get_product_stats($product_id);
?>

Widget HTML Yapısı

HTML/PHP - Yorum Listesi
<div class="reviews-widget" data-product-id="<?php echo $product_id; ?>">
    <!-- Özet Bölümü -->
    <div class="reviews-summary">
        <div class="average-rating">
            <span class="rating-value"><?php echo number_format($stats['average'], 1); ?></span>
            <div class="stars">
                <?php echo reviews_render_stars($stats['average']); ?>
            </div>
            <span class="review-count"><?php echo $stats['total']; ?> değerlendirme</span>
        </div>
    </div>

    <!-- Yorum Listesi -->
    <div class="reviews-list">
        <?php foreach ($reviews as $review): ?>
        <div class="review-item" data-review-id="<?php echo $review['id']; ?>">
            <div class="review-header">
                <span class="reviewer-name"><?php echo htmlspecialchars($review['name']); ?></span>
                <div class="review-rating">
                    <?php echo reviews_render_stars($review['rating']); ?>
                </div>
                <span class="review-date"><?php echo date('d.m.Y', strtotime($review['created_at'])); ?></span>
            </div>
            <h4 class="review-title"><?php echo htmlspecialchars($review['title']); ?></h4>
            <p class="review-content"><?php echo nl2br(htmlspecialchars($review['content'])); ?></p>
            
            <!-- Oylama Butonları -->
            <div class="review-votes">
                <button onclick="voteReview(<?php echo $review['id']; ?>, 'up')" class="vote-btn">
                    <i class="fas fa-thumbs-up"></i> 
                    <span class="helpful-count"><?php echo $review['helpful_count']; ?></span>
                </button>
                <button onclick="voteReview(<?php echo $review['id']; ?>, 'down')" class="vote-btn">
                    <i class="fas fa-thumbs-down"></i> 
                    <span class="unhelpful-count"><?php echo $review['unhelpful_count']; ?></span>
                </button>
            </div>
        </div>
        <?php endforeach; ?>
    </div>

    <!-- Yorum Formu -->
    <div class="review-form-container">
        <h3>Yorum Yazın</h3>
        <form id="review-form" class="review-form">
            <input type="hidden" name="product_id" value="<?php echo $product_id; ?>">
            <!-- Form alanları -->
        </form>
    </div>
</div>

Yıldız Gösterimi

Puanları yıldız şeklinde göstermek için hazır fonksiyonu kullanabilirsiniz.

PHP - Yıldız Render Fonksiyonu
<?php
/**
 * Puana göre yıldız HTML'i oluşturur
 * @param float $rating Puan (0-5)
 * @return string HTML yıldızlar
 */
function reviews_render_stars($rating) {
    $html = '<div class="star-rating">';
    $fullStars = floor($rating);
    $halfStar = ($rating - $fullStars) >= 0.5;
    $emptyStars = 5 - $fullStars - ($halfStar ? 1 : 0);
    
    // Dolu yıldızlar
    for ($i = 0; $i < $fullStars; $i++) {
        $html .= '<i class="fas fa-star"></i>';
    }
    
    // Yarım yıldız
    if ($halfStar) {
        $html .= '<i class="fas fa-star-half-alt"></i>';
    }
    
    // Boş yıldızlar
    for ($i = 0; $i < $emptyStars; $i++) {
        $html .= '<i class="far fa-star"></i>';
    }
    
    $html .= '</div>';
    return $html;
}
?>

İstatistikler

Ürün bazında yorum istatistiklerini çekebilir ve gösterebilirsiniz.

PHP - İstatistik Fonksiyonları
<?php
// Ürün istatistiklerini çek
$stats = reviews_get_product_stats($product_id);

// Dönen veri yapısı:
// [
//     'total' => 45,           // Toplam yorum sayısı
//     'average' => 4.2,        // Ortalama puan
//     'rating_1' => 2,         // 1 yıldız sayısı
//     'rating_2' => 3,         // 2 yıldız sayısı
//     'rating_3' => 8,         // 3 yıldız sayısı
//     'rating_4' => 15,        // 4 yıldız sayısı
//     'rating_5' => 17,        // 5 yıldız sayısı
// ]

// Puan dağılımı progress bar'ları
foreach ([5, 4, 3, 2, 1] as $star) {
    $count = $stats['rating_' . $star];
    $percentage = $stats['total'] > 0 ? ($count / $stats['total']) * 100 : 0;
    
    echo "<div class='rating-bar'>";
    echo "<span class='star-label'>{$star} yıldız</span>";
    echo "<div class='progress'>";
    echo "<div class='progress-bar' style='width: {$percentage}%'></div>";
    echo "</div>";
    echo "<span class='count'>{$count}</span>";
    echo "</div>";
}
?>

CSS Stilleri

Widget için önerilen CSS stillerini tema dosyanıza ekleyebilirsiniz.

CSS - Yorum Widget Stilleri
/* Yorum Widget Container */
.reviews-widget {
    font-family: inherit;
    max-width: 800px;
    margin: 2rem 0;
}

/* Özet Bölümü */
.reviews-summary {
    display: flex;
    align-items: center;
    padding: 1.5rem;
    background: #f8f9fa;
    border-radius: 8px;
    margin-bottom: 1.5rem;
}

.average-rating .rating-value {
    font-size: 3rem;
    font-weight: bold;
    color: #333;
}

/* Yıldızlar */
.star-rating {
    display: inline-flex;
    color: #ffc107;
    gap: 2px;
}

.star-rating .far.fa-star {
    color: #ddd;
}

/* Yorum Kartı */
.review-item {
    border-bottom: 1px solid #eee;
    padding: 1.5rem 0;
}

.review-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.5rem;
}

.reviewer-name {
    font-weight: 600;
}

.review-date {
    color: #888;
    font-size: 0.9rem;
}

.review-title {
    font-size: 1.1rem;
    margin: 0.5rem 0;
}

.review-content {
    color: #555;
    line-height: 1.6;
}

/* Oylama Butonları */
.review-votes {
    display: flex;
    gap: 1rem;
    margin-top: 1rem;
}

.vote-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.8rem;
    border: 1px solid #ddd;
    border-radius: 20px;
    background: white;
    cursor: pointer;
    transition: all 0.2s;
}

.vote-btn:hover {
    background: #f0f0f0;
}

.vote-btn.voted {
    background: #e3f2fd;
    border-color: #2196f3;
    color: #1976d2;
}

Sorun Giderme

Yorumlar ön yüzde görünmüyor

Çözüm: Yorumların "Onaylı" durumunda olduğundan emin olun. Ayrıca widget kodunun doğru şekilde entegre edildiğini ve status => 'approved' filtresi kullanıldığını kontrol edin.

Oylama butonu çalışmıyor

Çözüm: Ayarlardan "Oylamayı Etkinleştir" seçeneğinin aktif olduğunu kontrol edin. JavaScript konsolunda hata olup olmadığını inceleyin. API endpoint'inin (/addons/reviews/includes/api.php) erişilebilir olduğundan emin olun.

Yeni yorumlar otomatik yayınlanmıyor

Çözüm: Bu beklenen bir davranıştır. "Moderasyon Gerektir" ayarı aktif ise yorumlar önce onay bekler. Otomatik yayın için bu ayarı kapatabilirsiniz, ancak spam riski artabilir.

Yıldızlar düzgün görünmüyor

Çözüm: Font Awesome kütüphanesinin sayfaya dahil edildiğinden emin olun. Hem solid (fas) hem de regular (far) ikonların yüklü olması gerekir.

Spam yorumlar geliyor

Çözüm: Ayarlarda minimum yorum uzunluğunu artırın, yasaklı kelimeler listesi ekleyin ve link kontrolünü aktif edin. Moderasyon özelliğini açık tutun.