我知道stackoverflow.com使用模块pathauto。我想在drupal中使用pathauto来创建pathauto uris。但我不知道该怎么做。
示例: domain.com/node/1 使用pathauto后 domain.com/article/1/title-node
现在我想转到 domain.com/article/1 / ??? 然后它仍显示节点1而不是找不到显示页面。
答案 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/ID
为title
输入的内容。
您可以做的是设置 视图 ,其路径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
我猜你可以使用这些模块。