Re: Зафиксировать первое сообщение.
Andy, по моему, чем писать во всех темах, что неплохо выложить "финальную инструкцию", гораздо легче было бы поднапрячься один раз и сделать все самому. Тебе ведь действительно нужны эти моды? ![]()
|
Фонд моральной поддержки |
|
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
PunBB по-русски → Модули и плагины → Зафиксировать первое сообщение.
Andy, по моему, чем писать во всех темах, что неплохо выложить "финальную инструкцию", гораздо легче было бы поднапрячься один раз и сделать все самому. Тебе ведь действительно нужны эти моды? ![]()
nobody
Да, но не представляю как их поставлю, если всё так разбросано. Это будет просто пустой тратой времени, как уже было много раз с такими не собранными модами.
Andy
Такое чувство что этот мод мне нужен, а не тебе. Тогда уж можно сразу аттачить свои файлы и просить чтоб за тебя все вставили.
А вообще, если кто нибудь соберет все посты вместе тому большой респект, мне на все это времени жалко.
Slavik
Да по-моему тебе не жалко, вроде как ты удовольствие получаешь от того, что у тебя есть, а остальные пусть как хотят.
Полный вариант сейчас лень (и вообще я заболел)...
Не могу разобраться как вставить этот код в модификацию этого форума, помогите, где ошибка, вроде бы всё перепроверил..
$first_post = $db->query('SELECT MIN(id) FROM '.$db->prefix.'posts WHERE topic_id='.$id) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
$first_post_id = $db->result($first_post);
// Retrieve the posts (and their respective poster/online status)
if ($pun_user['attach_first']) $result = $db->query('(SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.icq, pg.level as punish_level, u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus, u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, spam.id AS spam_id FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.idle=0) WHERE p.id='.$first_post_id.' ORDER BY p.id) UNION (SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.idle=0) LEFT JOIN '.$db->prefix.'punish_group AS pg ON pg.group_id=g.g_id LEFT JOIN '.$db->prefix.'spam_repository AS spam ON spam.post_id=p.id WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.($start_from+1).','.$pun_user['disp_posts'].')', false) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...
else $result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], false) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...hcs
Ну по пунктам заливал, после этого ошибка выскочила. В общем большой помощью было бы, если кто обозначит какие именно фрагшменты добавлять. Потому как кроме прочего у меня ещё стоят разные моды и заменять просто так как написано в инструкции нельзя.
Вот такое выскакивает:
PunBB reported: Unable to fetch post info
Ты вроде не первый день на форуме, этого не достаточно, чтобы понять суть проблемы. Нужно знать еще как выглядит ошибочный запрос, может там запятая лишняя, включи показ SHOW_QUERIES , воссоздай ошибку и приведи запрос
hcs
Всё разобрался в чём проблема, лишнюю переменную вставил.
Но возникает другой вопрос, никаких ошибок не выдаёт, галки в post.php и edit.php включены, но первое сообщение не закрепляется! Всё аккуратно делал.
Добавлено спустя 11 минут 12 секунд:
У меня возникло подозрение, что код из поста #55 сделан для галки в профиле и в теме. Как сделать, чтобы по умолчанию у всех отображалось, а в профиле никаких галок не было??
По-моему в этом коде что-то менять надо это из инструкции по viewforum.php (2-ой шаг):
Ищем:
Код:
$num_pages_topic = ceil(($cur_topic['num_replies'] + 1) / $pun_user['disp_posts']);Добавляем после:
Код:
$is_attach_first = ($pun_user['attach_first'] && $cur_topic['attach_first']) ? true : false;
if ($is_attach_first && $num_pages_topic > 1)
$num_pages_topic = ceil(($num_pages_topic + $cur_topic['num_replies']) / $pun_user['disp_posts']);$is_attach_first каждый может определить по своему желанию, в данном случае первое сообщение прикрепляется только при наличии 2 галочек: в профиле и в теме.
Как-то непонятно выходит к инструкции в посте #55 надо делать ещё и с поста #30 всё? Или выорочно?
$is_attach_first = $cur_topic['attach_first'] ? true : false;Slavik
Поменял, но не действует. Если я делал инструкцию только с 55 поста, с 30 надо что-то выполнять? Там есть во viewtopic.php изменения. Вообще какие константы добавляются в запросы кроме как
, t.attach_first??? может, если ещё что-то, то тогда пропустил где-то и не добавил
Если в старых темах ставить галку, работать должно или только в созданных новых после установки мода?
Если я делал инструкцию только с 55 поста, с 30 надо что-то выполнять?
нет
Вообще какие константы добавляются в запросы кроме как
нет
может, если ещё что-то, то тогда пропустил где-то и не добавил
может
Если в старых темах ставить галку, работать должно или только в созданных новых после установки мода?
да
P.S. Недавно ставил отсюда на собранный форум с модами, особых проблем не возникло.
Я тоже поставил отсюда - работает. Есдинственный нюансик - при редактировании ЛЮБОГО поста есть галка "Закрепить первое сообщение". Но это так - придирки уже :-)
Slavik
Ну спасибо, за ответ. Придётся всё перепроверять.
Добавлено спустя 29 минут 1 секунду:
Отлично! Всё заработало, вот это забыл изменить надо было во viewtopic.php и viewforum.php:
$is_attach_first = $cur_topic['attach_first'] ? true : false;
а про viewtopic.php и не вспомнил, благодарю за модификацию!
Zevs
в твоих словах есть истина
. Обновил 55 пост, смотри самый конец сообщения(последний тег код).
Slavik
Ооооо..... (голосом Элочки-Людоедки из 12-ти стульев) !!
Ну теперь вообще шик ! ![]()
Обнаружился глюк: в многостраничной теме ,когда зафиксировано первое сообщение, при ссылке на "Новое сообщение" ведет в никуда. Т.е. форум считает, что страниц 6, а на самом деле их 7 (за счет добавленных первых сообщений на каждой странице). Убираю закрепление - все становится на свои места.
Да, это известный глюк. К примеру, задано отображение 25 постов на странице, тема из нескольких страниц, пишем пост №50, по идее он должен быть на 2-ой страничке, а будет на 3-ей, если включено закрепление 1-го поста. Из-за этого ссылка на "Новое сообщение" ведет "не туда".
Как побороть не знаю, да и как-то не заморачивался, не сильно мешает.
Странно, я вроде бы при подсчете в форуме и при подсчете страниц в теме пытался учесть. Тут тоже траблы? Или только при последнем сообщении?
Косяк только по ссылке на последнее сообщение, все остальное подсчитывается нормально.
Неплохо было бы для версий 1.2.15 и выше сделать upgrade мода который приведен в 30-м посте.
Попробовал так
// Retrieve the posts (and their respective poster/online status)
if ($pun_user['attach_first']) $result = $db->query('(SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus, u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.id='.$first_post_id.' ORDER BY p.id) UNION (SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus, u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.($start_from+1).','.$pun_user['disp_posts'].')', true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...
else $result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus, u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], false) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); //Attachment Mod, changed the true to false...Выдает такую ошибку:
File: /home2/users/r/radio-vtm/docs/forum/viewtopic.php
Line: 193
PunBB reported: Unable to fetch post info
Database reported: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY p.id) UNION (SELECT u.email, u.title, u.url, u.location, u.use_avatar, ' at line 1 (Errno: 1064)И еще, не знаю как у Вас, а у меня если сделать все как по инструкции сделать то работает, но при выставлении в профиле чекбокса для закрепления шапки его отменить его уже нельзя.
PunBB по-русски → Модули и плагины → Зафиксировать первое сообщение.
Сгенерировано за 0.604 секунды (13% PHP — 87% БД) 11 запросов к базе данных
Технологии с открытым исходным кодом, несомненно, обладают серьезным преимуществом над аналогичными продуктами, распространяемыми по ограниченным лицензиям. И совершенно неважно, что это. Возможно это:
Впрочем, неважно. Что бы это ни было, важно всячески поощрять и поддерживать Open Source в любом виде. Тем более, что вы знаете, PunBB распространяется по лицензии GPL/GNU. И спасибо за внимание.