0

我想重写以下网址:

  • 节点/添加
  • 节点/编辑等

类似于 - 内容/添加 - 内容/编辑

我还使用预填充模型,并且希望能够重写此 URL:

  • node/add/single-gallery-image?edit[field_gallery_node_reference][0][nid]=48

对于这样的事情:

  • 内容/添加/图像?n=48

这可能吗?如果是这样,我是否需要一些 Drupal 模块,或者我是否必须使用 htaccess 文件?

4

4 回答 4

5

使用 pathauto 模块,您可以为您的 url 创建别名。您可以设置很多规则,并且应该能够走得很远。我不确定它与预填充模型的集成程度如何。但其余的应该很容易。

于 2009-08-18T12:44:52.400 回答
1

这里有几个选项。

1)您可以使用 pathauto 模块重命名路径。然后这些路径在服务器级别变得完全可用,但旧的 node/add 和 node/%/edit 路径仍然存在。

2)您可以制作一个通过 hook_menu 实现路径的自定义模块,从 node.module 的 hook_menu 实现中复制适当的代码。这也会在站点上留下旧的 node/add 和 node/%/edit 路径,但是您可以使用 hook_menu_alter 从菜单数组中取消设置适当的路径。

3)您可以按照 Olav 的建议 使用custom_url_rewrite_inboundcustom_url_rewrite_outbound函数。

老实说,第一个选项通常更好,因为它会更快并且不会打开意外的错误。方法 2 肯定会改变你想要的,但也会涉及更改 Drupal 所依赖的一些相当基本的路径,这可能意味着当你发现节点模块的角落中没有涵盖的时候,这将意味着相当多的调试会话你的改变。方法 3 我不太熟悉,但看起来它允许您像 1 中那样重写路径,但使它们更真实,但可能存在性能问题,而且还需要进行大量调试。

于 2009-08-25T02:03:53.710 回答
0

您可以使用hook_menu创建一个实现这些回调的自定义模块,但这只会为这些操作创建额外的 url,而不是删除旧的。

于 2009-08-18T10:02:10.373 回答
0

查看函数custom_url_rewrite_inboundcustom_url_rewrite_outbound。这些不是模块,而是放置在 settings.php 中的函数,它们在低级别与 drupal 的 url 映射接口。

于 2009-08-18T21:59:42.990 回答