你可以简单地使用下面的代码:
<?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”这样的路径;如果您还想为“视频/视频1 /编辑”等路径显示该块,则应使用以下代码。
<?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代码?你在期待网址是什么? – kiamlaluno
道歉,这是针对“页面特定的可见性设置”下的块 参数:/ video/video1应该显示块,/ video/1/video/1/...不应显示块 – atb