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

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

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

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

Specnaz123

#250
вот что выводит в блоке

'; foreach ($ssi_recentTopics as $ssi_recentTopic) { $ssi_row_counter++; echo ' [+', $ssi_recentTopic['replies'], '] ', // Количество ответов в теме $ssi_recentTopic['link'], // Ссылка на последнее сообщение !$ssi_recentTopic['new'] ? '' : '', // Значок new ' | ', // Разделитель $ssi_recentTopic['time'], // Дата последнего сообщения ' | ', // Разделитель $ssi_recentTopic['poster']['link'], // Ссылка на автора последнего сообщения ' | ', // Разделитель $ssi_recentTopic['board']['link'], // Ссылка на раздел '
'; if ($ssi_row_counter == $ssi_count_topics_left) echo ''; } echo ''; // dRecentTopics mod * ?>

не знаю уже как решить форум 2.0.7, версия дле 10.1
вроде бы все правильно делаю!

Все сделал спасибо тема не актуальна!

DiS



DiS

Цитата: digger® от 24 апреля 2015, 00:39:35
Да :)
коротенечко, скажем прямо :D
ssi_examples.php - смотрел и не нашёл (кстати http://www.simplemachines.ru/ssi_examples.php с кракозябрами)
в теме вопрос такой же вопрос проскальзывал, но ответа не увидел
если просмотрел ткните носом в код , не стесняйтесь  :-[


digger®

Цитата: DiS от 24 апреля 2015, 11:04:30
коротенечко, скажем прямо :D
ssi_examples.php - смотрел и не нашёл (кстати http://www.simplemachines.ru/ssi_examples.php с кракозябрами)
в теме вопрос такой же вопрос проскальзывал, но ответа не увидел
если просмотрел ткните носом в код , не стесняйтесь  :-[
Написать свою функцию, которая будет считывать аватары авторов сообщений и добавлять к выводу.

hw00

Цитата: digger® от 24 апреля 2015, 12:21:54
Написать свою функцию, которая будет считывать аватары авторов сообщений и добавлять к выводу.

Привет...)
А что если нужно вывести название темы,текст темы,дату,автора на собственный сайт?Аля блока новостей на сайт с форума.Подскажи пж.

digger®

Цитата: hw00 от 07 мая 2015, 15:28:25
Привет...)
А что если нужно вывести название темы,текст темы,дату,автора на собственный сайт?Аля блока новостей на сайт с форума.Подскажи пж.
То же самое, только указать правильный путь к SSI.php

hw00

Цитата: digger® от 07 мая 2015, 15:40:58
То же самое, только указать правильный путь к SSI.php

Notice: SSI.php не может загрузить сессию! Возможно, это проблема связана с выходом или другими функциями. Пожалуйста, убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/u160250/site/community/SSI.php on line 170

Выводит с этой ошибкой.

Не разобрался какой параметр отвечает за сам текст внутри сообщения.

hw00

Цитата: hw00 от 07 мая 2015, 16:29:41
Notice: SSI.php не может загрузить сессию! Возможно, это проблема связана с выходом или другими функциями. Пожалуйста, убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/u160250/site/community/SSI.php on line 170

Выводит с этой ошибкой.

Не разобрался какой параметр отвечает за сам текст внутри сообщения.
Помогите пж

gorbi

А как сделать отдельный пункт меня, например, "стена" и выводить туда последние сообщения? Готовое решение  в виде мода не попадалось?

digger®

Цитата: hw00 от 07 мая 2015, 16:29:41
Notice: SSI.php не может загрузить сессию! Возможно, это проблема связана с выходом или другими функциями. Пожалуйста, убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/u160250/site/community/SSI.php on line 170

Выводит с этой ошибкой.
ЦитироватьПожалуйста, убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами!

hw00

Цитата: digger® от 08 мая 2015, 13:36:44

Какой элемент в скрипте отвечает за вывод текста из сообщения?
Аля

        [+', $ssi_recentTopic['replies'], '] ', // Количество ответов в теме
        $ssi_recentTopic['link'], // Ссылка на последнее сообщение
        !$ssi_recentTopic['new'] ? '<img src="/Themes/default/images/russian/new.gif" />' : '', // Значок new
        ' | ', // Разделитель                       
        $ssi_recentTopic['time'], // Дата последнего сообщения               
        ' | ', // Разделитель
        $ssi_recentTopic['short_subject']['link'], // Ссылка на автора последнего сообщения
        ' | ', // Разделитель       
        $ssi_recentTopic['board']['link'], // Ссылка на раздел   

kak2z

Цитата: hw00 от 09 мая 2015, 14:00:02
Какой элемент в скрипте отвечает за вывод текста из сообщения?
Аля

        [+', $ssi_recentTopic['replies'], '] ', // Количество ответов в теме
        $ssi_recentTopic['link'], // Ссылка на последнее сообщение
        !$ssi_recentTopic['new'] ? '<img src="/Themes/default/images/russian/new.gif" />' : '', // Значок new
        ' | ', // Разделитель                       
        $ssi_recentTopic['time'], // Дата последнего сообщения               
        ' | ', // Разделитель
        $ssi_recentTopic['short_subject']['link'], // Ссылка на автора последнего сообщения
        ' | ', // Разделитель       
        $ssi_recentTopic['board']['link'], // Ссылка на раздел   

что то мне подсказывает что эта
$ssi_recentTopic['link'], // Ссылка на последнее сообщение
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

hw00

Цитата: kak2z от 09 мая 2015, 14:03:59
что то мне подсказывает что эта
$ssi_recentTopic['link'], // Ссылка на последнее сообщение
Это пример из готового скрипта.
Цитата: hw00 от 07 мая 2015, 15:28:25
Привет...)
А что если нужно вывести название темы,текст темы,дату,автора на собственный сайт?Аля блока новостей на сайт с форума.Подскажи пж.



kak2z

Цитата: hw00 от 09 мая 2015, 21:04:32
Это пример из готового скрипта.

а в чем тогда задача? если надо вставить на страницу своего сайта- подключите SSI (require_once('SSI.php');) и все будет отображаться..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

hw00

Цитата: kak2z от 09 мая 2015, 21:08:29
а в чем тогда задача? если надо вставить на страницу своего сайта- подключите SSI (require_once('SSI.php');) и все будет отображаться..
Смысл в том, чтобы скрипт выводил сообщения только из 1 раздела, последующей схеме:
1. Название темы + дата
2. Текст темы
3. Автор

Спрашивал какие переменные отвечают за текст ВНУТРИ  сообщения. Вы вангуете


Цитата: kak2z от 09 мая 2015, 14:03:59
что то мне подсказывает что эта
$ssi_recentTopic['link'], // Ссылка на последнее сообщение

kak2z

Цитата: hw00 от 09 мая 2015, 21:17:05
Смысл в том, чтобы скрипт выводил сообщения только из 1 раздела, последующей схеме:
1. Название темы + дата
2. Текст темы
3. Автор

Спрашивал какие переменные отвечают за текст ВНУТРИ  сообщения. Вы вангуете



функция по умолчанию выводит вот так вот

Цитировать
[Имя раздела]   Название темы от НИК_АВТОРА   Ноября 09, 2014, 11:27:14 am

если в функции ssi_recentTopics указать метод вывода 'array'
то получаем на выходе такой массив

Цитировать
0 =>
    array (size=16)
      'board' =>
        array (size=4)
          'id' => string '1' (length=1)
          'name' => string 'ИМЯ РАЗДЕЛА' (length=62)
          'href' => string 'http://test6.ru/index.php?board=1.0'; (length=35)
          'link' => string '<a href="http://test6.ru/index.php?board=1.0">ИМЯ РАЗДЕЛА</a>' (length=112)
      'topic' => string '28' (length=2)
      'poster' =>
        array (size=4)
          'id' => string '1' (length=1)
          'name' => string 'АВТОР' (length=5)
          'href' => string 'http://test6.ru/index.php?action=profile;u=1'; (length=44)
          'link' => string '<a href="http://test6.ru/index.php?action=profile;u=1">АВТОР</a>' (length=64)
      'subject' => string '4444444444444' (length=13)
      'replies' => string '1' (length=1)
      'views' => string '5' (length=1)
      'short_subject' => string 'ИМЯ РАЗДЕЛА' (length=13)
      'preview' => string 'превью темы' (length=7)
      'time' => string 'Апреля 19, 2015, 11:17:26 am' (length=34)
      'timestamp' => int 1429431446
      'href' => string 'http://test6.ru/index.php?topic=28.msg52;topicseen#new'; (length=54)
      'link' => string '<a href="http://test6.ru/index.php?topic=28.msg52#new" rel="nofollow">ИМЯ ТЕМЫ</a>' (length=87)
      'new' => boolean true
      'is_new' => boolean false
      'new_from' => string '53' (length=2)
      'icon' => string '<img src="http://test6.ru/Themes/Firox_multicolor_by_SMFSimple/images/post/xx.gif" align="middle" alt="xx" />' (length=109)

из этого массива можете доставать что угодно.. я по прежнему не понимаю что не получается.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

hw00

На выходе должно получиться что то вроде этого

Цитата: kak2z от 09 мая 2015, 21:40:18
я по прежнему не понимаю что не получается.

kak2z

Цитата: hw00 от 09 мая 2015, 22:19:20
На выходе должно получиться что то вроде этого

аттач не получите.. надо отдельным запросом его брать..
а сабж и тело сообщения можете получить даже этой функцией..
Вам надо subject и preview
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

hw00

Вопрос остается открытым... Кто сможет допилить скрипт до необходимого результата?

xARNIVAx

Что это за мод, в одну строку сообщения. Может кто допилит?

vlanger

Подскажите как вывести аватар и кнопку пользователя онлайн. Может кто знает?

Dj3000

После переезда на другой хостинг возникла проблема с кодировкой:


На старом хостинге все нормально работало. Подскажите, пожалуйста, как можно исправить?

kak2z

Цитата: Dj3000 от 21 марта 2017, 16:15:11После переезда на другой хостинг возникла проблема с кодировкой:


На старом хостинге все нормально работало. Подскажите, пожалуйста, как можно исправить?
проверьте кодировку базы.. может что то не так перевезли))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Dj3000

