Dijital Ürün ve 2. el Ürün Satış Platformu / Şimdi Kayıt Ol

Sesli dinle

Seditio Reaction, Tepki verme özelliğini sitenize eklemek için aşağıdaki adımları izlemeniz yeterlidir.

Header.tpl de head kodları arasına ekleyin.

 <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.16.7/dist/sweetalert2.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" />

Daha sonra system/function.php ye alttakini ekleyin en alta.

function getReactionCounts($contentID) {
	global $out, $usr;
    // Kullanılacak emoji simgeleri
    $emojis = [
        '👍' => '1thumbs_up.png',
        '❤️' => '2heart.png',
        '😲' => '3komik.png',
        '😢' => '4laugh.png',
        '😂' => '5smile.png',
        '😡' => '6sad.png',
        '😜' => '7surprise.png',
        '😎' => '8cool.png',
        '😴' => '9uzgun.png',
        '😉' => '10wink.png'
    ];
    $reactionCounts = [];
    // Her bir tepki türü için tepki sayısını al
    foreach ($emojis as $emoji => $imageFile) {
        $sqlCountReactions = "SELECT COUNT(*) AS count FROM reactions WHERE content_id = '".$contentID."' AND reaction_image = '".sed_sql_prep($imageFile)."'";
        $result = sed_sql_query($sqlCountReactions);
        $row = sed_sql_fetchassoc($result);
        $reactionCounts[$emoji] = $row['count'];
    }
 // HTML ve CSS ile bar grafiği oluştur
    $html = '
       <style>
        .bar-chart {
                display: flex;
                flex-wrap: wrap;
                justify-content: center;
                width: 100%;
                max-width: auto;
                padding: 0px;
                box-sizing: border-box;
            }
            .bar {
                display: flex;
                flex-direction: column;
                align-items: center;
                margin: 10px;
            }
            .count {
                background-color: #2e4a62;
                color: white;
				text-align: center;
                width: 40px;
                margin-bottom: 3px;
                border-radius: 50px;
            }
            .emoji {
                font-size: 24px;
                margin-top: 3px;
            }
             .reaction-button {
                background: none;
                border: none;
                padding: 0;
                cursor: pointer;
                outline: none;
            }
            @media (max-width: 600px) {
                .bar {
                    margin: 6px;
                }
            }
        </style>
   <hr><div class="bar-chart">';
    foreach ($reactionCounts as $emoji => $count) {
        $html .= '<div class="bar">';
        $html .= '<div class="count">'.$count.'</div>';
        $html .= '<div class="emoji">
           <form method="POST" action="' . $out['canonical_url'] . '?a=t" style="display:inline;">
                <input type="hidden" name="contentID" value="' . $contentID . '">
                <input type="hidden" name="reactionType" value="' . $emoji . '">
                <input type="hidden" name="redirectURL" value="' . $out['canonical_url'] . '">
                <button class="reaction-button" type="submit">' . $emoji . '</button>
            </form>
        </div>';
        $html .= '</div>';
    }
    $html .= '</div>';
    return $html;
}

Daha sonra system/core/page/page.inc.php yi açın ve alttakini bulun.

$t = new XTemplate($mskin);

Altına ekleyin.

