2012-07-09 1 views
3

J'ai une catégorie de vocabulaire et quatre termes à l'intérieur. ce que je veux faire est si le contenu est marqué avec une fin en particulier dire "term1" pour avoir l'url généré comme word1/[node: title] et pour tous les autres tags juste le formatage de l'URL standard.Générer un alias d'URL basé sur le terme de taxonomie

Si je voulais le terme dans le modèle utilisé url id évidemment de remplacement, mais je veux un autre mot à utiliser si une étiquette particulière est utilisée

Répondre

0

trouvé un moyen simple en fait à tous ceux qui ont besoin d'une solution similaire utiliser le module Entité de Référence.

http://drupal.org/project/entityreference

Je viens de créer un nouveau champ pour le compte de l'utilisateur référence d'entité sélectionnez alors vous pouvez choisir une entité au sein de référence drupal. (c'est-à-dire que vous pouvez sélectionner un terme/contenu/quoi que ce soit)

5

Je ne peux pas penser à un moyen plug-and-play facile réaliser ceci. Vous devrez peut-être créer votre propre jeton pour le « modèle de chemin par défaut » dans les paramètres d'alias d'URL Pathauto:

/** 
* Implementation of hook_token_info(). 
*/ 
function MODULE_token_info() { 
    $info['tokens']['node']['node-term-path'] = array(
    'name'  => t('Node path by term'), 
    'description' => t('The path to a node based on its taxonomy terms.'), 
); 
    return $info; 
} 

/** 
* Implementation of hook_tokens(). 
*/ 
function MODULE_tokens($type, $tokens, array $data = array(), array $options = array()) { 
    $replacements = array(); 
    if ($type == 'node' && !empty($data['node'])) { 
    $node = $data['node']; 

    foreach ($tokens as $name => $original) { 
     switch ($name) { 
     case 'node-term-path': 
      $items = field_get_items('node', $node, 'TAXONOMY_FIELD_NAME'); 
      foreach ($items as $item) { 
      $tids[] = $item['tid']; 
      } 
      if (in_array(TID_OF_TERM1, $tids)) { 
      // Path for nodes with term1 
      $replacements[$original] = 'word1/'. pathauto_cleanstring($node->title); 
      } 
      else { 
      // Path for other nodes 
      $replacements[$original] = 'content/'. pathauto_cleanstring($node->title); 
      } 
      break; 
     } 
    } 
    } 
    return $replacements; 
} 
Questions connexes