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