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.

Était-ce utile?

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:

  1. 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, ...)
  2. 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top