Страница 9 из 14
Recent topics for JS - последние темы на любой странице
Добавлено: 16.04.2015 17:29
Anvar
С помощью этого расширения вы сможете вывести последние темы форума на любой странице сайта или форума.
Bозможность вывести темы внутри форума в виде бегущей строки, в шапке.
Bозможно вывести темы на странице сайта посредством java script, с текстом и вложениями или просто заголовки тем с ссылками.
3 способа подключения:
Recent Topics for JS.jpg
выбор необходимых форумов осуществляется из админки:
Код: Выделить всё
<script type="text/javascript" src="http://vash-site.com/forum/recent.php"></script>
выбираете форум сами:
Код: Выделить всё
<script type="text/javascript" src="http://vash-site.com/forum/recent.php?forum=id_форума"></script>
Ajax подгрузка:
Код: Выделить всё
<div id="recent_topics"></div>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: "http://vash-site.com/forum/recent.php",
type: "GET",
cache: true,
success: function(data) {
$("#recent_topics").html(data);
}
});
});
</script>
Необходим подключённый jquery на сайте.
Версия для 3.3 в сообщении:
Recent topics for JS - последние темы на любой странице
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 18.08.2019 11:28
Sheer
alex_1278, http://ford-windstar.ru/forum/recent.php отдает код ошибки 500. Смотри лог ошибок
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 18.08.2019 12:07
Nekstati
alex_1278, метод обрезки текста, который используется в расширении, плохо работает с последними версиями phpBB, т.к. изменился парсер ББ-кодов. Можно попробовать увеличить в админке кол-во символов в тексте до максимума (1999). Это не всегда будет работать, ошибка может снова возникать на больших постах. Можно отключить обрезку, увеличив кол-во символов напр. до 100000 напрямую через базу данных (таблица
phpbb_config, поле
recent_max_topic_length). Можно в файле
ext\bb3mobi\recent_topics\controller\recent.php раскомментировать строку
//strip_bbcode($message);
- тогда сообщения будут обрезаться без ошибок, но в них будет голый текст без ББ-кодов.
(Для разработчиков.) А вообще корректную обрезку текста можно сделать только через DOM, например с помощью этого:
https://github.com/judev/php-htmltruncator.
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 18.08.2019 13:31
alex_1278
при авторизации выдавало не 500,а "Cannot load XML: Premature end of data in tag t line 1"
Nekstati писал(а): ↑18.08.2019 12:07
Можно в файле ext\bb3mobi\recent_topics\controller\recent.php раскомментировать строку //strip_bbcode($message); - тогда сообщения будут обрезаться без ошибок, но в них будет голый текст без ББ-кодов.
Спасибо, раскомментил, заработало!
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 18.08.2019 14:15
Nekstati
alex_1278, 500 в HTTP-заголовках, "Cannot load XML..." в видимом ответе.
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 20.03.2020 13:48
dotez
для 3.2 то есть такое?
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 20.03.2020 14:54
Nekstati
dotez, это расширение работает на 3.2 с поправкой, описанной в моём посте чуть выше.
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 20.03.2020 15:04
Old Human
На 3.3 даже работает (после правок services.yml и routing.yml)
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 13.07.2020 14:11
Ritor1
Old Human писал(а): ↑20.03.2020 15:04
На 3.3 даже работает (после правок services.yml и routing.yml)
Добрый день! А можно поподробнее? Столкнулся с такой же проблеммой для версии 3.3
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 14.07.2020 6:41
Ritor1
Сам нашел ответы. Оказывается, надо:
1) в ext/bb3mobi/recent_topics/config/routing.yml заменить pattern на path;
2) в ext/bb3mobi/recent_topics/config/services.yml обернуть некоторые поля в '...', вот так:
Код: Выделить всё
services:
bb3mobi.recent_topics.listener:
class: bb3mobi\recent_topics\event\listener
arguments:
- '@config'
- '@template'
- '@controller.helper'
tags:
- { name: event.listener }
bb3mobi.recent_topics.controller:
class: bb3mobi\recent_topics\controller\recent
arguments:
- '@auth'
- '@config'
- '@request'
- '@template'
- '@dbal.conn'
- '%core.root_path%'
- '%core.php_ext%'
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 14.07.2020 9:34
Ritor1
Добрый день!
Столкнулся с новой проблемой. При вставке скрипта на странице сайта, выдает следующую ошибку:
Код: Выделить всё
"Cross-Origin Read Blocking (CORB) blocked cross-origin response https://demo.ru/app.php/recent.php with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.
"
Подскажите как это лечится. Спасибо
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 14.07.2020 13:54
Ritor1
Нашел решение:
в .htaccess дополнил
Код: Выделить всё
<FilesMatch "\.(php)$">
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
</IfModule>
</FilesMatch>
Это заработало. Но оказалось что ajax дергает всю страницу, а мне надо только фрейм с топиками. Через js не пойдет, т.к. там списком(ul.li), и нет полей Темы, Сообщения, Последнее сообщение. Кто знает как это делается?
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 14.07.2020 14:22
rxu
Ritor1 писал(а): ↑14.07.2020 13:54
а мне надо только фрейм с топиками. Через js не пойдет, т.к. там списком
А разве не в шаблоне стиля в расширении прописано, что и как выводится?
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 15.07.2020 7:20
Ritor1
rxu писал(а): ↑14.07.2020 14:22
А разве не в шаблоне стиля в расширении прописано, что и как выводится?
Действительно вывод можно настроить в файле ext/bb3mobi/recent_topics/styles/all/template/recent_body.html. Вот бы теперь знать какие переменные хранят количество ответом, просмотров и данные последнего сообщения. Помогите кто знает. Спасибо
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 15.07.2020 8:48
rxu
Ritor1, все стандартно. Открываете файл
controller/recent.php
и ищете там присвоение переменных шаблона.
Код: Выделить всё
$this->template->assign_block_vars('topicrow', array(
'U_TOPIC' => $viewtopic_url . '?t=' . $row['topic_id'],
'U_LAST_POST' => $viewtopic_url . '?p=' . $row['topic_last_post_id'] . '#' . $row['topic_last_post_id'],
'TOPIC_TITLE' => $topic_title,
'TOPIC_REPLIES' => (isset($replies)) ? $replies : '',
));
Соответственно, эти переменные в шаблоне и будут содержать вывод, например,
{topicrow.TOPIC_REPLIES}
и другие. Имена переменных говорят сами за себя.
Re: Recent topics for JS - последние темы на любой странице
Добавлено: 15.07.2020 12:31
Ritor1
rxu, большое спасибо. Разобрался как получить количество ответов, а вот количество просмотров и данные последнего сообщения не нашел.
Отправлено спустя 2 часа 12 минут 51 секунду:
Нашел:
Код: Выделить всё
'U_LAST_POST_AUTHOR' => get_username_string('profile', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
'LAST_POST_SUBJECT' => $last_post_subject,
'LAST_POST_TIME_RFC3339' => gmdate(DATE_RFC3339, $row['topic_last_post_time']),
'TOPIC_TITLE' => $topic_title,
'LAST_POST_AUTHOR' => $row['topic_last_poster_name'],
'VIEWS' => $row['topic_views'],
Теперь бы понять как формат даты поменять в удобочитаемый. LAST_POST_TIME_RFC3339 выдает 2020-07-15T06:42:17+00:00.
А
'LAST_POST_TIME' => $user->format_date($row['topic_last_post_time']),
не получается, т.к. не знаю как с user'ом работать. Помогите кто знает.