Dans Drupal, comment changer les valeurs transmises à Pathauto?
Question
I ai Pathauto configuré pour générer un alias sur la base du titre d'un noeud, pour un type de contenu précis. Le problème est que je veux faire de petits changements dans ce titre avant Pathauto utilise pour générer l'alias.
Le premier commentaire docs . Dans mes tests, quand je mets en œuvre ce crochet, l'alias généré est toujours « tableau », ce qui signifie que je manque quelque chose.
Toute aide? Merci.
La solution
Il est peut-être que vous avez manqué de mettre en œuvre hook_token_list
aussi bien. La fourniture d'un nouveau jeton est un processus en deux étapes:
- Mettre en œuvre
hook_token_list
de déclarer les jetons que vous allez fournir. Ce sera juste le nom des jetons, avec une brève explication, et les informations à ce type d'objets les jetons seront applicables (par exemple le noeud, l'utilisateur, la taxonomie, ...) - Mettre en œuvre
hook_token_value
pour générer réellement le contenu des jetons. Ce sera appelée lorsque les jetons doivent être remplacés par le contenu qu'ils doivent défendre.
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 pour être utilisés 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;
}
}
Ceci indique simplement que yourModule
fournit un jeton pour les objets de nœud, nommé yourModule-title
, ainsi que d'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;
}
Elle sera appelée à 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 « utilisateur » et $object
serait l'objet utilisateur, et ainsi de suite pour d'autres types). Ce qu'il fait est la création d'un tableau de valeurs, calée par le nom symbolique, avec le remplacement de ce jeton comme la valeur. Le code d'origine de token_node.inc passe juste titre par check_plain()
, donc ce serait le lieu d'insérer votre propre logique.
Autres conseils
Dans Drupal 7, la fonctionnalité de jeton a été déplacé à noyau. Les jetons sont mis en œuvre par le hook_tokens et hook_token_info méthodes . Pour des exemples d'utilisation, suivez les liens fournis, et rechercher des liens vers des fonctions qui mettent en œuvre hook_tokens et hook_token_info ... Je trouve le statistics_tokens et statistics_token_info fonctions utiles pour comprendre comment fonctionne ce crochet.
Il est probablement aussi intéressant de noter que ce crochet doit être mis en œuvre par un module ... ma première tentative, je baissai les fonctions de test dans le template.php du thème, pour avoir du tout :-p rien ne se passe