Comment définir automatiquement un alias d'URL pour un type de contenu SANS utiliser Pathauto? Quel crochet mettre en œuvre?

11

Pathauto peut faire le travail facilement pour tous les types de contenu, mais dans mon cas, je n'ai qu'une seule URL de type de contenu qui doit être personnalisée, et je préférerais ne pas installer Pathauto et Token.

Quelqu'un peut-il me dire comment faire?

gilzero
la source
2
Épargnez-vous les maux de tête et utilisez simplement pathauto. Ce problème a déjà été résolu, pourquoi le résoudre? Pathauto ne cause un impact sur les performances que lorsque vous enregistrez des nœuds (et même alors, seulement minime).
Matthew Scharley
4
Parce que l'on peut générer des URL plus agréables que pathauto et si tout ce dont vous avez besoin est de générer des URL pour un ou deux types, vous pouvez vous débarrasser de deux modules en implémentant un seul hook. De plus, l'importation en bloc est assez lente (et même cassée à un moment donné personnellement, elle refuse simplement d'importer quoi que ce soit après 400 nœuds), alors que mon script cron / bulk léger a réussi à importer 500 nœuds par seconde, ce qui est plutôt bien quand vous avez 100k nœuds pour lesquels générer des alias.
wildpeaks

Réponses:

12
/**
 * Implements hook_node_insert()
 */
 function mymodule_node_insert($node) {
   if ($node->type == 'mytype') {
     $node->path['alias'] = 'mytype/' . $node->nid;
   }
 }

De plus, vous pouvez ajouter ce code à hook_node_update ()

ya.teck
la source
1

Voir p. 149 de Pro Drupal Development, utilisez hook_insert (). Lorsqu'un nouveau nœud est enregistré, hook_insert () est appelé. Il s'agit de l'emplacement pour gérer tout traitement personnalisé du contenu du nœud avant l'enregistrement du nœud. Voir également p. 152-156 Pro Drupal Development qui parle de toutes les différentes fonctions hook_node_xxxx ().

Je pense que l'utilisation de hook_node_insert () comme suggéré dans la réponse précédente entraînera un accrochage dans TOUTES les créations de nœuds qui ne répondront pas à votre besoin de modifier un type de contenu spécifique.

DeeZone
la source
Voir ce qui est rapporté dans hook_insert () , qui contient la phrase suivante: "Ce hook est appelé uniquement sur le module qui définit le type de contenu du nœud (à utiliser hook_node_insert()pour agir sur toutes les insertions de nœuds)."
kiamlaluno