كود الروابط أو الزيارات الأخيرة في المنتدى

كود جيفري

عضو جديد
عضو انكور
يتنقل العضو داخل المنتدى بين مواضيع وأقسام كثيرة، وكثيرًا ما يرغب في العودة إلى صفحة زارها قبل قليل دون أن يتذكر مكانها. يعمل هذا الكود على حفظ آخر الصفحات التي يزورها العضو تلقائيًا وعرضها في قائمة واضحة، مما يسهّل عليه العودة إليها بسرعة عند الحاجة. وإلى جانب راحة الأعضاء، يساعد الكود على زيادة عدد النقرات والمشاهدات داخل المنتدى، وهو ما يمنح إشارات إيجابية لمحركات البحث مثل جوجل ويعزز ارتباط الزوار بالمحتوى.

مثال على الكود​

قائمة تعرض آخر الصفحات والمواضيع التي زارها العضو داخل المنتدى


شرح تركيب الكود​

كود HTML
يمكنك وضع الكود في أي مكان يدعم HTML، مثل التشكيلات العامة أو القوالب أو العناصر المستقلة:

HTML:
<style>
div#recentVisits h3 {background: #31373c;color: #ffffff;padding: 5px;}
#recentLinks li .recent-link {direction: rtl;flex: 1;display: block;width: 100%;padding: 4px;text-decoration: none;}
 a.recent-link .fa {float: right;margin: 4px;top: 6px !important;position: relative !important;} 
