Скрипт для вывода последних топиков на главную

Автор Tjom, 28 ноября 2008, 20:52:41

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Tjom

Если кому-то интересно сделать вывод топиков с именами на главной - ниже идет код. За разработку - спасибо digger!

Что хорошего:
- выводится столько последних топиков сколько вам надо (настраивается в скрипте)
- ссылка ведет на последнее сообщение
- перед названием топика - кол-во ответов в топике
- красиво смотрится
- разместить можно в любом шаблоне

Чтобы разместить на главной - используйте "BoardIndex.template.php" в вашей теме оформления. Можно вставить перед


В файле SSI.php (только для SMF1.x, для SMF2 файл не трогаем)

поменять

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
  $request = db_query("
      SELECT
        m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,
       
на

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
  $request = db_query("
      SELECT
        m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName, t.numReplies,

чуть ниже, где // Build the array

после

'topic' => $row['ID_TOPIC'],
добавить

'replies' => $row['numReplies'],
Теперь в любом шаблоне можно вставить

// * dRecentTopics mod
    require_once('SSI.php');
    $ssi_count_topics_left = 5; // Количество отображаемых последних сообщений в левой колонке
    $ssi_count_topics_right = 5; // Количество отображаемых последних сообщений в правой колонке
    $ssi_exclude_boards = array(); // Перечислить через запятую id разделов, последние сообщения из которых не отображать. Например, array (1, 2)
    $ssi_include_boards = array(); // Перечислить через запятую id разделов, последние сообщения из которых отображать. Например, array (1, 2). Работает только для SMF2
    $ssi_row_counter = 0;
    $ssi_recentTopics = ssi_recentTopics($ssi_count_topics_left + $ssi_count_topics_right, $ssi_exclude_boards, 'array'); // Для SMF1
    $ssi_recentTopics = ssi_recentTopics($ssi_count_topics_left + $ssi_count_topics_right, $ssi_exclude_boards, $ssi_include_boards, 'array'); // Для SMF2
    echo '<table border="0" width="100%"><tr><td>';
    foreach ($ssi_recentTopics as $ssi_recentTopic) {
        $ssi_row_counter++;
        echo '
        [+', $ssi_recentTopic['replies'], '] ', // Количество ответов в теме
        $ssi_recentTopic['link'], // Ссылка на последнее сообщение
        !$ssi_recentTopic['new'] ? '<img src="/Themes/default/images/russian/new.gif" />' : '', // Значок new
        ' | ', // Разделитель                     
        $ssi_recentTopic['time'], // Дата последнего сообщения               
        ' | ', // Разделитель
        $ssi_recentTopic['poster']['link'], // Ссылка на автора последнего сообщения
        ' | ', // Разделитель       
        $ssi_recentTopic['board']['link'], // Ссылка на раздел               
        '<br />';
        if ($ssi_row_counter == $ssi_count_topics_left)
            echo '</td><td>';
    }
    echo '</td></tr></table>';
// dRecentTopics mod * 

yurgon

как это запустить на основном домене, например на CMS , еслифорум стоит на поддомене!

Спасибо


Serjj

Есть вопросы:
1.
Цитировать$ssi_exclude_boards = array (); // Перечислить через запятую id разделов, последние сообщения из которых не отображать. Например, array (10, 20);
Как узнать id разделов? Где посмотреть?
2. Как можно вверху получившегося блока последних сообщений вставить строчку: "Последние сообщения"?
3. Как сделать меньше расстояние между двумя колонками сообщений?

Tjom

1. В урле раздела
2. В участке кода - <table border="0" width="100%"><tr><td> - после ТД и до апострофа вставляй то, что тебе надо
3. Где идут теги <td> вставляй параметр width и задавай ширину в процентах или пикселах

Sebastyana

А можно ли организовать выводимые темы в зависимости от уровня доступа? Если указать какие не выводить, то они будут невидны всем. Нужно, что бы были видны те, к которым открыт доступ пользователю


Grigorius

Странно. У меня в 2.0 RC1 не работает. Может SSI.php другой уже?

Mindal

Цитата: digger от 03 марта 2009, 01:48:48
К SSI.php правильный путь укажите и будет работать.
а где этот путь указывается? извините за тупость

Drakonsa

Цитата: Mindal от 11 июня 2009, 13:28:29
а где этот путь указывается? извините за тупость
В файле где он нужен.

Serifa

Теперь в любом шаблоне можно вставить -

Если тема оформления стандартная, где вставлять? Display.template.php или в index.template.php? Простите за тупость.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

digger®

Цитата: His Divine Shadow от 07 июля 2009, 12:54:04
Теперь в любом шаблоне можно вставить -

Если тема оформления стандартная, где вставлять? Display.template.php или в index.template.php? Простите за тупость.

Где хотите чтобы было видно, там и вставляйте. Обычно в index.template.php

Magnit

А если я хочу вывести последние сообщения на страницу сайта под cms?

Этот код:
Цитировать// * dRecentTopics mod #3
require_once('SSI.php');
$ssi_count_topics_left = 10; // Количество отображаемых последних сообщений в левой колонке
$ssi_count_topics_right = 5; // Количество отображаемых последних сообщений в правой колонке
$ssi_exclude_boards = array (); // Перечислить через запятую id разделов, последние сообщения из которых не отображать. Например, array (10, 20);
$ssi_row_counter = 0;
$ssi_recentTopics = ssi_recentTopics($ssi_count_topics_left + $ssi_count_topics_right, $ssi_exclude_boards, 'array');
echo '<table border="0" width="100%"><tr><td>';
foreach ($ssi_recentTopics as $ssi_recentTopic){
  $ssi_row_counter++;
  echo '<a href="' . $ssi_recentTopic['href'] . '">' . '[+' . $ssi_recentTopic['num_replies'] . '] ' . $ssi_recentTopic['subject'] . '</a> | ' . $ssi_recentTopic['poster']['name'] . '<br />';
  if ($ssi_row_counter == $ssi_count_topics_left) echo '</td><td>';
}
echo '</td></tr></table>';
// dRecentTopics mod *

как вывести в html?
: : Oчарована digger'ом : :


mall

ЦитироватьПожалуйста, не обращайтесь напрямую к файлу SSI.php через адрес(URL), возможно, Вы захотите использовать путь ('SSI.php') или добавить ?ssi_function=something.

хочу вывести в WordPress  ??? как исправить?


mall

ЦитироватьУказывать не URL, а путь в файловой системе.

подскажи подробнее плз

всмысле я должен указать не http://sait.ru/bla/ssi.php

а от используемого в данный момент ? так у меня WP, как реализовать? перелопачивать все дерево папок? омг

Badman


digger®

Цитата: mall от 27 июля 2009, 12:30:05
подскажи подробнее плз

всмысле я должен указать не http://sait.ru/bla/ssi.php

а от используемого в данный момент ? так у меня WP, как реализовать? перелопачивать все дерево папок? омг

Открываем http://forum/ssi_examples.php
Наверху будет
To use SSI.php in your page add at the very top of your page before the <html> tag on line 1:
<?php require("/xxx/yyy/SSI.php"); ?>

/xxx/yyy/SSI.php - это и есть правильный путь, используем его

mall

digger, я скачал файл с сервера, но вот какое его содержание:

ЦитироватьTo use SSI.php in your page add at the very top of your page before the &lt;html&gt; tag on line 1:<br />
         <div style="font-family: monospace;">
            &lt;?php require(&quot;<?php echo addslashes($user_info['is_admin'] ? realpath($boarddir . '/SSI.php') : 'SSI.php'); ?>&quot;); ?&gt;

я чегото не улавливаю  crazy

BIOHAZARD

это точно :о)
его не надо скачивать, его через браузер открыть надо :о)

хттп://адрес_форума/ssi_examples.php

и там будут указаны настройки нужные вам
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Stern

Спасибо, TJom, спасибо, digger! - давно народ просил нечто подобное!
МышЫ плакали, кололись, но продолжали жрать кактус...

Крылатый

А если форум и CMS в разных кодировках? У меня выводит что-то типо этого:

  • Прикольные видяшки | FelixDaCat
  • Р'икипедия (Wikipedia) | КрылаС,ый
  • ФоС,РѕРіСЂР°С,,РёРё РІ галерее (гимназия в,,–1) | nuKva
  • Р'елорусский С,,СѓС,Р±РѕР» | КрылаС,ый
  • Р§С,Рѕ РЅРµ нравиС,СЃСЏ РІ нашем РіРѕСЂРѕРґРµ? | Svetik
  • РРјРѕ | Storm

    или из-за чего такое может быть?

digger®

Цитата: Крылатый от 30 июля 2009, 18:28:07
А если форум и CMS в разных кодировках? У меня выводит что-то типо этого:

  • Прикольные видяшки | FelixDaCat
  • Р'икипедия (Wikipedia) | КрылаС,ый
  • ФоС,РѕРіСЂР°С,,РёРё РІ галерее (гимназия в,,–1) | nuKva
  • Р'елорусский С,,СѓС,Р±РѕР» | КрылаС,ый
  • Р§С,Рѕ РЅРµ нравиС,СЃСЏ РІ нашем РіРѕСЂРѕРґРµ? | Svetik
  • РРјРѕ | Storm

    или из-за чего такое может быть?
Из за того что форум и CMS в разных кодировках?

Крылатый


Seed

Большое спасибо с Wordpreess отлично работает :)

yrygvay

Цитата: digger от 30 июля 2009, 22:32:40
Из за того что форум и CMS в разных кодировках?
а решение какое?
Music in Soul
Помогу с переездом с UCOZ

BIOHAZARD

Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

NskRonin

yrygvay

     
ЦитироватьПрикольные видяшки | FelixDaCat
     Р'икипедия (Wikipedia) | КрылаС,ый
     Р¤РѕС,РѕРіСЂР°С,,РёРё РІ галерее (гимназия в,,–1) | nuKva
     Р'елорусский С,,СѓС,Р±РѕР» | КрылаС,ый
     Р§С,Рѕ РЅРµ нравиС,СЃСЏ РІ нашем РіРѕСЂРѕРґРµ? | Svetik
     РРјРѕ | Storm

Это кодировка utf-8
Думаешь ты матерый компьютерщик?
Отцепи мышку...

Magnit

Цитата: digger от 07 июля 2009, 16:33:50
<php
скрипт
?>
У меня CMS modx. Там все выводится исключительно силами html! php не понимает вовсе.
Как сделать в таком случае?
: : Oчарована digger'ом : :

Alpa

#30
Здравствуйте, уважаемый digger,

Установил ваш скрипт в шаблон Joomla, но не могу решить проблему с корректным отображением русских символов.
Joomla и SMF 2.0 RC1-2 установлены с кодировкой UTF-8. Однако заметил что при установке SMF, поставив галку UTF-8, после установки увидел в админке только один доступный язык - ISO-8859-1 English. Затем доустановил русский UTF-8. Затем проверил через phpmyadmin , что все сопоставления и кодировки таблиц моей базы в UTF8 unicode.
Попробовал установить на Joomla модуль вывода последних сообщений с другого форума. Результат идентичный - вопросики вместо русских буковок.
Предполагаю что проблема каким-то образом связана с ssi.php. Но признаюсь честно, не представляю в силу незнания, как подступиться к решению. Не могли бы вы направить меня на путь истинный.

PS Здесь некоторые писали, что установили и успешно используют этот скрипт. Может кто-то из вас сталкивался с подобным, и уже решил эту проблемку. Поделитесь, пожалуйста.

digger®

Цитата: Alpa от 09 октября 2009, 12:17:26
Здравствуйте, уважаемый digger,

Установил ваш скрипт в шаблон Joomla, но не могу решить проблему с корректным отображением русских символов.
Попробовал установить на Joomla модуль вывода последних сообщений с другого форума. Результат идентичный - вопросики вместо русских буковок.

$ssi_recentTopic['subject']
поменять на
iconv("CP1251", "UTF-8//IGNORE", $ssi_recentTopic['subject'])

m4dn3ss

Цитата: Tjom от 28 ноября 2008, 20:52:41
Если кому-то интересно сделать такой же вывод топиков с именами на главной как здесь: http://____forum.future-me.ru/  -  ниже идет код. За разработку - спасибо digger!

Что хорошего:
- выводится столько последних топиков сколько вам надо (настраивается в скрипте)
- ссылка ведет на последнее сообщение
- перед названием топика - кол-во ответов в топике
- красиво смотрится
- разместить можно в любом шаблоне

Чтобы разместить на главной - используйте "BoardIndex.template.php" в вашей теме.
_________________________________________

В SSI.php

поменять

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
   $request = db_query("
      SELECT
         m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,
         
на

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
   $request = db_query("
      SELECT
         m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName, t.numReplies,

чуть ниже, где // Build the array

после

'topic' => $row['ID_TOPIC'],

добавить

'num_replies' => $row['numReplies'],


Теперь в любом шаблоне можно вставить


// * dRecentTopics mod #3
require_once('SSI.php');
$ssi_count_topics_left 10// Количество отображаемых последних сообщений в левой колонке
$ssi_count_topics_right 5// Количество отображаемых последних сообщений в правой колонке
$ssi_exclude_boards = array (); // Перечислить через запятую id разделов, последние сообщения из которых не отображать. Например, array (10, 20);
$ssi_row_counter 0;
$ssi_recentTopics ssi_recentTopics($ssi_count_topics_left $ssi_count_topics_right$ssi_exclude_boards'array');
echo 
'<table border="0" width="100%"><tr><td>';
foreach (
$ssi_recentTopics as $ssi_recentTopic){
  
$ssi_row_counter++;
  echo 
'<a href="' $ssi_recentTopic['href'] . '">' '[+' $ssi_recentTopic['num_replies'] . '] ' $ssi_recentTopic['subject'] . '</a> | ' $ssi_recentTopic['poster']['name'] . '<br />';
  if (
$ssi_row_counter == $ssi_count_topics_left) echo '</td><td>';
}
echo 
'</td></tr></table>';
// dRecentTopics mod *




Для SMF2 не нужно трогать SSI.php, а в самом скрипте поменять $ssi_recentTopic['num_replies'] на $ssi_recentTopic['replies']

эмм..сори за тупой вопрос, но в каком именно файле поменять? в Display.template.php или в каком?

BIOHAZARD

Цитата: m4dn3ss от 15 октября 2009, 22:42:14
эмм..сори за тупой вопрос, но в каком именно файле поменять? в Display.template.php или в каком?
Цитата: Tjom от 28 ноября 2008, 20:52:41
Чтобы разместить на главной - используйте "BoardIndex.template.php" в вашей теме.
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

m4dn3ss

токо в каком месте вставлять
// * dRecentTopics mod #3
require_once('SSI.php');
$ssi_count_topics_left = 10; // Количество отображаемых последних сообщений в левой колонке
$ssi_count_topics_right = 5; // Количество отображаемых последних сообщений в правой колонке
$ssi_exclude_boards = array (); // Перечислить через запятую id разделов, последние сообщения из которых не отображать. Например, array (10, 20);
$ssi_row_counter = 0;
$ssi_recentTopics = ssi_recentTopics($ssi_count_topics_left + $ssi_count_topics_right, $ssi_exclude_boards, 'array');
echo '<table border="0" width="100%"><tr><td>';
foreach ($ssi_recentTopics as $ssi_recentTopic){
  $ssi_row_counter++;
  echo '<a href="' . $ssi_recentTopic['href'] . '">' . '[+' . $ssi_recentTopic['num_replies'] . '] ' . $ssi_recentTopic['subject'] . '</a> | ' . $ssi_recentTopic['poster']['name'] . '<br />';
  if ($ssi_row_counter == $ssi_count_topics_left) echo '</td><td>';
}
echo '</td></tr></table>';
// dRecentTopics mod *


после какой строчки?

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

shumaher

Извините вроде всё сделал по инструкции, но счетчик не считает http://trezvenie.org/__forum


shumaher

Цитата: digger от 08 ноября 2009, 00:25:44
SSI.php не исправлен

А что именно необходимо исправить. По инструкции всё сделал. Это всё сделал.

ЦитироватьВ SSI.php

поменять

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
   $request = db_query("
      SELECT
         m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,
         
на

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
   $request = db_query("
      SELECT
         m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName, t.numReplies,

чуть ниже, где // Build the array

после

'topic' => $row['ID_TOPIC'],

добавить

'num_replies' => $row['numReplies'],


shumaher

Цитата: digger от 08 ноября 2009, 00:56:54
Раз число ответов не показывает, значит в SSI.php что-то не так.

Хорошо буду искать. Спасибо.

shumaher

Выдает такую ошибку. Из-за нее весь форум и сайт по ходу упал.

Цитировать8: Undefined index: num_replies
Файл: /mounted-storage/home118b/sub001/sc43927-CZOD/trezvenie.org/forum/Themes/Trezvenie2/BoardIndex.template.php (main sub template - eval?)
Строка: 34

digger®

Цитата: shumaher от 08 ноября 2009, 14:57:13
Выдает такую ошибку. Из-за нее весь форум и сайт по ходу упал.


Это не ошибка, а предупреждение и упасть из-за него ничего не может. Указывает, опять же, на неотредактированный SSI.

shumaher

Ну хорошо добавляю свой файл SSI. Я его отредактировал дословно как в инструкции. Пять раз проверял.

Bogdkad

Мне нужно вывести последние топики на главную. Но там у меня стоит Drupal. Есть какой-нибудь скрипт для вывода постов на главную, который я смогу вставить в блок  O0?
(И еще: что за тема стоит на этом форуме и можно ли ее где-нибудь скачать  :))

BIOHAZARD

1) SSI.php
2) тема дефолтная, но для версии форума, которая пока не распространяется свободно, а только среди тестеров
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Bogdkad



Magnit

Поставил скрипт. Вывелись темы, отобразили последние и все - так и замерли. Какой там период отображения? Раз в час что ли?
И еще - все ссылки на темы ведут не туда.
: : Oчарована digger'ом : :

MiTyaj

Может кому-то пригодиться такое решение...

Цитата: Tjom от 28 ноября 2008, 20:52:41
Если кому-то интересно сделать такой же вывод топиков с именами на главной как здесь: http://____forum.future-me.ru/  -  ниже идет код. За разработку - спасибо digger!


в BoardUndex.Template.php ищем вот это...


// Only show one post.
if ($settings['number_recent_posts'] == 1)
{


ну и вставляем туда этот код (незабываем про синтаксис php, поэтому проверяем (темы то у всех разные). Преимущество - форма вывода регулируется из админки. Указали в теме оформления вывод последних сообщений 1 - выводиться этим скриптом. Указали другое значение выводиться стандартно. Ну и можно с таким условием в любое место вывести аналогично.
Митяй..