Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Липкий постинг
RSS

Липкий постинг

Или первое сообщение всегда первое ;)

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: GramПечать
 
Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Вообщем хочется сделать такую фичу как липкий постинг, т.е. чтобы в теме на всех страничках первое сообщение было всегда первым. Точнее делать выбор - нужно ли его приклеивать или нет! Хак такой есть на FAF Team - но там инфа хранится в отдельном файле, что мне не очень нравится...
Вообщем идея такая же как и с приклеенной темой, т.е. будет добавлена запись типа styckypost - вот в зависимоти от нее и выводить ;)
Как я понимаю, придется добавлять везде это дополнительное поле (в post.cgi, posting.cgi, topic.cgi и ikon.lib вроде все...) добавить и считать - без проблем! Проблема возникает при выводе сообщений в топик.цги - как мне организовать вывод первого сообщения всегда первым (чтобы всяких глюков со сбитием номеров постов небыло)...
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Общая идея такая: сначала делаешь разбиение на страницы, получаешь номер первого и последнего сообщения, которые будут выводиться, а потом делаешь проверку: если номер первого выводимого сообщения больше нуля И сообщение приклеено, то вывести нулевое сообщение. А уже за ним будет находиться обычный цикл для вывода.
P.S. Идея кстати, довольно интересная, я это в свой новый движок включу.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Общая идея такая: сначала делаешь разбиение на страницы, получаешь номер первого и последнего сообщения, которые будут выводиться, а потом делаешь проверку: если номер первого выводимого сообщения больше нуля И сообщение приклеено, то вывести нулевое сообщение. А уже за ним будет находиться обычный цикл для вывода.
Правда, в таких темах будет выводиться на 1 сообщение больше, чем в обычных, но с моей точки зрения, это вполне оправдано.
P.S. Идея кстати, довольно интересная, я это в свой новый движок включу.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Хм.. а как ты себе представляешь вывод первого сообщения? Весь код что ли повторять? Это же не оптимально...
Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Вообщем я придумал ;) Там для чего то есть переменная $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
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Сделал в отдельном файле - гемора меньше! У меня в topic.cgi он даже не открывается, а просто проверяется на его существование... Т.е. если файлик тот есть, то первое собщение выводится всегда первым, а если того файлика нет, то сообщения выводятся как обычно (а на содержимое того файлика скрипту глубоко пофигу)

При приклеивании первого сообщения этот файл создается ;) а при отклеивании - уничтожается.

Вот и все... (почти как у FAF Team - только более оптимизнуто и без багов ;) )

Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Ну вот кому нужно - берем хак тут.

Обсуждение хака тут.
<<Назад  Вперед>>Модератор: GramПечать
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Липкий постинг
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0230. Количество выполненных запросов: 18, время выполнения запросов 0.0111