13-09-2024 18:20
07-03-2023 10:44
21-09-2024 10:30
21-10-2023 11:18
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.
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.
Kendi özelleştirilmiş stilini belirle
Uygulamanız için mükemmel renk modunu seçin.
Dil yönünüzü değiştirin
Tam ekran modu aç/kapat
Web sitesi için uygun bir menü sistemi seçin
Please enable JavaScript!Bitte aktiviere JavaScript!S'il vous plaît activer JavaScript!Por favor,activa el JavaScript!