it-swarm.com.de

Erstellen Sie einen Pfadalias programmgesteuert, wenn ein Knoten erstellt wird

Ich habe einen benutzerdefinierten Inhaltstyp, der von einem Modul erstellt wird. Gibt es einen Hook, mit dem ich den Pfadalias meines benutzerdefinierten Inhaltstyps festlegen kann, wenn ein Knoten erstellt wird?

Eines meiner Felder ist ein alphanumerischer Code, den ich im Pfad verwenden möchte. zB: 'event/myc0d3'

Ich habe festgestellt, dass diese Funktion ( path_set_alias ) in 6 vorhanden ist, aber ich kann das Äquivalent für 7 nicht finden. Und weiß nicht, wo ich es nennen würde.

8
cbaigorri

hook_node_insert () funktionierte in meinem Fall nicht und bei einigen Suchanfragen kam ich auf diese Blog-Post . Ich habe hook_insert () auf die gleiche Weise und im Presto implementiert.

/**
 * Implements hook_insert().
 */
function mymodule_insert($node) {
    // Set the URL alias
    if (empty($node->path['alias'])) {
        $node->path['alias'] = 'slug/' . $node->nid;
    }
}
9
cbaigorri

Anstelle von hook sollte das Modul Pathauto verwendet werden, in dem Sie ein bestimmtes Muster definieren können, wie Aliase pro Inhaltstyp generiert werden (bei /admin/config/search/path/patterns). Dort können Sie Ersatzmuster verwenden oder Ihre eigenen codieren. Es ist viel sauberer Ansatz.

Andernfalls können Sie hook_node_presave($node) versuchen und den Alias ​​direkt ändern:

$node->path['pathauto'] = 0; // Required only if Pathauto is enabled.
$node->path['alias'] = "foo/bar";

oder verwenden Sie die Funktion path_save(&$path) direkt wie folgt:

$path = array('source' => "node/$node->nid", 'alias' => 'foo/bar');
path_save($path);
10
kenorb

Die Funktion heißt jetzt path_save () , ein Beispiel finden Sie unter path_taxonomy_term_insert () .

9
Berdir

Implementiere hook_node_insert () .

0
Oswald