انجمن متا: طراحی سایت و سئو - دانلود قالب و تم - کریپتو

کامپیوتر، اینترنت، شبکه، مدیریت محتوا، تم => مدیریت محتوای Joomla => CMS => افزونه های جوملا => نويسنده: guld118 در قبل از ظهر 00:46:55 - 05/21/25

عنوان: کد اتصال پست های انجمن SMF به جوملا بدون RSS
رسال شده توسط: guld118 در قبل از ظهر 00:46:55 - 05/21/25
بهترین روش اینه که مستقیماً به پایگاه داده SMF وصل بشیم و آخرین ارسال‌ها رو از جدول‌های مربوطه استخراج کنیم.
✅ مراحل کلی کار:
-اتصال به دیتابیس SMF (معمولاً MySQL).
-دریافت آخرین ارسال‌ها از جدول smf_messages و smf_topics.
-استخراج تصویر از محتوای پست (اگر وجود داشته باشه).
-در صورت نبود تصویر، استفاده از تصویر پیش‌فرض.
-ارسال اطلاعات به جوملا (مثلاً درج در جدول مطالب یا نمایش در ماژول سفارشی).

برای شروع، لطفاً این اطلاعات رو لازم است:
مشخصات اتصال به دیتابیس SMF:

- هاست (host)
- نام کاربری (username)
- رمز عبور (password)
- نام دیتابیس (database name)
- پیشوند جدول‌ها (table prefix، مثلاً smf_)

فقط کافیه کد PHP خودتون رو در یک ماژول سفارشی جوملا قرار بدین.

<?php
// تنظیمات اتصال به دیتابیس SMF
$db_host 'localhost';
$db_user 'DB_USERNAME';
$db_pass 'DB_PASSWORD';
$db_name 'DB_NAME';
$table_prefix 'smf_'// معمولاً smf_

// تصویر پیش‌فرض
$default_image 'https://www.meta4u.com/images/avatar_9_1335080356.png';

// تعداد پست‌هایی که می‌خوایم بگیریم
$limit 5;

// اتصال به دیتابیس
$conn = new mysqli($db_host$db_user$db_pass$db_name);
if (
$conn->connect_error) {
    die(
"خطا در اتصال به دیتابیس: " $conn->connect_error);
}

// گرفتن آخرین پست‌ها
$sql "
    SELECT m.id_msg, m.subject, m.body, m.poster_time, m.id_topic, t.id_board
    FROM 
{$table_prefix}messages m
    JOIN 
{$table_prefix}topics t ON m.id_topic = t.id_topic
    WHERE m.approved = 1
    ORDER BY m.id_msg DESC
    LIMIT 
$limit
"
;

$result $conn->query($sql);

if (
$result->num_rows 0) {
    echo 
'<div class="smf-latest-posts">';
    while (
$row $result->fetch_assoc()) {
        
$subject htmlspecialchars($row['subject']);
        
$body $row['body'];
        
$topic_id $row['id_topic'];
        
$board_id $row['id_board'];
        
$link "https://www.meta4u.com/forum/index.php?PHPSESSID=62fee68425a895032e5db7d5d13c75a3&topic={$topic_id}.0";

        
// پیدا کردن اولین تصویر در متن پست
        
preg_match('/<img[^>]+src="([^">]+)"/i'$body$matches);
        
$image = isset($matches[1]) ? $matches[1] : $default_image;

        echo 
'<div class="smf-post" style="margin-bottom:15px;">';
        echo 
"<a href='$link' target='_blank'>";
        echo 
"<img src='$image' alt='Post Image' style='width:80px;height:auto;float:right;margin-left:10px;'>";
        echo 
"<strong>$subject</strong>";
        echo 
"</a>";
        echo 
'<div style="clear:both;"></div>';
        echo 
'</div>';
    }
    echo 
'</div>';
} else {
    echo 
"پستی یافت نشد.";
}

$conn->close();
?>


📌 نکات:
این کد رو می‌توانید داخل یک فایل PHP بذارید و از طریق ماژول Custom HTML در جوملا با فعال‌سازی "Allow PHP" اجراش کنید (یا از افزونه‌هایی مثل DirectPHP استفاده کنید).
حتماً اطلاعات دیتابیس رو به درستی جایگزین کنید.