76

Re: Зафиксировать первое сообщение.

Andy, по моему, чем писать во всех темах, что неплохо выложить "финальную инструкцию", гораздо легче было бы поднапрячься один раз и сделать все самому. Тебе ведь действительно нужны эти моды? hmm

PunBB.Ru ☭

Сайт nobody

Поделиться

77

Re: Зафиксировать первое сообщение.

nobody

Да, но не представляю как их поставлю, если всё так разбросано. Это будет просто пустой тратой времени, как уже было много раз с такими не собранными модами.

Поделиться

78

Re: Зафиксировать первое сообщение.

Andy
Такое чувство что этот мод мне нужен, а не тебе. Тогда уж можно сразу аттачить свои файлы и просить чтоб за тебя все вставили.

А вообще, если кто нибудь соберет все посты вместе тому большой респект, мне на все это времени жалко.

Сайт Slavik

Поделиться

79

Re: Зафиксировать первое сообщение.

Slavik

Да по-моему тебе не жалко, вроде как ты удовольствие получаешь от того, что у тебя есть, а остальные пусть как хотят.

Slavik пишет:

Полный вариант сейчас лень (и вообще я заболел)...

Поделиться

80 (26.11.2007 12:46 отредактировано Andy)

Re: Зафиксировать первое сообщение.

Не могу разобраться как вставить этот код в модификацию этого форума, помогите, где ошибка, вроде бы всё перепроверил..

$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...

Поделиться

81

Re: Зафиксировать первое сообщение.

Почему ты решил что ошибка именно здесь?

Сайт hcs

Поделиться

82 (27.11.2007 01:34 отредактировано Andy)

Re: Зафиксировать первое сообщение.

hcs

Ну по пунктам заливал, после этого ошибка выскочила. В общем большой помощью было бы, если кто обозначит какие именно фрагшменты добавлять. Потому как кроме прочего у меня ещё стоят разные моды и заменять просто так как написано в инструкции нельзя.

Вот такое выскакивает:

PunBB reported: Unable to fetch post info

Поделиться

83

Re: Зафиксировать первое сообщение.

Ты вроде не первый день на форуме, этого не достаточно, чтобы понять суть проблемы.  Нужно знать еще как выглядит ошибочный запрос, может там запятая лишняя, включи показ SHOW_QUERIES , воссоздай ошибку и приведи запрос

Сайт hcs

Поделиться

84 (27.11.2007 02:53 отредактировано Andy)

Re: Зафиксировать первое сообщение.

hcs

Всё разобрался в чём проблема, лишнюю переменную вставил.

Но возникает другой вопрос, никаких ошибок не выдаёт, галки в post.php и edit.php включены, но первое сообщение не закрепляется! Всё аккуратно делал.

Добавлено спустя     11 минут   12 секунд:
У меня возникло подозрение, что код из поста #55 сделан для галки в профиле и в теме. Как сделать, чтобы по умолчанию у всех отображалось, а в профиле никаких галок не было??

По-моему в этом коде что-то менять надо это из инструкции по viewforum.php (2-ой шаг):

Slavik пишет:

Ищем:
Код:
        $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 всё? Или выорочно?

Поделиться

85

Re: Зафиксировать первое сообщение.

$is_attach_first = $cur_topic['attach_first'] ? true : false;

Сайт Slavik

Поделиться

86 (28.11.2007 03:25 отредактировано Andy)

Re: Зафиксировать первое сообщение.

Slavik

Поменял, но не действует. Если я делал инструкцию только с 55 поста, с 30 надо что-то выполнять? Там есть во viewtopic.php изменения. Вообще какие константы добавляются в запросы кроме как

, t.attach_first

??? может, если ещё что-то, то тогда пропустил где-то и не добавил

Если в старых темах ставить галку, работать должно или только в созданных новых после установки мода?

Поделиться

87

Re: Зафиксировать первое сообщение.

Andy пишет:

Если я делал инструкцию только с 55 поста, с 30 надо что-то выполнять?

нет

Andy пишет:

Вообще какие константы добавляются в запросы кроме как

нет

Andy пишет:

может, если ещё что-то, то тогда пропустил где-то и не добавил

может

Andy пишет:

Если в старых темах ставить галку, работать должно или только в созданных новых после установки мода?

да

P.S. Недавно ставил отсюда на собранный форум с модами, особых проблем не возникло.

Сайт Slavik

Поделиться

88

Re: Зафиксировать первое сообщение.

Я тоже поставил отсюда - работает. Есдинственный нюансик  - при редактировании ЛЮБОГО поста есть галка "Закрепить первое сообщение". Но это так - придирки уже :-)

Сайт Zevs

Поделиться

89

Re: Зафиксировать первое сообщение.

Slavik

Ну спасибо, за ответ. Придётся всё перепроверять.

Добавлено спустя     29 минут   1 секунду:
Отлично! Всё заработало, вот это забыл изменить надо было во viewtopic.php и viewforum.php:

Slavik пишет:
$is_attach_first = $cur_topic['attach_first'] ? true : false;

а про viewtopic.php и не вспомнил, благодарю за модификацию!

Поделиться

90

Re: Зафиксировать первое сообщение.

Zevs
в твоих словах есть истина smile. Обновил 55 пост, смотри самый конец сообщения(последний тег код).

Сайт Slavik

Поделиться

91

Re: Зафиксировать первое сообщение.

Slavik

Отлично!

Поделиться

92

Re: Зафиксировать первое сообщение.

Slavik

Ооооо..... (голосом Элочки-Людоедки из 12-ти стульев) !!

Ну теперь вообще шик ! smile

Сайт Zevs

Поделиться

93

Re: Зафиксировать первое сообщение.

Обнаружился глюк: в многостраничной теме ,когда зафиксировано первое сообщение, при ссылке на "Новое сообщение" ведет в никуда. Т.е. форум считает, что страниц 6, а на самом деле их 7 (за счет добавленных первых сообщений на каждой странице). Убираю закрепление - все становится на свои места.

Сайт Zevs

Поделиться

94

Re: Зафиксировать первое сообщение.

Да, это известный глюк. К примеру, задано отображение 25 постов на странице, тема из нескольких страниц, пишем пост №50, по идее он должен быть на 2-ой страничке, а будет на 3-ей, если включено закрепление 1-го поста. Из-за этого ссылка на "Новое сообщение" ведет "не туда".
Как побороть не знаю, да и как-то не заморачивался, не сильно мешает.

PunBB.Ru ☭

Сайт nobody

Поделиться

95

Re: Зафиксировать первое сообщение.

Странно, я вроде бы при подсчете в форуме и при подсчете страниц в теме пытался учесть. Тут тоже траблы? Или только при последнем сообщении?

Сайт Slavik

Поделиться

96

Re: Зафиксировать первое сообщение.

Косяк только по ссылке на последнее сообщение, все остальное подсчитывается нормально.

PunBB.Ru ☭

Сайт nobody

Поделиться

97 (10.12.2007 07:29 отредактировано coordinator)

Re: Зафиксировать первое сообщение.

Неплохо было бы для версий 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)
У каждого свой взгляд на мир.

Сайт coordinator

Поделиться

98

Re: Зафиксировать первое сообщение.

И еще, не знаю как у Вас, а у меня если сделать все как по инструкции сделать то работает, но при выставлении в профиле чекбокса для закрепления шапки его отменить его уже нельзя.

У каждого свой взгляд на мир.

Сайт coordinator

Поделиться