Jak ustawić alias URL automatycznie dla typu zawartości BEZ korzystania z Pathauto? Który hak zastosować?

11

Pathauto może łatwo wykonać zadanie dla wszystkich typów treści, ale w moim przypadku mam tylko jeden adres URL typu zawartości, który należy dostosować i wolałbym nie instalować Pathauto i Token.

Czy ktoś może mi doradzić, jak to zrobić?

gilzero
źródło
2
Zaoszczędź sobie bólu głowy i po prostu użyj pathauto. Ten problem został już rozwiązany, dlaczego go rozwiązać? Pathauto powoduje spadek wydajności tylko podczas zapisywania węzłów (a nawet wtedy, gdy jest minimalny).
Matthew Scharley,
4
Ponieważ można wygenerować ładniejsze adresy URL niż pathauto i jeśli wszystko, czego potrzebujesz, to wygenerować adresy URL dla jednego lub dwóch typów, możesz pozbyć się dwóch modułów, wdrażając pojedynczy hak. Ponadto import zbiorczy jest dość powolny (a nawet zepsuł się w pewnym momencie osobiście, po prostu odmawia importowania czegokolwiek po 400 węzłach), podczas gdy mój lekki skrypt cron / bulk zdołał zaimportować 500 węzłów na sekundę, co jest całkiem miłe, gdy masz 100 tys. węzły do ​​generowania aliasów.
wildpeaks

Odpowiedzi:

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

Dodatkowo możesz dodać ten kod do hook_node_update ()

ya.teck
źródło
1

Patrz str. 149 Pro Drupal Development, użyj hook_insert (). Po zapisaniu nowego węzła wywoływana jest funkcja hook_insert (). Jest to miejsce do obsługi dowolnego niestandardowego przetwarzania zawartości węzła przed jego zapisaniem. Zobacz także str. 152-156 Pro Drupal Development, który mówi o wszystkich różnych funkcjach hook_node_xxxx ().

Myślę, że użycie hook_node_insert () jak sugerowano w poprzedniej odpowiedzi spowoduje przechwycenie WSZYSTKICH węzłów, które nie zaspokoją potrzeby zmiany określonego typu zawartości.

DeeZone
źródło
Zobacz, co zgłoszono w hook_insert () , która zawiera następujące zdanie: „Ten hook jest wywoływany tylko w module, który definiuje typ zawartości węzła (użyj, hook_node_insert()aby działać na wszystkich wstawieniach węzła).”
kiamlaluno