#recentLinks {list-style: none;padding: 0;margin: 0;}
.visit-time {display: block;font-size: 11px;color: #777;margin-top: 2px;}
#clearRecent {margin-top: 7px;width: 100%;padding: 7px;border: none;background: #d33;color: #fff;cursor: pointer;border-radius: 4px;}
#clearRecent:hover {background: #b11;}
i.fa.fa-times:hover {background: #f91100;color: #fafdfd;}
i.fa.fa-times {padding: 4px;color: #F44336;}
.module h3 {background: #2196F3;color: #ffefef;border-bottom: 2px solid #5bb5fd;text-align: center;margin: -2px -2px 6px -2px;}
.recent-visits li a:hover,.recent-visits li:hover {background: #4887bf;color: #f1f3f3;}
#recentLinks li .recent-link {flex: 1;display: block;width: 100%;padding: 4px;text-decoration: none;}
.recent-visits {padding: 2px;background-color: #f9f9f9;border: 1px solid #ccc;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);max-height: 440px;overflow: overlay;direction: ltr;text-align: right;}
.recent-visits li {counter-increment: link-counter;margin-bottom: 4px;border-bottom: dotted 1px #a0a4a7;font-weight: bold;background: #adab9c38;padding: 0;display: flex;align-items: center;flex-direction: row-reverse;}
#recentLinks {list-style: none;padding: 0;}
.fa-save:before, .fa-floppy-o:before {content: "\f0c7";}
#recentLinks li::before {content: counter(link-counter) " ";border-radius: 4px;padding: 15px 2px;background: rgba(0,0,0,0.1);color: #000000;}  
i.fa.fa-floppy-o {background: #218cbd;color: #fdfdfd;}   
 </style>
<div id="recentVisits" class="recent-visits">
                           
 <h3>
       الزيارات الأخيرة <em class="fa fa-floppy-o"></em>          
 </h3>
                           
 <ul id="recentLinks">
                               
 <!--             الروابط ستضاف هنا             -->              
 </ul>
</div>

كود Javascript
لوحة الإدارة ← عناصر إضافية ← إدارة أكواد Javascript
العنوان: اختيارك
الصلاحيات: اختيارك
أضف الكود إلى: جميع الصفحات

JavaScript:
$(document).ready(function () {
    if (!$('link[href*="font-awesome"]').length) {
        $('head').append('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">');
    }
    if (window.location.pathname.match(/\/t\d+-/)) {
        sessionStorage.removeItem('clickedPageButton');
    }
$(document).on('click', '.pagination a, .pun .paging a,span.gensmall a', function () {
        var buttonNumber = $(this).text().trim();
        if (!isNaN(buttonNumber)) {
            sessionStorage.setItem('clickedPageButton', buttonNumber);
        }
    });

function getIcon(url) {

  // المواضيع والاقسام // أزرار الصفحة الرئيسية
if (url.includes("/t")) {
  return '<i class="fa fa-file-alt" style="color:#3498db"></i>';
}
const icons = {
  "/faq": '<i class="fa fa-question-circle" style="color:#7f8c8d"></i>',
  "/f": '<i class="fa fa-comments" style="color:#9b59b6"></i>'
};
for (const key in icons) {
  if (url.includes(key)) return icons[key];
}
if (/\/\d*$/.test(url)) return '<i class="fa fa-home" style="color:#780000"></i>';
if (url.includes("/images")) return '<i class="fa fa-image" style="color:#e67e22"></i>';
if (url.includes("/events")) return '<i class="fa fa-clock" style="color:#e74c3c"></i>';
if (url.includes("/discover")) return '<i class="fa fa-compass" style="color:#16a085"></i>';
if (url.includes("/portal")) return '<i class="fa fa-door-open" style="color:#2c3e50"></i>';
if (/\/search\d*$/.test(url)) return '<i class="fa fa-search" style="color:#8e44ad"></i>';
if (url.includes("/gallery")) return '<i class="fa fa-camera-retro" style="color:#c0392b"></i>';
if (url.includes("/memberlist")) return '<i class="fa fa-users" style="color:#2980b9"></i>';
if (url.includes("/groups")) return '<i class="fa fa-object-group" style="color:#f1c40f"></i>';

// صفحة العضو
if (/\/u\d*contact/.test(url)) return '<i class="fas fa-phone" style="color:#e67e22"></i>';
if (/\/u\d*awards/.test(url)) return '<i class="fas fa-award" style="color:#f1c40f"></i>';
if (/\/u\d*groups/.test(url)) return '<i class="fas fa-users" style="color:#2980b9"></i>';
if (/\/u\d*followers/.test(url)) return '<i class="fas fa-user-friends" style="color:#9b59b6"></i>';
if (/\/u\d*friends/.test(url)) return '<i class="fas fa-handshake" style="color:#1abc9c"></i>';
if (/\/u\d*stats/.test(url)) return '<i class="fas fa-chart-bar" style="color:#2ecc71"></i>';
if (/\/u\d*wall/.test(url)) return '<i class="fas fa-th-large" style="color:#34495e"></i>';
if (/\/u\d*$/.test(url)) return '<i class="fas fa-database" style="color:#8e44ad"></i>';

// روابط التعديل على الملف الشخصي
if (url.includes("/profile?mode=editprofile&page_profil=preferences")) { return '<i class="fa fa-sliders-h" style="color:#2ecc71"></i> [التفضيلات]';}
if (url.includes("/profile?mode=editprofile&page_profil=avatars")) { return '<i class="fa fa-user-circle" style="color:#2980b9"></i> [الصورة الشخصية]';}
if (url.includes("/profile?mode=editprofile&page_profil=signature")) { return '<i class="fa fa-pen-nib" style="color:#e74c3c"></i> [التوقيع]';}
if (url.includes("/search?search_id=topicdraftsearch")) { return '<i class="fa fa-file-alt" style="color:#27ae60"></i> [مسودات الموضوع]';}
if (url.includes("/search?search_id=draftsearch")) { return '<i class="fa fa-file" style="color:#7f8c8d"></i> [النصوص التجريبية]';}
if (url.includes("/search?search_id=favouritesearch")) { return '<i class="fa fa-star" style="color:#f1c40f"></i> [المفضلة]';}
if (url.includes("/profile?mode=editprofile&page_profil=tags")) { return '<i class="fa fa-tags" style="color:#c0392b"></i> [وسم الكلمات الدليلية]';}
if (url.includes("/profile?mode=editprofile&page_profil=attachments")) return '<i class="fa fa-paperclip" style="color:#16a085"></i>';
if (url.includes("/profile?mode=editprofile&page_profil=friendsfoes")) return '<i class="fa fa-users" style="color:#9b59b6"></i>';
if (url.includes("/profile?mode=editprofile&page_profil=notifications")) return '<i class="fa fa-bell" style="color:#f39c12"></i>';
if (url.includes("/profile?mode=editprofile&page_profil=followers")) return '<i class="fa fa-user-friends" style="color:#8e44ad"></i>';
if (url.includes("/search?search_id=watchsearch")) return '<i class="fa fa-eye" style="color:#3498db"></i>';
if (url.includes("/profile?mode=editprofilefaq")) return '<i class="fa fa-question-circle" style="color:#95a5a6"></i>';

// منوعات
if (url.includes("/latest")) return '<i class="fa fa-fire" style="color:#e74c3c"></i>';
if (url.includes("/memberlist?mode=today_posters")) return '<i class="fa fa-users" style="color:#8e44ad"></i>';
if (url.includes("/memberlist?mode=overall_posters")) return '<i class="fa fa-trophy" style="color:#d35400"></i>';
if (url.includes("/?mode=delete_cookies")) { return '<i class="fa fa-trash-alt" style="color:#e74c3c"></i>حذف الكوكيز';}
if (url.includes("/viewonline")) return '<i class="fa fa-globe" style="color:#27ae60"></i>';
if (url.includes("/statistics")) return '<i class="fa fa-chart-bar" style="color:#34495e"></i>';
if (url.includes("/contact")) return '<i class="fas fa-phone" style="color:#9b59b6"></i>';
if (url.includes("/privmsg?folder=inbox")) return '<i class="fas fa-envelope" style="color:#1b639d"></i>';  
if (url.includes("/search?search_id=newposts")) { return '<i class="fa fa-newspaper" style="color:#3498db"></i> [المواضيع الجديدة]';}
if (url.includes("/search?search_id=egosearch")) { return '<i class="fa fa-user" style="color:#2ecc71"></i>[مُساهماتي]';}
if (url.includes("/search?search_id=unanswered")) { return '<i class="fa fa-question-circle" style="color:#e67e22"></i>[مواضيع بدون مساهمات]';}
if (url.includes("/search?search_id=activetopics")) { return '<i class="fa fa-bolt" style="color:#f1c40f"></i>[هذا اليوم]';}
return '<i class="fa fa-link" style="color:#7f8c8d"></i>';
}


    function timeAgo(timestamp) {
        var seconds = Math.floor((Date.now() - timestamp) / 1000);
        if (seconds < 60) return seconds + " ثوانٍ";
        var minutes = Math.floor(seconds / 60);
        if (minutes < 60) return minutes + " دقيقة";
        var hours = Math.floor(minutes / 60);
        if (hours < 24) return hours + " ساعة";
        var days = Math.floor(hours / 24);
        return days + " يوم";
    }

    function updateRecentVisits() {
        var visits = JSON.parse(localStorage.getItem('recentVisits')) || [];

        $('#recentLinks').empty();
      visits.forEach(function (visit) {
    visit.time = Number(visit.time);

    $('#recentLinks').append(
        '<li class="recent-item">' +
            '<a class="recent-link" href="' + visit.url + '">' +
                getIcon(visit.url) + ' ' + visit.title +
                '<small class="visit-time">منذ ' + timeAgo(visit.time) + '</small>' +
            '</a>' +
            '<button class="removeLink" data-url="' + visit.url + '" title="مسح الرابط"><i class="fa fa-times"></i></button>' +
        '</li>'
    );
});


        if (visits.length > 0) {
            if (!$('#clearRecent').length) {
                $('#recentVisits').append('<button id="clearRecent">مسح جميع الروابط</button>');
            }
        } else {
            $('#clearRecent').remove();
        }
    }
    function addRecentVisit(url, title) {
        var cleanPaths = ["/faq", "/discover", "/images", "/events", "/publi", "/latest", "/viewonline", "/search", "/abuse?page", "/contact", "/?mode=delete_cookies"];
        if (cleanPaths.some(path => url.startsWith(path))) {
            if (title.includes(" - ")) {
                title = title.split(" - ")[0].trim();
            }
        }
        var excluded = ['editpost', 'newtopic', 'reply', 'post', 'sentbox', 'outbox', 'savebox'];
        if (excluded.some(path => url.toLowerCase().endsWith(path))) return;
        var sectionMatch = url.match(/\/f(\d+)(?:p\d+)?-montada/);
        var pageMatch = url.match(/\/f\d+p(\d+)-montada/);
        if (sectionMatch) {
            var sectionNumber = sectionMatch[1];
            var buttonNumber = sessionStorage.getItem('clickedPageButton');

            if (buttonNumber && pageMatch) {
                title += " - القسم " + sectionNumber + " - صفحة " + buttonNumber;
                sessionStorage.removeItem('clickedPageButton');
            } else if (pageMatch) {
                title += " - القسم " + sectionNumber + " - صفحة " + pageMatch[1];
            } else {
                title += " - القسم " + sectionNumber;
            }
        }
        var visits = JSON.parse(localStorage.getItem('recentVisits')) || [];
        visits = visits.filter(v => v.url !== url);
        visits.unshift({
            url: url,
            title: title,
            time: Date.now()
        });
        if (visits.length > 100) visits.pop();
        localStorage.setItem('recentVisits', JSON.stringify(visits));
        updateRecentVisits();
    }
    $(document).on('click', '.removeLink', function () {
        var urlToRemove = $(this).data('url');
        var visits = JSON.parse(localStorage.getItem('recentVisits')) || [];
        visits = visits.filter(v => v.url !== urlToRemove);
        localStorage.setItem('recentVisits', JSON.stringify(visits));
        updateRecentVisits();
    });
    $(document).on('click', '#clearRecent', function () {
        localStorage.removeItem('recentVisits');
        updateRecentVisits();
    });
    var pageTitle = document.title;
    var pageUrl = window.location.pathname + window.location.search;
    addRecentVisit(pageUrl, pageTitle);
    updateRecentVisits();
});

ثم اضغط على زر قدم.

إضافة عملية تجمع بين خدمة الأعضاء وتحسين أداء المنتدى في محركات البحث في آن واحد. الشكر موصول لصاحب الكود على هذا العمل الذي طوّره بالاستعانة بالذكاء الاصطناعي.

صاحب الكود: كونان2000
 

رأيك جزء من المعرفة.

أضف تجربتك أو سؤالك، فالنقاش يكمل الفكرة.

في هذا الموضوع

صاحب النقاش

كود جيفري
كود جيفريعضو جديد

معرفة تكبر بالنقاش

وجدت معلومة مفيدة؟ أضف تجربتك أو سؤالك ليساعد النقاش أعضاء آخرين.

أكمل رحلتك

كود يخفي أي جزء من المساهمة عن الزوارتمييز المساهمات حسب الجهاز (الهواتف والكمبيوترات)اجعل مظهر الإشعارات مثل الفيسبوك
عودة
أعلى