gpt4 book ai didi

drupal - 在 Drupal 中,如何更改传递给 Pathauto 的值?

转载 作者:行者123 更新时间:2023-12-05 00:41:40 26 4
gpt4 key购买 nike

我已将 Pathauto 配置为根据节点标题为特定内容类型生成别名。问题是我想在 Pathauto 使用它生成别名之前对这个标题进行一些小改动。

this post 中的第一条评论建议使用 hook_token_values,但我无法真正理解如何使用它,即使在阅读了 docs 之后也是如此。 .在我的测试中,当我实现这个钩子(Hook)时,生成的别名总是“数组”,这意味着我遗漏了一些东西。

有什么帮助吗?谢谢。

最佳答案

可能是您错过了实现 hook_token_list也是。提供新 token 是一个两步过程:

  • 实现hook_token_list声明您要提供的 token 。这将只是 token 的名称,以及简短的解释,以及 token 将适用的对象类型的信息(例如节点、用户、分类...)
  • 实现hook_token_value实际生成 token 的内容。当 token 被替换为它们应该代表的内容时,这将被调用。

  • 由于您只想提供 token 模块已经提供的标题 token 的替代版本,因此最好只复制 token_node.inc 中的相关部分,剥离到相关案例并调整以在另一个模块中使用:
    /**
    * Implementation of hook_token_list().
    */
    function yourModule_token_list($type = 'all') {
    if ($type == 'node' || $type == 'all') {
    $tokens['node']['yourModule-title'] = t('Node title (customized version by yourModule)');

    return $tokens;
    }
    }

    这只是说 yourModule为节点对象提供一个标记,名为 yourModule-title ,以及简短的描述。主要工作在另一个钩子(Hook)中完成:
    /**
    * Implementation of hook_token_values().
    */
    function yourModule_token_values($type, $object = NULL, $options = array()) {
    $values = array();
    switch ($type) {
    case 'node':
    $node = $object;
    // TODO: Replace the check_plain() call with your own token value creation logic!
    $values['yourModule-title'] = check_plain($node->title);
    break;
    }

    return $values;
    }

    每当需要节点对象的 token 时都会调用它,有问题的节点作为 $object 传递。参数(对于用户 token , $type 将是“用户”, $object 将是用户对象,其他类型以此类推)。它所做的是创建一个以 token 名称为键的值数组,并将该 token 的替换作为值。 token_node.inc 的原始代码只是通过 check_plain() 运行标题。 ,所以这将是插入您自己的逻辑的地方。

    关于drupal - 在 Drupal 中,如何更改传递给 Pathauto 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804781/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com