if ($a == 't') {
    // Gerekli POST değişkenlerini alın
$contentID = sed_import('contentID','P','INT');
$reactionType = sed_import('reactionType','P','TXT');
$redirectURL = sed_import('redirectURL','G','TXT');
// Eğer reactionType boş ise işlemi durdur
    if (empty($reactionType)) {
        echo '<script>
                Swal.fire({
                  icon: "error",
                  title: "Tepki türü boş!",
                  showConfirmButton: false,
                  timer: 1500
                }).then(function() {
                  window.location.href = "'.$out['canonical_url'].'";
                });
              </script>';
        exit;
    }
    // Emoji ve resim dosyası eşlemesi
    $emojiImages = [
        '👍' => '1thumbs_up.png',
        '❤️' => '2heart.png',
        '😲' => '3komik.png',
        '😢' => '4laugh.png',
        '😂' => '5smile.png',
        '😡' => '6sad.png',
        '😜' => '7surprise.png',
        '😎' => '8cool.png',
        '😴' => '9uzgun.png',
        '😉' => '10wink.png'
    ];
    // Kullanıcı IP adresi alın
    $ipAddress = $_SERVER['REMOTE_ADDR'];
    // Daha önce tepki verilip verilmediğini kontrol edin
    $checkQuery = "SELECT * FROM reactions WHERE content_id = '".$pag['page_id']."' AND ip_address = '".$ipAddress."'";
    $result = sed_sql_query($checkQuery);
    // Daha önce tepki verilmemişse
    if (sed_sql_numrows($result) == 0) {
        // Tepki ekleyin
        $reactionImage = isset($emojiImages[$reactionType]) ? $emojiImages[$reactionType] : '';
        $insertQuery = "INSERT INTO reactions (content_id, reaction_type, reaction_image, ip_address, userid, username) VALUES ('".$pag['page_id']."', '".sed_sql_prep($reactionType)."', '".sed_sql_prep($reactionImage)."', '".$ipAddress."', '".$usr['id']."', '".$usr['name']."')";
        sed_sql_query($insertQuery);
        // Tepki verme işlemi tamamlandıktan sonra, JavaScript ile SweetAlert uyarısı verin
        echo '<script>
                Swal.fire({
                  icon: "success",
                  title: "Tepki verildi!",
                  showConfirmButton: false,
                  timer: 1500
                }).then(function() {
                  // Yönlendirme URL\'sine git
                  window.location.href = "'.$out['canonical_url'].'";
                });
              </script>';
    } else {
        // Hata mesajı: Kullanıcı daha önce tepki vermiş
        echo '<script>
                Swal.fire({
                  icon: "error",
                  title: "Daha önce tepki verdiniz!",
                  showConfirmButton: false,
                  timer: 1500
                }).then(function() {
                  // Yönlendirme URL\'sine git
                  window.location.href = "'.$out['canonical_url'].'";
                });
              </script>';
    }
}
$reactionCounts = getReactionCounts($pag['page_id']);

Alttakini bulun.

"PAGE_TITLE" => $pag['page_fulltitle'],

Altına ekleyin

"PAGE_REAC" => $reactionCounts,

temnızda page.tpl ye {PAGE_TEXT} altına alttakini ekleyin.

{PAGE_REAC}

Daha sonra phpmyadmin'den alttaki sorguyu yükleyin.

CREATE TABLE `reactions` (
  `id` int(11) NOT NULL,
  `content_id` int(11) NOT NULL,
  `reaction_type` varchar(10) NOT NULL,
  `ip_address` varchar(45) NOT NULL,
  `reaction_image` varchar(255) DEFAULT NULL,
  `userid` int(11) NOT NULL,
  `username` varchar(255)  NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
ALTER TABLE `reactions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `content_ip_unique` (`content_id`,`ip_address`),
  ADD KEY `id` (`id`);

Daha sonra ekte bulunan dosyayı indirin ve seditio'nun kurulu olduğu dizine dizine yükleyin.

system/common.php yi açın alttakini bulun.

sed_sql_set_charset($connection_id, 'utf8');

Alttaki ile değiştirin.

sed_sql_set_charset($connection_id, 'utf8mb4');

Css Style dosyanıza alttakini ekleyin. Temanıza uygun değil ise kendinize göre düzenlemeler yapın.

.reaction-icons {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }
    .reaction-button {
        background: none;
        border: none;
        cursor: pointer;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 5px;
    }
    .reaction-count {
        font-size: 12px;
        color: #555;
        text-align: center;
    }
    .emoji-icon {
        width: 32px;
        height: 32px;
    }

işlem tamamdır.

Bu uygulama Seditio 178 ve üzeri sürümlerinde geçerlidir.


Yorumlar (1)

9 By Kaan • 2024-06-25 09:17 •

Kodlarda güncelleme yapılmıştır.

Botların tepki verdiği tespit edilmiş olup gerekli düzenleme yapılmıştır.


Tema Ayarları

Kendi özelleştirilmiş stilini belirle

Mod Seç

Uygulamanız için mükemmel renk modunu seçin.


RTL Mode

Dil yönünüzü değiştirin


Fluid Layout

Tam ekran modu aç/kapat


Navigasyon Konumu

Web sitesi için uygun bir menü sistemi seçin


Görünüm