path_nodeapi

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

modules/path/path.module, строка 133

Версии
5 – 6
path_nodeapi(&$node, $op, $arg)

Реализация hook_nodeapi().

Позволяет указывать синонимы URL'ов во время редактирования ноды, а не через интерфейс администратора.

Код

<?php
function path_nodeapi(&$node, $op, $arg) {
  // Permissions are required for everything except node loading.
  if (user_access('create url aliases') || user_access('administer url aliases') || ($op == 'load')) {
    $language = isset($node->language) ? $node->language : '';
    switch ($op) {
      case 'validate':
        if (isset($node->path)) {
          $node->path = trim($node->path);
          if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s' AND language = '%s'", $node->path, "node/$node->nid", $language))) {
            form_set_error('path', t('The path is already in use.'));
          }
        }
        break;

      case 'load':
        $path = 'node/'. $node->nid;
        $alias = drupal_get_path_alias($path, $language);
        if ($path != $alias) {
          $node->path = $alias;
        }
        break;

      case 'insert':
        // Don't try to insert if path is NULL. We may have already set
        // the alias ahead of time.
        if (isset($node->path)) {
          path_set_alias('node/'. $node->nid, $node->path, NULL, $language);
        }
        break;

      case 'update':
        path_set_alias('node/'. $node->nid, isset($node->path) ? $node->path : NULL, isset($node->pid) ? $node->pid : NULL, $language);
        break;

      case 'delete':
        $path = 'node/'. $node->nid;
        if (drupal_get_path_alias($path) != $path) {
          path_set_alias($path);
        }
        break;
    }
  }
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему