Wie kann ein URL-Alias ​​für einen Inhaltstyp OHNE Verwendung von Pathauto automatisch festgelegt werden? Welcher Hook soll implementiert werden?

11

Pathauto kann die Arbeit problemlos für alle Inhaltstypen erledigen, aber in meinem Fall habe ich nur eine URL für den Inhaltstyp, die angepasst werden muss, und ich würde es vorziehen, Pathauto und Token nicht zu installieren.

Kann mir jemand raten, wie es geht?

Gilzero
quelle
2
Sparen Sie sich die Kopfschmerzen und verwenden Sie einfach Pathauto. Dieses Problem wurde bereits gelöst. Warum sollte es behoben werden? Pathauto verursacht nur dann einen Leistungseinbruch, wenn Sie Knoten speichern (und selbst dann nur minimal).
Matthew Scharley
4
Da man schönere URLs als pathauto generieren kann und nur URLs für einen oder zwei Typen generiert werden müssen, können Sie zwei Module entfernen, indem Sie einen einzelnen Hook implementieren. Außerdem ist der Massenimport ziemlich langsam (und sogar irgendwann persönlich pleite, er weigert sich einfach, irgendetwas nach 400 Knoten zu importieren), während mein leichtes Cron / Bulk-Skript 500 Knoten pro Sekunde importieren konnte, was sehr schön ist, wenn Sie 100.000 haben Knoten, für die Aliase generiert werden sollen.
Wildpeaks

Antworten:

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

Zusätzlich können Sie diesen Code zu hook_node_update () hinzufügen.

ya.teck
quelle
1

Siehe S. 149 von Pro Drupal Development, verwenden Sie hook_insert (). Wenn ein neuer Knoten gespeichert wird, wird hook_insert () aufgerufen. Hier können Sie den Inhalt des Knotens benutzerdefiniert verarbeiten, bevor der Knoten gespeichert wird. Schauen Sie sich auch p an. 152-156 Pro Drupal-Entwicklung, die alle verschiedenen Funktionen von hook_node_xxxx () behandelt.

Ich denke, dass die Verwendung von hook_node_insert (), wie in der vorherigen Antwort vorgeschlagen, zu einem Hook in ALLE Knotenerstellungen führt, der Ihre Notwendigkeit, einen bestimmten Inhaltstyp zu ändern, nicht berücksichtigt.

DeeZone
quelle
Lesen Sie, was in hook_insert () berichtet wird , das den folgenden Satz enthält: "Dieser Hook wird nur für das Modul aufgerufen, das den Inhaltstyp des Knotens definiert (wird verwendet hook_node_insert(), um auf alle Knoteneinfügungen zu reagieren )."
Kiamlaluno