drupal_lookup_path
includes/path.inc, строка 41
- Версии
- 5
drupal_lookup_path($action, $path = '')
- 6
drupal_lookup_path($action, $path = '', $path_language = '')
Для указанного синонима пути возвращается системный URL Drupal, если он существует. Для указанного системного URL Drupal возвращается синоним пути, если он существует. В остальных случаях возвращается FALSE
.
Параметры
$action
Одно из следующих значений:
'wipe'
: удаляет кеш синонимов пути.'alias'
: возвращает синоним для заданного системного пути Drupal (если он существует).'source'
: возвращает системный URL Drupal для синонима пути (если он существует).
$path
Путь, для которого нужно найти соответствующий синоним пути или системный URL.
$path_language
Не обязательный код языка, для которого ищется путь. По умолчанию задаётся равным языку страницы.
Если нет пути, заданного для этого языка, то делается поиск без учёта языка.
Возвращаемое значение
Либо системный путь Drupal, либо синоним пути, либо FALSE
, если путь не был найден.
Код
<?php
function drupal_lookup_path($action, $path = '') {
// $map keys are Drupal paths and the values are the corresponding aliases
static $map = array(), $no_src = array();
static $count;
// Use $count to avoid looking up paths in subsequent calls if there simply are no aliases
if (!isset($count)) {
$count = db_result(db_query('SELECT COUNT(pid) FROM {url_alias}'));
}
if ($action == 'wipe') {
$map = array();
$no_src = array();
}
elseif ($count > 0 && $path != '') {
if ($action == 'alias') {
if (isset($map[$path])) {
return $map[$path];
}
$alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path));
$map[$path] = $alias;
return $alias;
}
// Check $no_src for this $path in case we've already determined that there
// isn't a path that has this alias
elseif ($action == 'source' && !isset($no_src[$path])) {
// Look for the value $path within the cached $map
if (!$src = array_search($path, $map)) {
if ($src = db_result(db_query("SELECT src FROM {url_alias} WHERE dst = '%s'", $path))) {
$map[$src] = $path;
}
else {
// We can't record anything into $map because we do not have a valid
// index and there is no need because we have not learned anything
// about any Drupal path. Thus cache to $no_src.
$no_src[$path] = TRUE;
}
}
return $src;
}
}
return FALSE;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии