ДТ РАБОТИЛНИЦА

Регистрирайте безплатен акаунт днес, за да станете член! След като влезете, ще можете да участвате в този сайт, като добавяте свои собствени теми и публикации, както и да се свързвате с други членове чрез вашата лична пощенска кутия!

  • Здравейте, майстори на заваряването, кодирането и автомобилните технологии!

    Аз съм Тони Ангелчовски, създател на dtgarage.eu - вашата нова дигитална работилница. С визията за място, където можем да обменяме идеи, да се обучаваме и да растем заедно, dtgarage.eu събира любители и професионалисти от света на заваряването, автомобилите, IT и уеб кодирането.

    В dtgarage.eu, ние сме общност, която е готова да помага и подкрепя всеки свой член. Ние вярваме, че всеки от нас може да допринесе за развитието на тази платформа, независимо дали е професионалист или ентусиаст.

    Само една стъпка ви дели от това да станете част от нашата общност - регистрацията. Регистрирайте се сега и открийте света на dtgarage.eu - мястото, където можем да създаваме и растем заедно.

    Приключението започва тук. Добре дошли в DTGARAGE.EU!

Последни публикации на вашия уебсайт

XenForo 2 Последни публикации на вашия уебсайт

toni

Administrator
Staff member
toni submitted a new resource:

Последни публикации на вашия уебсайт - Latest posts

Ето един бърз и лесен начин да получите списък с най-новите публикации на уебсайта си ....

ЗАБЕЛЕЖКА : Това не е предназначено да бъде вътре в xenforo, нито пък е проектирано да се използва по този начин, то е за бързо блокиране на последна публикация/последна раздел за новини на действителния ви уебсайт .

Ще ви трябва този брилянтен помощен клас от Shadab https://gist.github.com/722240
Просто го изтеглете и качете файла в...

Прочетете повече за този ресурс...
 
Ако някой има нужда от пример как да го постави във валиден файл пробвайте този код:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>Latest X Threads</title>
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
    <ul>
        <?php
        // get latest x forum posts from xenforo by liamdawe
        // change these to your database information
        $database_host = 'localhost'; // usually left as it is!
        $database_username = 'usr';
        $database_password = 'pwd';
        $database_db = 'db';

        $forum_url = ''; // edit this to whatever folder your forum is in

        $limit = 5; // change to the amount of posts you want displayed

        $forum_ids = 'ALL'; // enter either "ALL" or forum id's seperated by commas so "1,2,3"

        mysql_connect($database_host, $database_username, $database_password);
        mysql_select_db($database_db);

        $where = '';
        if ($forum_ids != 'ALL')
        {
            $where = 'WHERE `node_id` IN ($forum_ids)';
        }

        $sql_forum = "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";

        $query_forum = mysql_query($sql_forum);
            while ($topics = mysql_fetch_assoc($query_forum))
            {
                $url_title = str_replace(' ', '-', $topics['title']);
                $url_title = str_replace('.', '', $url_title);
                $url_title = str_replace('?', '', $url_title);
                $url_title = str_replace('/', '-', $url_title);
                $url_title = str_replace('\\', '-', $url_title);
                $url_title = str_replace('"', '-', $url_title);
                echo "<li><a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a></li>";
            }
        ?>
    </ul>
</body>

</html>
 
Ето още един начин:
PHP:
<?php
$forumUrl = '/forums/'; //Forum URL, must end with slash
$limit = 10; // Display this number of last posts
$forumDirectory = realpath(__DIR__.'/../'); // Full path to forum folder
if(!$forumDirectory) {
    die('$forumDirectory is incorrect!');
}

$startTime = microtime(true);

require($forumDirectory. '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($forumDirectory . '/library');

// Initializing application
XenForo_Application::initialize($forumDirectory . '/library', $forumDirectory);
XenForo_Application::set('page_start_time', $startTime);

// Loading dependencies
$xfDependencies = new XenForo_Dependencies_Public();
$xfDependencies->preLoadData();

// Initializing session
XenForo_Session::startPublicSession();

// Reading viewable nodes list
$nodeModel = XenForo_Model::create('XenForo_Model_Node');
$viewableNodes = $nodeModel->getViewableNodeList();
$nodeIds = array_keys($viewableNodes);
$nodeIdsList = implode($nodeIds, ',');

// Requesting last N viewable nodes
$sql_forum = "SELECT `title`, `thread_id`, `view_count`, `reply_count` FROM `xf_thread` WHERE `node_id` IN ($nodeIdsList) AND discussion_state='visible' ORDER BY `last_post_date` DESC LIMIT $limit";
$lastThreads = XenForo_Application::get('db')->fetchAll($sql_forum);

// Here you can insert the code you want

// Displaying content
foreach ($lastThreads as $thread) {
    // Constructing full path to threads
    $threadUrl = $threadUrl = $forumUrl. XenForo_Link::buildPublicLink('threads', $thread);

    // Trimming and escaping
    $threadTitle = XenForo_Template_Helper_Core::helperWordTrim($thread['title'], 50);

    //Displaying
    echo "<a href=\"$threadUrl\">$threadTitle</a> Изгледи: {$thread['view_count']}, Отговор: {$thread['reply_count']}<br /><br />";
}
?>


Промени:
  • Премахната зависимост от GeekPoint_Symfony
  • Името на променливите е променено и е сменено с малки букви на CamelCase.
  • discussion_state вече е в заявката
  • Работи във всяка папка
 
Last edited:
Здравейте,
Искам да споделя с вас още един начин, с който може да изведете последните публикации от вашия уебсайт с помощта на RSS канал. Това е много полезен метод за предоставяне на актуална информация за вашите потребители. Ето как можете да го направите:

1. Използвайте следния URL адрес, за да получите RSS канала на вашия уебсайт: [вмъкнете URL адрес на RSS канала на вашия уебсайт]
2. Използвайте подходящи инструменти или скриптове за обработка на RSS канала. В зависимост от вашия уебсайт и предпочитания, може да използвате PHP, JavaScript или друг език за програмиране.
3. Изведете последните публикации от RSS канала на вашата уеб страница или в дискусията, като използвате подходящите HTML и CSS стилове за форматиране на информацията.

Моля, обърнете внимание, че процесът за извеждане на RSS канала може да варира в зависимост от вашата уеб платформа или инструменти, които използвате. Препоръчвам да се консултирате с документацията или поддръжката на вашата платформа за конкретни инструкции и ръководства.

PHP код: виж демо


PHP:
<?php
$RSS_URL = 'https://dtgarage.eu/forums/forums/-/index.rss'; // Заменете с адреса на вашия RSS канал

function fetchLatestThreads($RSS_URL) {
    $rss = simplexml_load_file($RSS_URL);
    $output = '<ul>';

    for ($i = 0; $i < min(count($rss->channel->item), 10); $i++) {
        $threadTitle = $rss->channel->item[$i]->title;
        $threadLink = $rss->channel->item[$i]->link;
        $output .= "<li><a href=\"$threadLink\" target=\"_blank\">$threadTitle</a></li>";
    }

    $output .= '</ul>';
    return $output;
}

echo fetchLatestThreads($RSS_URL);
?>

Това е цикъл for, който обхожда последните 10 елемента от item колекцията в rss обекта.

  • Променливата $i се инициализира със стойност 0.
  • Условието $i < min(count($rss->channel->item), 10) проверява дали $i е по-малко от по-малкото число между броя на елементите в item колекцията и 10.
  • Ако условието е изпълнено, цикълът се изпълнява.
  • В тялото на цикъла се извлича заглавието на текущия елемент от title свойството на item колекцията и се присвоява на променливата $threadTitle.
  • Също така, се извлича линка на текущия елемент от link свойството на item колекцията и се присвоява на променливата $threadLink.
  • След това се изпълнява кодът в тялото на цикъла.
  • Накрая, променливата $i се увеличава с 1 и се повтаря процесът, докато условието стане лъжа или броячът достигне границата (10).
Така цикълът обхожда последните 10 елемента от item колекцията и извлича заглавието и линка за всяка тема от форума.


Ето същият код с малко стил: виж демо

PHP:
<?php
$RSS_URL = 'https://dtgarage.eu/forums/forums/-/index.rss'; // Заменете с адреса на вашия RSS канал

function fetchLatestThreads($RSS_URL) {
    $rss = simplexml_load_file($RSS_URL);
    $output = '<h3>Последни теми от форумите</h3><ul style="list-style-type: none; border: 1px solid #333; padding: 15px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);">';

    for ($i = 0; $i < min(count($rss->channel->item), 17); $i++) {
        $threadTitle = $rss->channel->item[$i]->title;
        $threadLink = $rss->channel->item[$i]->link;
        $output .= "<li style=\"margin-bottom: 10px;\"><a href=\"$threadLink\" target=\"_blank\">$threadTitle</a></li>";
    }

    $output .= '</ul>';
    return $output;
}

echo fetchLatestThreads($RSS_URL);
?>


JavaScript код: виж демо

JavaScript:
<script>
        const RSS_URL = 'https://dtgarage.eu/forums/forums/-/index.rss'; // Заменете с адреса на вашия RSS канал

async function fetchLatestThreads() {
  const response = await fetch(RSS_URL);
  const text = await response.text();
  const parser = new DOMParser();
  const xmlDoc = parser.parseFromString(text, 'application/xml');
  const threads = xmlDoc.getElementsByTagName('item');
  let output = '<ul>';

  for (let i = 0; i < Math.min(threads.length, 10); i++) {
    const threadTitle = threads[i].getElementsByTagName('title')[0].textContent;
    const threadLink = threads[i].getElementsByTagName('link')[0].textContent;
    output += `<li><a href="${threadLink}" target="_blank">${threadTitle}</a></li>`;
  }

  output += '</ul>';
  document.getElementById('latest-threads').innerHTML = output;
}

fetchLatestThreads();

    </script>


Това е JavaScript код, който извършва същата функционалност като предишният PHP код, но на клиентската страна.

Описание на кода:

  1. Променливата RSS_URL съхранява адреса на RSS канала, от който ще бъдат извлечени данните за последните теми.
  2. Функцията fetchLatestThreads() е асинхронна функция, която използва fetch() за извличане на данните от RSS канала.
  3. След като получи отговор от заявката, текстът се преобразува в XML обект чрез DOMParser.
  4. Списъкът с елементите от RSS канала се извлича чрез getElementsByTagName().
  5. В цикълът се обхождат елементите и се извличат заглавието и връзката за всяка тема.
  6. Създава се HTML елемент <li> с връзка към всяка тема, като заглавието се вмъква чрез шаблонни низове.
  7. След като се формира целият списък, той се вмъква в HTML елемента с идентификатор latest-threads.
Този JavaScript код може да се използва във вашия HTML файл, като го включите в <script> елемента на страницата. В резултат ще се изведе списък с последните теми от форума в елемента с идентификатор latest-threads. Можете да го промените, за да отговаря на вашия CSS стил и да го поставите в желаната част от страницата.


Благодаря и ако имате допълнителни въпроси, моля, не се колебайте да питате!
 
Last edited:
Top Bottom