如何从Drupal数据库获取post slug

时间:2012-11-26 16:41:15

标签: mysql wordpress drupal

我正在尝试将Drupal帖子导出到Wordpress(这本身就很麻烦)。我无法弄清楚如何维护博客帖子的URL。其中一些是定制的:

在Drupal中标题为“土壤的故事”的博客是blog/2012/03/03/soil-story。名为Welcome John Doe的名字只是/john

是否有Drupal功能来制作这些网址?它在哪里存储自定义博客文章?

4 个答案:

答案 0 :(得分:3)

您可以使用url方法获取网址别名。

$url = url('node/' . $nid);

答案 1 :(得分:2)

您应该可以使用drupal_lookup_path

获取节点的别名
// alias: return an alias for a given Drupal system path (if one exists).
$alias = drupal_lookup_path('alias', $node->nid);

Drupal手册:drupal_lookup_path或反过来,从别名查找节点/内部路径:drupal_get_normal_path

似乎Rawkode发布的url function函数有相同的功能,所以我想这取决于您的个人偏好。

另见:http://daipratt.co.uk/how-to-get-the-path-of-a-node-from-the-node-id-in-drupal/

答案 2 :(得分:2)

我发现上面的内容非常有用,因为我希望在我查看时从db获取所需内容,而不是使用函数。它给了我一个很好的起点但运行它因为它坐着什么都没有,只是错误,因为那些不是正确的列名。请记住这些更新的内容,如果您没有处理数据库副本,将会破坏所有内容。此代码将修复它:

   UPDATE `url_alias` 
   SET source=SUBSTRING_INDEX(`source`, '/', -1), 
       alias=SUBSTRING_INDEX(`alias`, '/', -1) 
   WHERE 1

因为我做的事情不是很大我刚刚添加了两列nid和slug然后运行了这个查询

   UPDATE `url_alias` 
   SET nid=SUBSTRING_INDEX(`source`, '/', -1), 
       slug=SUBSTRING_INDEX(`alias`, '/', -1) 
   WHERE 1

答案 3 :(得分:-2)

我在Drupal数据库中找到了url_alias表,并运行了这个SQL语句:

   UPDATE `url_alias` 
   SET src=SUBSTRING_INDEX(`src`, '/', -1), 
       dst=SUBSTRING_INDEX(`dst`, '/', -1) 
   WHERE 1

src现在是nid而dst现在是slug。我可以重命名它们,然后INSERT INTO wp_postspost_name