我Pathauto配置产生一个别基于标题的一个节点,对于一个特定的内容类型。问题是我想做小的变化,在这个标题之前Pathauto使用它产生的别名。

第一个评论 这个职位 建议使用hook_token_values,但是我真的不能了解如何使用它,即使后读取 文档.在我的测试,当我实现这种挂钩,别名产生的总是"阵列",这意味着我缺少的东西。

任何帮助吗?谢谢。

有帮助吗?

解决方案

这可能是你错过了实现 hook_token_list 为好。提供一个新标记是一个两步骤进程:

  1. 实施 hook_token_list 声明的标记,你要提供。这将仅仅是名称的标记,随着一个简短的解释,并且将该信息提供给什么类型的对象的标记将适用(例如节点、用户、分类,...)
  2. 实施 hook_token_value 实际产生的内容标记。这将被称为当的标记,以替换所的内容,他们应该立场。

因为你只是想提供一个替代版本的标题令牌已经提供的令牌模块,这可能是最好的,只是复制有关的部分从token_node.公司剥离下来的有关案件和调整应用于另一个模块:

/**
 * 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, ,随着一个简短的说明。主要工作完成在其他钩:

/**
 * 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;
}

这将被称为当代币的节点对象是需要的,与节点问题正在通过为 $object 参数(一个用户标记, $type 将"用户",并且 $object 将对用户的对象,所以在对于其他类型)。它所做的是创造一系列的价值观,为键的令牌名称,用于替代标记的价值。原始代码从token_node.公司只是运行的通过标题 check_plain(), ,因此这将是地方插入您自己的逻辑。

其他提示

在推7,令牌功能已移到核心。标记是实现的 hook_tokenshook_token_info 方法。为使用的实例,按照所提供的链接,链接的功能,实现hook_tokens和hook_token_info...我找到了 statistics_tokensstatistics_token_info 功能有助于理解这怎么挂钩的工作。

它可能还值得注意的是,这种挂钩,需要实现通过一个模块...我的第一次尝试,我放弃了我的测试职能进入主题template.php,只要没有什么会发生在所有。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top