2015-01-07 2 views
0

Мне нужна помощь, чтобы отображать запросы на размещение сообщений в форумах в новое место на форуме Drupal 7.Как перенаправить URL-запросы на сообщения vBulletin на Drupal 7 Комментарии к форуму после миграции?

Я унаследовал сайт Drupal после того, как он был перенесен из Drupal 5 с помощью vBulletin, в Drupal 7 с родным Drupal Forum + Advanced Forum. В новом сиде также используется PathAuto.

Каждый день я получаю много HTTP-запросов, используя старую схему URL-адреса D5/vBulletin, и нет никакого сопоставления, чтобы переписать цель.

Я считаю, что могу использовать Apache mod_rewrite или Drupal Global Redirect для обработки этого, если я могу сопоставить старую систему с новой.

Для запросов на "резьбу", например. example.com/forums/showthread.php?t=1 Кажется возможным сопоставить, поскольку псевдоним пути Drupal 7 к узлу для потока уже создан с использованием названия существующего узла. Поэтому я могу найти в базе данных vBulletin название старого узла, используя аргумент «t» входящего запроса, отредактировать эту строку в соответствии с параметрами PathAuto, которые используются в новой системе, и создать псевдоним URL. [Хотелось бы узнать, есть ли лучший способ.]

Но для входящих запросов для «сообщения», например. example.com/ Я не вижу, как это сделать. База данных vBulletin содержит сообщения в таблице «post», но в Drupal 7 Forum все, что было после первого сообщения, является «комментарием» и не создано для него псевдонима URL (потому что у него нет заголовка в vBulletin в большинство случаев).

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

Пожалуйста, какие-либо решения для этого?

+0

Пожалуйста, переместите решение с вашего вопроса на ответ. – unor

ответ

0

Я нашел решение.

Drupal Migrate создает и сохраняет таблицы в базе данных, сопоставляя старый идентификатор ресурса с новым ID.

Вам просто нужно быть осторожным, поскольку схема отличается между vBulletin и Drupal Forum; прежде всего в том, что сообщения Форума в D7 (кроме первого сообщения в потоке) - это не узлы, а комментарии.

Но я был в состоянии использовать Join запрос SQL, чтобы найти новый идентификатор ресурса:

mysql> SELECT m.sourceid1, m.destid1, c.cid, c.nid, c.subject FROM migrate_map_forum_posts m LEFT JOIN comment c ON c.cid = m.destid1 LIMIT 3; +-----------+---------+-------+-------+-----------------+ | sourceid1 | destid1 | cid | nid | subject | +-----------+---------+-------+-------+-----------------+ | 2 | 35837 | 35837 | 10426 | RE: Test | | 3 | 35838 | 35838 | 10426 | | | 4 | 35839 | 35839 | 10426 | I see a picture | +-----------+---------+-------+-------+-----------------+

Это решение основано только на новой базе Drupal 7 и это нормально, если миграция прошла идеально (I предположим, если бы это было прекрасно, отображение было бы сделано в то время, lol). Но таблицы карт миграции не всегда содержат все необходимые данные.

Если у вас есть доступ к старой базе данных vBulletin, вы можете копать глубже. В миграции, которую я унаследовал, некоторые из сообщений «vBulletin» не попали в таблицы миграции миграции D7. Но, выполняя больше запросов, мне удалось получить «threadid», из которого была отправлена ​​почта из базы данных vBulletin, и найти идентификатор узла для темы Форума на D7, чтобы я мог, по крайней мере, привести пользователя к правильному обсуждению.

У меня есть скрипт perl, который объединяет поиск db vBulletin и таблиц migrate_map в D7 db, если кому-то это нужно.

Я собираюсь опубликовать новый вопрос о наилучшем способе обработки такой большой карты после ее создания.