Announcement Title

Your first announcement to every user on the forum.

3.0.3 كود تحويل عنوان الموضوع الى هاشتاغات

Admin

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

معاينة الكود​

كود تحويل عنوان الموضوع الى هاشتاغات pbboard

تركيب الكود​

توجه نحو لوحة الادراة - التحكم بالقوالب - ادخل قالب Show_Subject وابحث عن السطر التالي:
كود:
{if {$Info['attach_subject']}}
{template}attach_show{/template}
{/if}
واضف الكود التالي اسفله او اي مكان آخر تريد ان تظهر في الهاشتاغات
كود:
<div id="hashtags_{$subject_id}" class="hashtags-container">
<script>
(function() {
    function getThreadTitle() {
        const h1Element = document.querySelector('h1');
        if (h1Element) {
            return h1Element.textContent.trim();
        }
        const pageTitle = document.title;
        if (pageTitle) {
            const parts = pageTitle.split('|');
            if (parts.length > 0) {
                return parts[0].trim();
            }
            return pageTitle.trim();
        }
        return '';
    }

    function convertToKeywords(text) {
        if (!text) return [];
        const words = text.split(/\s+/);
        return words
            .filter(word => word.length >= 3)
            .map(word => {
                word = word.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, "");
                if (word.length >= 3) {
                    return word;
                }
                return null;
            })
            .filter(tag => tag !== null);
    }

    function addHashtagsToPost(keywords) {
        if (keywords.length === 0) return;
        const hashtagsContainer = document.createElement('div');
        hashtagsContainer.className = 'hashtags-container';
        hashtagsContainer.style.marginTop = '20px';
        hashtagsContainer.style.paddingTop = '10px';
        hashtagsContainer.style.borderTop = '1px solid #eaeaea';

        keywords.forEach(keyword => {
            const hashtagLink = document.createElement('a');
            hashtagLink.href = "javascript:void(0);";
            hashtagLink.textContent = `#${keyword}`;
            hashtagLink.style.marginRight = '8px';
            hashtagLink.style.textDecoration = 'none';
            hashtagLink.style.fontWeight = 'bold';
            hashtagLink.style.color = '#0066cc';
            hashtagLink.addEventListener('click', () => {
                performSearch(keyword);
            });

            hashtagsContainer.appendChild(hashtagLink);
        });

        const statusDiv = document.getElementById('status_{$subject_id}');
        if (statusDiv) {
            statusDiv.appendChild(hashtagsContainer);
        }
    }

    function performSearch(keyword) {
        const searchInput = document.querySelector('input[name="keyword"]');
        if (searchInput) {
            searchInput.value = keyword;
            const event = new Event('input', { bubbles: true });
            searchInput.dispatchEvent(event);
            const searchButton = document.querySelector('button[type="submit"], input[type="submit"]');
            if (searchButton) {
                searchButton.click();
            }
        } else {
            console.error("Search input not found!");
        }
    }

    function main() {
        const title = getThreadTitle();
        const keywords = convertToKeywords(title);
        if (keywords.length > 0) {
            addHashtagsToPost(keywords);
        }
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', main);
    } else {
        main();
    }
})();
</script>
</div>
 
Soliman قال:
لاتعمل الروابط على الكلمات بشكل جيد ولا يظهر للزوار
يبدو لي نفس عمل الكلمات الدلالية التي تظهر اسفل الموضوع

لتعديله واضافته لكلمات عنوان الموضوع بعلامة الهشتاق #
وربطه بمحرك بحث المنتدى مباشرة استخدم هذا الكود


كود:
<div style="margin-top: 20px; padding-top: 10px; border-top: 1px solid rgb(234, 234, 234);">
 <?php
 $yry = $PowerBB->_CONF['template']['keywords'];
 $c1 = explode(",",$yry);
 for ($i = 0; $i < sizeof($c1); $i++) {
 echo '<a href="index.php?page=search&amp;option=1&amp;keyword='.$c1[$i].'&amp;search_only=1&section=all&amp;sort_order=DESC" style="margin-right: 8px; text-decoration: none; font-weight: bold; color: rgb(0, 102, 204);">#'.$c1[$i].'</a>';
 }
 ?>
 </div>


ولربطه بالكلمات الدلالية للمنتدى مباشرة استخدم هذا الكود

كود:
<div style="margin-top: 20px; padding-top: 10px; border-top: 1px solid rgb(234, 234, 234);">
 <?php
 $yry = $PowerBB->_CONF['template']['keywords'];
 $c1 = explode(",",$yry);
 for ($i = 0; $i < sizeof($c1); $i++) {
 echo '<a href="index.php?page=tags&amp;show=1&amp;tag='.$c1[$i].'" style="margin-right: 8px; text-decoration: none; font-weight: bold; color: rgb(0, 102, 204);">#'.$c1[$i].'</a>';
 }
 ?>
 </div>


الكود يوضع اسفل او اعلى هذا السطر في قالب: show_subject
كود:
{get_hook}show_subject_down_text{/get_hook}


او يمكنك استخدام خاصية اضافة برنامج مساعد جديد
من لوحة تحكم الإدارة» الإضافات البرمجية» إضافة برنامج مساعد جديد
واضافة الكود وربط الـ Hook Name ب: show_subject_down_text

من مُنشئ السكربت سُليمان لمن يواجهوان مشاكل مع كود الجافا الذي قمت بانشاءه
 

ما هو انكور؟

هو منتدى عربي تطويري يرتكز على محتويات عديدة لاثراء الانترنت العربي، وتقديم الفائدة لرواد الانترنت بكل ما يحتاجوه لمواقعهم ومنتدياتهم واعمالهم المهنية والدراسية. ستجد لدينا كل ما هو حصري وكل ما هو مفيد ويساعدك على ان تصل الى وجهتك، مجانًا.
عودة
أعلى