我需要帮助将vBulletin帖子的请求映射到Drupal 7论坛上的新位置。
我从Drupal 5使用vBulletin迁移到Drupal 7并使用本机Drupal Forum + Advanced Forum迁移后继承了Drupal站点。新的坐位也使用PathAuto。
每天我都会使用旧的D5 / vBulletin URL方案获得许多http请求,并且没有适当的映射来重写目标。
我相信如果可以将旧系统映射到新系统,我可以使用Apache mod_rewrite或Drupal Global Redirect来处理这个问题。
对于"线程"的请求,例如example.com/forums/showthread.php?t=1
似乎可以映射,因为已经使用现有节点的标题创建了线程节点的Drupal 7路径别名。所以我可以使用传入的查询在vBulletin数据库中查找旧的节点标题''参数,根据新系统上使用的PathAuto设置编辑该字符串,并创建URL别名。 [很想知道是否有更好的方法。]
但对于" post"的传入请求,例如example.com/
我无法看到如何做到这一点。 vBulletin数据库的帖子位于" post"表,但在Drupal 7论坛上,在最初的帖子之后的任何内容都是"评论"并且没有为其创建URL别名(因为在大多数情况下它在vBulletin中没有标题)。
我想我可以找到该帖子所属的帖子,并将用户重定向到该主题的顶部,作为一种解决方法,但我想要一张准确的地图。
请为此解决任何问题?
答案 0 :(得分:0)
我找到了解决方案。
Drupal Migrate在数据库中创建并保存表,将旧资源ID映射到新ID。
你必须要小心,因为vBulletin和Drupal论坛的架构不同;主要是在D7中的论坛帖子(除了帖子中的第一篇帖子)不是节点,而是评论。
但是我能够使用Join SQL查询来查找新的资源ID:
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数据库,如果迁移完美,那就没关系(我想如果它完美,那么映射就会在那时完成,大声笑)。但是迁移地图表并不总是包含您需要的所有数据。
如果您可以访问旧的vBulletin数据库,则可以深入挖掘。在我继承的迁移中,一些vBulletin'帖子'没有进入D7迁移地图表。但是通过做更多的查询,我得到了' threadid'该帖子属于vBulletin数据库,并在D7上找到论坛主题的节点ID,因此我至少可以让用户进行正确的讨论。
我有一个perl脚本,它结合了搜索vBulletin db和D7 db中的migrate_map表,如果有人想要的话。
我将发布一个关于在创建这样一个大地图后处理这种大地图的最佳方法的新问题。