我已将 Pathauto 配置为根据节点标题为特定内容类型生成别名。问题是我想在 Pathauto 使用它生成别名之前对此标题进行一些小的更改。
第一条评论在这个帖子建议使用 hook_token_values,但我无法真正理解如何使用它,即使在阅读了docs。在我的测试中,当我实现这个钩子时,生成的别名始终是“array”,这意味着我丢失了一些东西。
有什么帮助吗?谢谢。
可能是你错过了实施hook_token_list
以及。提供新令牌分为两个步骤:
- 实施
hook_token_list
声明您要提供的代币。这只是令牌的名称,以及简短的解释,以及令牌将应用的对象类型的信息(例如节点、用户、分类法……)
- 实施
hook_token_value
实际生成令牌的内容。当令牌被替换为它们应代表的内容时,将调用此函数。
由于您只想提供令牌模块已提供的标题令牌的替代版本,因此最好从 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
,以及简短的描述。主要工作在另一个钩子中完成:
/**
* 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.inc 的原始代码只是运行标题check_plain()
,所以这将是插入您自己的逻辑的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)