Вы можете просто использовать следующий код:
<?php
$arg1 = arg(1);
$arg2 = arg(2);
// Check arg(1) is not empty, or is_numeric() returns TRUE for NULL.
return (arg(0) == 'video' && !empty($arg1) && !is_numeric($arg1) && empty($arg2));
?>
Как KingCrunch уже сказал, is_nan()
не возвращает TRUE
, когда ее аргумент является числом. Код, который вы указали, содержит еще одну ошибку: empty()
может использоваться только с переменными, как указано в PHP documentation.
empty()
только проверяет переменные, как и все остальное, приведет к ошибке синтаксического анализа. Другими словами, следующее не будет работать: empty(trim($name))
.
Код, который я сообщил, показывает блок для путей, таких как «video/video1»; если вы хотите показать блок также для путей, таких как «video/video1/edit», тогда следует использовать следующий код.
<?php
$arg1 = arg(1);
return (arg(0) == 'video' && !empty($arg1) && !is_numeric($arg1));
?>
Использование arg()
не работает, если путь, который вы ищете путь псевдонима. Предположим, что «video/video1» является псевдонимом пути для «node/10»; в этом случае arg(0)
вернет «узел», а arg(1)
вернется «10.». То же самое верно для $_GET['q']
, который будет равен «node/10."
Это происходит потому, что Drupal, во время его начальной загрузки, инициализации $_GET['q']
со следующим кодом:
// Drupal 6.
if (!empty($_GET['q'])) {
$_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
}
else {
$_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
}
// Drupal 7.
if (!empty($_GET['q'])) {
$_GET['q'] = drupal_get_normal_path($_GET['q']);
}
else {
$_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
}
Если вам то, что вы проверяете это псевдоним пути, то вы должны использовать следующие код:
// Drupal 6.
$arg = explode('/', drupal_get_path_alias($_GET['q']);
return (arg[0] == 'video' && !empty($arg[1]) && !is_numeric(arg[1]) && empty($arg[2]));
// Drupal 7.
$arg = explode('/', drupal_get_path_alias();
return (arg[0] == 'video' && !empty($arg[1]) && !is_numeric(arg[1]) && empty($arg[2]));
Что именно не работает? Что содержат переменные аргументов? –
Где вы используете этот код? Используете ли вы его в реализации крючка, или используете ли вы его в качестве кода PHP, который определяет, когда должен отображаться модуль? Что вы ожидаете от URL? – kiamlaluno
Извините, это для блока под «параметрами видимости страницы» Аргументы:/video/video1 должен показывать блок,/video/1/video/1/... не должен показывать блок – atb