Смена типа сообщения в колонке "Последнее сообщение"
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

Re: Смена типа сообщения в колонке "Последнее сообщение"
Пытаюсь вернуться и разобраться в теме.
Выводом главной страницы занимается forumlist_body.html? И туда надо как-то отправить данные вроде $row['topic_title']. Ведь html это просто шаблон? Значит надо знать соответствующий php?
А какой именно файл занимается заполнением переменных для forumlist_body.html?
Выводом главной страницы занимается forumlist_body.html? И туда надо как-то отправить данные вроде $row['topic_title']. Ведь html это просто шаблон? Значит надо знать соответствующий php?
А какой именно файл занимается заполнением переменных для forumlist_body.html?
Re: Смена типа сообщения в колонке "Последнее сообщение"
я так понял, что надо копаться в SQL запросах файла functions_display.php, но они совсем не похожи на ссылки выше
-
- phpBB 1.4.2
- Сообщения: 52
- Стаж: 9 лет
- Благодарил (а): 8 раз
Re: Смена типа сообщения в колонке "Последнее сообщение"
там опция появилась в настройках
--
народ, а если я просто добавлю еще один SQL запрос в цикле формирования в файле functions_display.php перед заданием переменной темы последнего сообщения на получение 1-ого топика с сортировкой по дате. как бы и получится последняя тема. это сильно перегрузит сервер??
--
народ, а если я просто добавлю еще один SQL запрос в цикле формирования в файле functions_display.php перед заданием переменной темы последнего сообщения на получение 1-ого топика с сортировкой по дате. как бы и получится последняя тема. это сильно перегрузит сервер??
-
- Поддержка
- Сообщения: 12752
- Стаж: 13 лет 8 месяцев
- Благодарил (а): 159 раз
- Поблагодарили: 2276 раз
Re: Смена типа сообщения в колонке "Последнее сообщение"
Сильно. Запросы в цикле никто не выполняет
Лучше модифицировать тот запрос, который перед циклом
Лучше модифицировать тот запрос, который перед циклом
Re: Смена типа сообщения в колонке "Последнее сообщение"
да я б и сделал, если б знал как. нужна строчка текста и никто не скажет какая 
Отправлено спустя 6 минут 54 секунды:
я вот сейчас взял кусок кода из расширения по выводу последних тем форума и прописал его перед назначением $last_post_subject, но блин! как сделать что б он брал текущий форум?

Отправлено спустя 6 минут 54 секунды:
я вот сейчас взял кусок кода из расширения по выводу последних тем форума и прописал его перед назначением $last_post_subject, но блин! как сделать что б он брал текущий форум?
Код: Выделить всё
if ($row['forum_password_last_post'] === '' && $auth->acl_get('f_read', $row['forum_id_last_post']))
{
$sql2 = 'SELECT t.*, p.post_id
FROM ' . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p, ' . FORUMS_TABLE . " AS f
WHERE t.forum_id = f.forum_id
AND p.post_id = t.topic_first_post_id
ORDER BY t.topic_last_post_id DESC";
$result2 = $db->sql_query_limit($sql2, 1);
$recent_topics2 = $db->sql_fetchrowset($result2);
$topic_title2 = $recent_topics2[0]['topic_title'];
$last_post_subject = $topic_title2.'*'.censor_text($row['forum_last_post_subject']);
-
- Поддержка
- Сообщения: 12752
- Стаж: 13 лет 8 месяцев
- Благодарил (а): 159 раз
- Поблагодарили: 2276 раз
Re: Смена типа сообщения в колонке "Последнее сообщение"
Код: Выделить всё
/**
* Event to modify the SQL query before the forum data is queried
*
* @event core.display_forums_modify_sql
* @var array sql_ary The SQL array to get the data of the forums
* @since 3.1.0-a1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_sql', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql);
$forum_tracking_info = $valid_categories = array();
$branch_root_id = $root_data['forum_id'];
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
while ($row = $db->sql_fetchrow($result))
{
core.display_forums_modify_sql
, в параметрах есть массив с запросом. В этот массив можно добавить что угодноRe: Смена типа сообщения в колонке "Последнее сообщение"
Вот пока так сделал, не знаю уж правильно ли
Отправлено спустя 13 минут 39 секунд:
эх. все бы хорошо, но не показывает форумы второго уровня
Код: Выделить всё
$sql2 = 'SELECT *
FROM ' . TOPICS_TABLE . ' AS t ' . "
WHERE t.forum_id = {$row['forum_id']}
ORDER BY t.topic_last_post_id DESC";
$result2 = $db->sql_query_limit($sql2, 1);
$recent_topics2 = $db->sql_fetchrowset($result2);
$topic_title2 = $recent_topics2[0]['topic_title'];
if ($topic_title2 <> $row['forum_last_post_subject'])
{
$last_post_subject =($row['forum_last_post_subject'] ? censor_text($row['forum_last_post_subject']).' - ' : '').$topic_title2;
}
else
{
$last_post_subject =$row['forum_last_post_subject'];
}
$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']);
эх. все бы хорошо, но не показывает форумы второго уровня

Re: Смена типа сообщения в колонке "Последнее сообщение"
в файле functions_posting.php вроде бы нашел похожую функцию. На ее основе сделал такой код, определяющий по номеру поста название темы.
Отправлено спустя 1 минуту 2 секунды:
Для себя сделал расширенный вывод названия сообщения вместе с названием темы, а не на выбор.
Код: Выделить всё
if ($row['forum_password_last_post'] === '' && $auth->acl_get('f_read', $row['forum_id_last_post']))
{
$sql2 = 'SELECT p.post_id, p.post_subject, t.topic_title
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t
WHERE p.post_id = {$row['forum_last_post_id']}
AND p.topic_id = t.topic_id";
$result2 = $db->sql_query($sql2);
while ($row2 = $db->sql_fetchrow($result2))
{
$last_post_subject = ($row2['post_subject'] AND ($row2['post_subject'] <> $row2['topic_title'])) ? ($row2['post_subject'] .' - '. $row2['topic_title']) : $row2['topic_title'];
}
$db->sql_freeresult($result2);
$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']);
Для себя сделал расширенный вывод названия сообщения вместе с названием темы, а не на выбор.