如何使用Pathauto为内容类型自动设置URL别名?实施哪个挂钩?


11

Pathauto可以轻松完成所有内容类型的工作,但就我而言,我只有一个需要自定义的内容类型URL,而我宁愿不安装Pathauto和Token。

谁能告诉我该怎么做?


2
减轻您的头痛,只需使用pathauto。这个问题已经解决了,为什么要解决呢?仅当您保存节点时,Pathauto才会导致性能下降(即使如此,也很少)。
马修·沙利

4
因为可以生成比pathauto更好的url,并且如果您只需要生成一种或两种类型的url,则可以通过实现单个钩子来摆脱两个模块。另外,批量导入的速度很慢(甚至是个人中断,它只是拒绝在400个节点后导入任何东西),而我的轻量级cron / bulk脚本每秒可以导入500个节点,当您有100k时,这是非常好的为其生成别名的节点。
wildpeak

Answers:


12
/**
 * Implements hook_node_insert()
 */
 function mymodule_node_insert($node) {
   if ($node->type == 'mytype') {
     $node->path['alias'] = 'mytype/' . $node->nid;
   }
 }

此外,您可以将此代码添加到hook_node_update()


1

参见第 Pro Drupal开发的149,请使用hook_insert()。保存新节点后,将调用hook_insert()。在保存节点之前,这里是处理节点内容的任何自定义处理的地方。也请看p。152-156 Pro Drupal Development讨论了所有不同的hook_node_xxxx()函数。

我认为,如上一个答案中所建议的那样使用hook_node_insert()会导致钩住所有节点的创建,这将无法满足您更改特定内容类型的需求。


请参见hook_insert()中报告的内容,该语句包含以下句子:“此钩子仅在定义节点内容类型的模块上调用(用于hook_node_insert()对所有节点插入进行操作)。”
kiamlaluno
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.