Pathauto utólag minden nodera

edgarpe képe

Van egy kész D6 site, bekapcsolt pathautoval. Menet közben néhány nodenál ki-be kapcsotuk hogy legyen-e pathautoval generált alias (a node edit oldalon a kis checkbox néha nincs bepipálva).

Most azt szeretném, hogy a nodetípus minden nodejára egységesen legyen bepipálva ez cacheckbox. Hogy tudom ezt a legkönnyebben elérni? Több 10.000 noderól van szó.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Balogh Zoltán képe

A pathauto nem tárolja le a node szerkesztési űrlapon lévő checkbox értékét, hanem amikor szerkesztenéd a tartalmat, akkor megnézi, hogy az aktuális álnév megegyezik-e avval, amit _éppen most_ állítana elő? Ha igen, akkor úgy veszi, hogy ezt eredetileg is ő csinálta, és bepipálja. Ellenkező esetben nem lesz bepipálva, és marad az álnév, ami volt. Ezért nem jó pl. utólag mintát cserélni. Remélem segít ez az info.

Tehát úgy lesz biztosan bepipálva minden node-ra, hogy álnevek törlése, majd tömeges előállítás.

4
0
edgarpe képe

Reméltem hogy van egyszerűbb megoldás is. Most jöhet a string zsonglőrködés sql-ben, és a hook_cron. Kösz a választ!

Update:

Összedobtam egy kis modult ami megcsinálja ezt, string zsonglőrködés végül nem kellett. Itt a kód, hátha valakinek szüksége lesz még rá. Ezt kell be beírni a hook_cron()-ba:

  $pointer = variable_get('alias_hotfix', 0);
  if ($pointer === -1) {
    return;
  }
  $timer = time();
  $result = db_query("SELECT nid FROM {node} WHERE type = 'product' AND nid > %d ORDER BY nid LIMIT 10000", $pointer);
  $node = NULL;
  while ((time() - $timer < 55) && $n = db_fetch_object($result)) {
    $node = node_load($n->nid);
    $node->pathauto_perform_alias = 1;
    node_save($node);
  }
  if ($node !== NULL) {
    variable_set('alias_hotfix', $node->nid);
  }
  else {
    variable_set('alias_hotfix', -1);
  }  
  return;
0
0