如何创建pathauto相同的stackoverflow.com

时间:2009-11-24 06:31:52

标签: drupal pathauto

我知道stackoverflow.com使用模块pathauto。我想在drupal中使用pathauto来创建pathauto uris。但我不知道该怎么做。

示例: domain.com/node/1 使用pathauto后 domain.com/article/1/title-node

现在我想转到 domain.com/article/1 / ??? 然后它仍显示节点1而不是找不到显示页面。

4 个答案:

答案 0 :(得分:4)

编辑 - 我有了更好的主意

我将在下面留下我的原始答案,但我认为我有更好的想法...您可以在自己的自定义模块中实现hook_init()或在settings.php中实现custom_url_rewrite_inbound()以便剥离已填充部分的页面请求,以便将网址/article/1/my-title始终更改为/article/1。从节点/ XXX到文章/ XXX的别名仍将由pathauto完成。

我原来的回答是:

我不知道是否有一个模块已经做到了,但实现你想要的很容易。您应该实现自己的hook_menu()版本,定义将由以“article”开头的URL触发的函数(例如“article / 1 / title-node”)。

对于hook_menu,由斜杠分隔的每个位都是可以传递给回调的参数,因此您需要将回调数传递给回调(以便回调将加载正确的节点)并丢弃其他所有内容。

假设您正在使用Drupal 6您的菜单项定义应如下所示:

$item['article'] = array(
  'title' => 'My URL article redirect',
  'page callback' => 'name_of_my_callback_function',
  'page arguments' => array(1), //this passess the second bit of the URL
  'type' => MENU_CALLBACK,
);

希望这有帮助!

答案 1 :(得分:2)

你不能用pathauto做到这一点,因为它只是为你的URL创建别名。因此,您必须使用与http://example.com/article/1/title完全相同的网址。

Stack Overflow的方式略有不同,因为它们只是忽略URL中的问题标题。他们可以这样做,因为URL解析器完全不同。对于Drupal,您可能想要寻找另一个模块或自己动手。 Pathauto只需点击正常的URL别名并为您自动生成它们。不多也不少。

drupal.org上的search for modules which deal with URLs会产生不少匹配。他们中的一些人可能会做你想做的事。

答案 2 :(得分:1)

我假设您要做的是拥有像http://example.com/article/ID/title这样的网址结构,其中title部分几乎被忽略,无论如何都会转到http://example.com/article/IDtitle输入的内容。 您可以做的是设置 视图 ,其路径http://example.com/article接受ID作为参数用于指定单个文章 - 最有可能是由nid指定。然后它应该忽略它之后发生的任何事情。

答案 3 :(得分:0)

您是否尝试过全局重定向,以确保您只能看到别名路径? http://drupal.org/project/globalredirect 那么子路径别名怎么样?它允许您使用别名作为子路径。 例如,假设node / 1别名是blog / johndoe / my-first-post,你可以使用blog / johndoe / my-first-post / edit编辑它 http://drupal.org/project/subpath_alias

我猜你可以使用这些模块。