Drupal → Как программно создать синоним URL для ноды

14.09.2011

Пример добавления для ноды 123 синонима my-path-alias.

Способ 1:

$node = node_load(123);
$current_path = path_load(array('source' => 'node/' . $node->nid));
$node->path = array(
  'alias' => 'my-path-alias',
  'pid' => $current_path ? $current_path['pid'] : NULL,
);
node_save($node);

Способ 2:

$current_path = path_load(array('source' => 'node/123'));
$new_path = array(
  'alias' => 'my-path-alias',
  'source' => 'node/123',
  'language' => LANGUAGE_NONE,
  'pid' => $current_path ? $current_path['pid'] : NULL,
);
path_save($new_path);
Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Дмитрий
03.11.2012, 13:45

При описанных способах при каждом редактировании ноды будет создаваться новый синоним, так как не указан pid (уникальный идентификатор) синонима. Таким образом на одну ноду может быть нагенерированна целая куча одинаковых синонимов.

Что бы этого не происходило надо добавлять pid синонима

$node = node_load(123);
$source = path_load(array('source' => 'node/'.$node->nid));
$node->path = array(
  'alias' => 'my-path-alias',
  'pid' => $source['pid'],
  'language' => 'und',
);
node_save($node);

Пример создания синонимов с проверкой на уникальность можно посмотреть тут

Добавить комментарий