Цитата: kak2z от 21 марта 2017, 19:07:25проверьте кодировку базы.. может что то не так перевезли))
Перекидывал форум новый хостер, как они утверждают - оставили всё, как было.
Я так понимаю, вы рекомендуете посмотреть show variables mysql?
Там сейчас следующее:


kak2z

Цитата: Dj3000 от 21 марта 2017, 22:47:04Перекидывал форум новый хостер, как они утверждают - оставили всё, как было.
Я так понимаю, вы рекомендуете посмотреть show variables mysql?
Там сейчас следующее:


не.. открываете свою базу, там список таблиц, напротив каждой написана кодировка..
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Dj3000

Цитата: kak2z от 22 марта 2017, 09:34:56не.. открываете свою базу, там список таблиц, напротив каждой написана кодировка..


kak2z

Цитата: Dj3000 от 22 марта 2017, 20:15:08

вроде нормально.. смотрите кодировки файлов, где у вас там этот скрипт стоит. .
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Dj3000

Цитата: kak2z от 22 марта 2017, 23:07:55вроде нормально.. смотрите кодировки файлов, где у вас там этот скрипт стоит. .
А что именно смотреть? И где?
Замечу, кстати, что в настройках форума стоит UTF. Если сменить на 1251, то вместо русских букв весь форум в знаках вопросв...
При этом, на сайте ничего не меняется. Те же каракули...

Василич

Цитата: Tjom от 28 ноября 2008, 20:52:41Теперь в любом шаблоне можно вставить

// * 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 *


Спасибо ! Вставил на сайт в HTML - все работает ! 

Dj3000

После переезда на новый хостинг, возникла проблема со скриптом, который выводит последние темы на сайте.
Сайт работает на Modx Evo. Форум SMF 2.0.18.
Сейчас этот блок выглядит так:

Скрипт выводится вот таким образом:
<?php
$sdd_db_host
='localhost';//Имя хоста
$sdd_db_name='тут название';//Название бд
$sdd_db_user='тут пользователь';//Пользователь
$sdd_db_pass='тут пароль';//Пароль
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);//Подключение

// * dRecentTopics mod
    
require_once('тут путь к файлу SSI.php');
    
$ssi_count_topics_left 5// Количество отображаемых последних сообщений в левой колонке
    
$ssi_count_topics_right 0// Количество отображаемых последних сообщений в правой колонке
    
$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 ' ';
    foreach (
$ssi_recentTopics as $ssi_recentTopic) {
        
$ssi_row_counter++;
        echo 
'
        '
,  ' '// Количество ответов в теме
        
$ssi_recentTopic['link'], // Ссылка на последнее сообщение
        
' <br> '// Разделитель                       
        
$ssi_recentTopic['time'], // Дата последнего сообщения               
        
' написал '// Разделитель
        
$ssi_recentTopic['poster']['link'], // Ссылка на автора последнего сообщения

        
'<br /><br />';
        if (
$ssi_row_counter == $ssi_count_topics_left)
            echo 
'';
    }
    echo 
' ';
// dRecentTopics mod *
Хостер несколько дней пытался помочь, но ничего не получилось. В итоге ответили, что форум и modx работают на utf8, но в рамках данного снипета кодировка возвращается некорректно, при этом код сниппета в отдельном файле работает как нужно, то есть modx каким то образом на него влияет, на каком этапе происходит это влияние выяснить не удалось.

digger®

Цитата: Dj3000 от 31 марта 2021, 23:13:03После переезда на новый хостинг, возникла проблема со скриптом, который выводит последние темы на сайте.
Зачем mysql_connect вручную вызывается?
Попробуйте тогда следом сделать
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

iaroslav

Имхо, лучше вообще оное подключение к базе поубирать.
$sdd_db_host='localhost';//Имя хоста
$sdd_db_name='тут название';//Название бд
$sdd_db_user='тут пользователь';//Пользователь
$sdd_db_pass='тут пароль';//Пароль
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);//Подключение
Ибо, теоретически, форумный движком через иные переменные соединение с базой подхватывает и, как верно заметил digger®, делает это сам, так что оно не должно не на что влиять.
А на выводе вместо
$ssi_recentTopic['link']Сделать
iconv("windows-1251","UTF-8",$ssi_recentTopic['link'])То есть задать вручную перекодирование ссылок в нужную кодировку.
Ну или, если база в UTF-8, то наоборот
iconv("UTF-8","windows-1251",$ssi_recentTopic['link'])

Dj3000

Цитата: digger® от 01 апреля 2021, 06:04:49Зачем mysql_connect вручную вызывается?
Попробуйте тогда следом сделать
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
К сожалению, ничего не изменилось(

Цитата: iaroslav от 01 апреля 2021, 11:27:42Имхо, лучше вообще оное подключение к базе поубирать.
$sdd_db_host='localhost';//Имя хоста
$sdd_db_name='тут название';//Название бд
$sdd_db_user='тут пользователь';//Пользователь
$sdd_db_pass='тут пароль';//Пароль
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);//Подключение
Ибо, теоретически, форумный движком через иные переменные соединение с базой подхватывает и, как верно заметил digger®, делает это сам, так что оно не должно не на что влиять.
А на выводе вместо
$ssi_recentTopic['link']Сделать
iconv("windows-1251","UTF-8",$ssi_recentTopic['link'])То есть задать вручную перекодирование ссылок в нужную кодировку.
Ну или, если база в UTF-8, то наоборот
iconv("UTF-8","windows-1251",$ssi_recentTopic['link'])
Проверил оба варианта, но всё та же ситуация. Осталось по-прежнему.

digger®

Цитата: Dj3000 от 01 апреля 2021, 16:57:20К сожалению, ничего не изменилось(
Проверил оба варианта, но всё та же ситуация. Осталось по-прежнему.
Такой файл откройте на своем форуме и посмотрите как там с кодировкой дела
https://www.simplemachines.ru/ssi_examples.php

Dj3000

Цитата: digger® от 01 апреля 2021, 20:40:49Такой файл откройте на своем форуме и посмотрите как там с кодировкой дела
https://www.simplemachines.ru/ssi_examples.php
Там проблем с кодировкой нет.


wwwserfer

Цитата: Dj3000 от 02 апреля 2021, 00:08:40Там проблем с кодировкой нет.
А что выдает на этот запрос в MySQL?

SHOW GLOBAL VARIABLES LIKE 'char%';

Dj3000

Цитата: wwwserfer от 03 апреля 2021, 01:45:00А что выдает на этот запрос в MySQL?

SHOW GLOBAL VARIABLES LIKE 'char%';
В БД форума так:
character_set_client
latin1
character_set_connection
latin1
character_set_database
latin1
character_set_filesystem
binary
character_set_results
latin1
character_set_server
latin1
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets

wwwserfer

#289
Цитата: Dj3000 от 03 апреля 2021, 18:05:51В БД форума так:
character_set_client
latin1
character_set_connection
latin1
character_set_database
latin1
character_set_filesystem
binary
character_set_results
latin1
character_set_server
latin1
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets

Ну-тке.. latin1... наверняка какой-нить забугорный хостинг? :)

Вот это вот:
$sdd_db_host='localhost';//Имя хоста
$sdd_db_name='тут название';//Название бд
$sdd_db_user='тут пользователь';//Пользователь
$sdd_db_pass='тут пароль';//Пароль
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);//Подключение

- вообще не нужно.

Попробуйте добавить в Settings.php ну там, к примеру, в конец секции коннекта с БД (если сайт на UTF8 естесьно):
$db_character_set = 'utf8';
И в SSI.php найти:
global $db_server, $db_name, $db_user, $db_prefix, $db_persist, $db_error_send, $db_last_error;
И явно указать на UTF8...
Заменить на:
global $db_server, $db_name, $db_user, $db_prefix, $db_persist, $db_error_send, $db_last_error, $db_character_set;

Dj3000

Цитата: wwwserfer от 03 апреля 2021, 22:15:26Ну-тке.. latin1... наверняка какой-нить забугорный хостинг? :)

Вот это вот:
- вообще не нужно.

Попробуйте добавить в Settings.php ну там, к примеру, в конец секции коннекта с БД (если сайт на UTF8 естесьно):

И в SSI.php найти:

И явно указать на UTF8...
Заменить на:
Хостинг российский.

Все сделал и кодировка стала нормальной) Спасибо вам большое!  O0  :)

DeHuC_64


Yarik

Цитата: DeHuC_64 от 03 января 2022, 17:30:41а как стили прикрутить по красивее?
Прописать стили в самом коде
В файле css стилей прописать стили покрасивее