在哪里放置预保存功能?

Where to place presave functions?

我需要在从 ADMIN 保存之前操作内容类型(人物)。

我需要在标题中保存名字+姓氏

我知道应该使用预保存功能(hook_node_presavehook_entity_presave)。

我的问题是这些函数应该写在哪里?

我在主题/自定义/MYPROJECT/MYPROJECT.theme中编写它们,但它们没有运行

为管理员编写的预设函数在哪里,而不是普通函数?

您可以将钩子放在模块的 .module 文件中。您应该为此创建一个自定义模块,示例如下:

modules/custom 中创建一个新文件夹 {PROJECT_NAME}_general 现在称为 MODULE_NAME) 并添加 2 个文件:{MODULE_NAME}.info.yml{MODULE_NAME}.module

在 .info.yml 文件中,您只需放置一些关于自定义模块的信息,例如:

name: Name of your module
type: module
description: Description of your custom module
core: 8.x
package: Custom

现在您可以使用 drush (drush en MODULE_NAME -y) 或使用管理菜单中的 "extend" 启用您的模块。

最后将你的钩子添加到 .module 文件并编写所需的代码。

您还可以找到所有这些信息here and here

希望对您有所帮助!