بهترین روش اینه که مستقیماً به پایگاه داده 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 استفاده کنید).
حتماً اطلاعات دیتابیس رو به درستی جایگزین کنید.