Il se peut que vous ayez omis d'implémenter également hook_token_list
. Fournir un nouveau jeton est un processus en deux étapes:
- Implémentez
hook_token_list
pour déclarer les jetons que vous allez fournir. Ce sera juste le nom des jetons, avec une courte explication, et les informations sur le type d'objets que les jetons vont appliquer (par exemple, nœud, utilisateur, taxinomie, ...)
- Mettre en œuvre pour générer le contenu des jetons. Cela sera appelé quand les jetons doivent être remplacés par le contenu qu'ils doivent représenter.
Comme vous voulez juste fournir une version alternative du jeton de titre déjà fourni par le module jeton, il est probablement préférable de copier uniquement les parties pertinentes de token_node.inc, Bx_boom les cas pertinents et adaptés à être utilisé dans un autre module:
/**
* 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;
}
}
Cela dit simplement que yourModule
fournit un jeton pour les objets de nœud, nommé yourModule-title
, ainsi qu'une courte description. Le travail principal se fait dans l'autre crochet:
/**
* 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;
}
Ce sera appelé à chaque fois que les jetons pour les objets de nœud sont nécessaires, avec le noeud en question étant passé en tant que paramètre $object
(pour un jeton d'utilisateur, le $type
serait être 'utilisateur', et $object
serait l'objet utilisateur, et ainsi de suite pour les autres types). Ce qu'il fait est de créer un tableau de valeurs, clé par le nom de jeton, avec le remplacement de ce jeton comme valeur. Le code original de token_node.inc exécute simplement le titre à travers check_plain()
, donc ce serait l'endroit pour insérer votre propre logique.
Pourriez-vous être plus précis sur ce que vous n'avez pas compris (peut-être poster votre code de test comme échantillon)? –