Липкий постингИли первое сообщение всегда первое ;)
Текущий рейтинг темы: Нет
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 14 февраля 2004 14:24
Вообщем хочется сделать такую фичу как липкий постинг, т.е. чтобы в теме на всех страничках первое сообщение было всегда первым. Точнее делать выбор - нужно ли его приклеивать или нет! Хак такой есть на FAF Team - но там инфа хранится в отдельном файле, что мне не очень нравится... Вообщем идея такая же как и с приклеенной темой, т.е. будет добавлена запись типа styckypost - вот в зависимоти от нее и выводить  Как я понимаю, придется добавлять везде это дополнительное поле (в post.cgi, posting.cgi, topic.cgi и ikon.lib вроде все...) добавить и считать - без проблем! Проблема возникает при выводе сообщений в топик.цги - как мне организовать вывод первого сообщения всегда первым (чтобы всяких глюков со сбитием номеров постов небыло)...
| | | |
| 4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79
Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 14 февраля 2004 15:20
Общая идея такая: сначала делаешь разбиение на страницы, получаешь номер первого и последнего сообщения, которые будут выводиться, а потом делаешь проверку: если номер первого выводимого сообщения больше нуля И сообщение приклеено, то вывести нулевое сообщение. А уже за ним будет находиться обычный цикл для вывода. P.S. Идея кстати, довольно интересная, я это в свой новый движок включу.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
| 4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79
Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 14 февраля 2004 15:20
Общая идея такая: сначала делаешь разбиение на страницы, получаешь номер первого и последнего сообщения, которые будут выводиться, а потом делаешь проверку: если номер первого выводимого сообщения больше нуля И сообщение приклеено, то вывести нулевое сообщение. А уже за ним будет находиться обычный цикл для вывода. Правда, в таких темах будет выводиться на 1 сообщение больше, чем в обычных, но с моей точки зрения, это вполне оправдано. P.S. Идея кстати, довольно интересная, я это в свой новый движок включу.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 14 февраля 2004 20:07
Хм.. а как ты себе представляешь вывод первого сообщения? Весь код что ли повторять? Это же не оптимально...
| | | |
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 14 февраля 2004 21:15
Вообщем я придумал  Там для чего то есть переменная $postcountnumber, котороая инкрементируется в цикле и нигде не используется. Я решил исправить это досадное недоразумение и заюзать именно эту переменную  Вообщем вот смотри: foreach (@threads[$startarray .. $endarray]) { push(@fthreads, $_); }<br> if ($startarray != 0 && $stickypost eq "yes") { unshift (@fthreads, $threads[0]); }<br> undef @threads;<br> <br> foreach (@fthreads) {<p> ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_);<br> <br> if ($postcountnumber == 0) { $editpostnumber=1; }<br> elsif (!$startarray) { $editpostnumber = $postcountnumber + $startarray +1; }<br> else { $editpostnumber = $postcountnumber + $startarray; } ну а далее по тексту... вроде работает.. XXXX Pro посмотри, может где ошибка есть
| | | |
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 15 февраля 2004 11:11
Сделал в отдельном файле - гемора меньше! У меня в topic.cgi он даже не открывается, а просто проверяется на его существование... Т.е. если файлик тот есть, то первое собщение выводится всегда первым, а если того файлика нет, то сообщения выводятся как обычно (а на содержимое того файлика скрипту глубоко пофигу) При приклеивании первого сообщения этот файл создается а при отклеивании - уничтожается. Вот и все... (почти как у FAF Team - только более оптимизнуто и без багов ) | | | |
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 20 октября 2004 15:16
Ну вот кому нужно - берем хак тут.
Обсуждение хака тут. | | | |
Время выполнения скрипта: 0.0232. Количество выполненных запросов: 18, время выполнения запросов 0.0111
|