drupal 7 – Problema al crear un alias de ruta en el código

Pregunta:

Estoy creando un nodo y un alias de ruta aproximadamente de la siguiente manera:

<?php
$node = (object) array( 'type' => 'article');
node_object_prepare($node);
$node_wrapper = entity_metadata_wrapper('node', $node);
// ... some more fields get set here...
$node_wrapper->title->set( 'Foo' );
$node_wrapper->save();

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

El nodo se crea correctamente y la ruta también parece crearse correctamente. Puedo escribir foo/bar como ruta y veo la nueva página en blanco. Sin embargo, cuando edito esa página, ¿el Alias ​​de ruta está en blanco?

Tengo pathauto instalado, ¿podría tener algo que ver con eso? Nótese bien. cuando edito la página, la casilla de verificación "Generar ruta automáticamente" pathauto no está marcada (que es lo que esperaría).

Respuesta:

Al inspeccionar las diferencias en la tabla de node , noté que el nodo creado por mi código tenía un campo de language vacío. Actualizar esto a "und" corrigió el alias del nodo.

Esto tiene sentido, porque path_save () por defecto es LANGUAGE_NONE (es decir, "und" ).

Había asumido que node_prepare haría lo mismo, pero no es así.

Entonces, la solución es establecer $node->language = LANGUAGE_NONE; en el momento de la creación.

Además, esta es una forma más fácil de crear el alias …

$node->path = array('alias' => $path, 'pathauto' => FALSE);

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım