Перенос сообщений в другую тему - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Перенос сообщений в другую тему При переносе сообщений они становятся первыми

#1 Пользователь не на сайте   vitfix ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 64
  • Регистрация: 11-Сентябрь 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 22 Ноябрь 2015 - 19:03

Здравствуйте.
Подскажите в чём причина.
При переносе сообщений из одной темы в другую, они смещают уже имеющиеся сообщения и становятся первыми.
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 22 Ноябрь 2015 - 22:10

Просмотреть сообщениеvitfix сказал(а):

При переносе сообщений из одной темы в другую, они смещают уже имеющиеся сообщения и становятся первыми.

Потому что сообщения в теме сортируются по определенным критериям, по умолчанию по ид. Соответственно они будут сдвигать вниз существующие сообщения, в порядке следования ид.
0

#3 Пользователь не на сайте   vitfix ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 64
  • Регистрация: 11-Сентябрь 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 23 Ноябрь 2015 - 06:37

Просмотреть сообщениеsiv1987 22 Ноябрь 2015 - 22:10 сказал(а):

Потому что сообщения в теме сортируются по определенным критериям, по умолчанию по ид. Соответственно они будут сдвигать вниз существующие сообщения, в порядке следования ид.

Так что интересно, это происходит не всегда...
0

#4 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 23 Ноябрь 2015 - 09:40

Не всегда. Перечетайте внимательно цитируемое вами сообщение, там написано почему они сдвигаются и почему это происходит не всегда.
Если обьяснять на пальцах, то сообщения в теме имеют определенную хронологию. Условно возьмем ид - 1, 3, 6, 8. А теперь представьте что переносите сообщение из другой темы с ид 5. Согласно сортировки она будет третьей в теме - 1, 3, 5, n.
0

#5 Пользователь не на сайте   vitfix ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 64
  • Регистрация: 11-Сентябрь 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 23 Ноябрь 2015 - 12:38

А можно это как-то в ручную исправить?
0

#6 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 96
  • Регистрация: 11-Май 13
  • Репутация: 34
  • IPB version:2.3.x
 

Отправлено 23 Ноябрь 2015 - 13:28

Просмотреть сообщениеsiv1987 22 Ноябрь 2015 - 22:10 сказал(а):

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

Разве? А не по дате? Отсюда, если дата переносимого сообщения ранее уже имеющихся, то оно и буде впереди
0

#7 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 23 Ноябрь 2015 - 13:37

Можно. Но на практике много геморроя ввиду того, что сортировка происходит по первичному ключу. Чтобы его сменить нужно обновить ид сообщение на текущее значение AUTO_INCREMENT* в таблице. Потом обновить AUTO_INCREMENT + 1. После перестроить темы и форумы в АЦ. А еще есть кучу внешних связей которые нужно обновить - прикрепленные аттачи сообщения, репутация, и бог весть знает что еще ссылается на этот идентификатор.
Как видно задача не самая простая, и если для вас незнакомо такое понятие как первичный ключ (PRIMARY KEY) то его лучше не трогать.
Другой вариант сортировать сообщения по дате их создания. Тогда манипулировать сообщениями в теме можно изменив только дату сообщения, что намного проще.

*Теоретически можно обновить и на MAX(ид)+1, но максимальный ид не всегда соответствует автоинкременту таблицу, например были удалены последние 10 сообщения. В таком случае могут быть коллизии, когда одно сообщение удаленно, вместо нее появляется другое с этим ид, а где-то есть старая связь. Тогда нарушается логическая целостность.
1

#8 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 23 Ноябрь 2015 - 13:40

Просмотреть сообщениеkgb сказал(а):

Разве? А не по дате?

По умолчанию по ид. До 3.4 тип сортировки можно было настроить в АЦ. После 3.4 настройка была выпилена из АЦ, и управлять ею можно только из конфигурационного файла.
0

#9 Пользователь не на сайте   Alien2001 ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 26-Июль 12
  • Репутация: 10
  • IPB version:3.3.x
 

Отправлено 24 Ноябрь 2015 - 16:43

Просмотреть сообщениеsiv1987 23 Ноябрь 2015 - 13:40 сказал(а):

По умолчанию по ид. До 3.4 тип сортировки можно было настроить в АЦ. После 3.4 настройка была выпилена из АЦ, и управлять ею можно только из конфигурационного файла.


Уже в 3.3 этого в админке нет. Мне пришлось через конфигурацию прописывать:
INFO['post_order_column']  = 'post_date'; // Other valid values: 'pid'


Я не могу понять, как у ТС получилось, что сообщения сдвигаются. Ведь при обычном порядке вещей ID и дата напрямую связаны - ID присваиваются по порядку создания, соответственно, чем позже сообщение создано, тем больше ID.

У меня на форуме такое возможно, но только потому, что он когда-то был сконвертирован из совершенно другого движка, и конвертация с присвоением ID шла не по дате, а по темам и конференциям. Потому мне и пришлось менять сортировку.
0

#10 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 24 Ноябрь 2015 - 18:36

Просмотреть сообщениеAlien2001 сказал(а):

Я не могу понять, как у ТС получилось, что сообщения сдвигаются. Ведь при обычном порядке вещей ID и дата напрямую связаны - ID присваиваются по порядку создания, соответственно, чем позже сообщение создано, тем больше ID.

Посмотрите на пример выше, ведь ТС мог перенести сообщения с ид созданные как после этой темы так и до. Если перенести ранние сообщения, созданные до, то они непременно окажутся впереди существующих. Чтобы они оказались в конце, дата сообщения должно быть больше чем дата последнего поста в теме, соответственно и ид будет больше.


Просмотреть сообщениеAlien2001 сказал(а):

У меня на форуме такое возможно, но только потому, что он когда-то был сконвертирован из совершенно другого движка, и конвертация с присвоением ID шла не по дате, а по темам и конференциям

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

#11 Пользователь не на сайте   Alien2001 ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 26-Июль 12
  • Репутация: 10
  • IPB version:3.3.x
 

Отправлено 24 Ноябрь 2015 - 21:03

Просмотреть сообщениеsiv1987 24 Ноябрь 2015 - 18:36 сказал(а):

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


Кажется, догнал. Конечно, если перенести более ранние сообщения, то они окажутся до - а какие тут могут быть варианты - у них и дата, и ID будут меньше. А других параметров для сортировки больше нет. Я почему-то решил, что ТС более поздние сообщения имеют меньший ID и оказываются, соответственно, до.



0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна