2
我正在Drupal中工作,并试图在较低的函数中返回一个新的URL。我遇到的麻烦是我要返回的$path
变量不会保留$vocab
和$site
变量。变量没有从switch语句返回
另外,对于非Drupal用户,ccw_taxonomy_baseurl_filter_url_inbound_alter()
函数被自动调用,所以这不是问题。我希望这是一个语法问题或交换机内部的东西,因为我花了很多时间来调试它。
function __extractURLName($myurl){
$domain = parse_url($myurl , PHP_URL_HOST);
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $list)) {
return substr($list['domain'], 0,strpos($list['domain'], "."));
}
return false;
}
/**
* Implements hook_url_inbound_alter().
*/
function ccw_taxonomy_baseurl_filter_url_inbound_alter(&$path, $original_path, $path_language) {
if($path =='taxonomy/term/%'){
$path = '';
$url = __extractURLName(url(NULL, array('absolute' => TRUE)));
$site = 0;
$vocab = arg(2);
switch ($url) {
case 'bmagazine':
$site = 5;
$vocab = arg(2);
break;
case 'emagazine':
if (arg(0) == 'high') {
$site = 4;
$vocab = arg(3);
break;
} else {
$site = 3;
$vocab = arg(3);
break;
}
case 'smagazine':
$site = 2;
$vocab = arg(2);
break;
case 'fmagazine':
$site = 1;
$vocab = arg(2);
break;
default:
$site = 1;
break;
}
$path = 'taxonomy/term/'.$vocab.'/'.$site;
}
dpm($path); // debugging tool
return $path;
}
顺便说一句,arg()
是一个Drupal功能以及,抓住一个URL路径变量。
arg();是一个drupal函数,它抓取一个url路径变量 –
你确定在'switch'块之前有'$ url'变量的内容吗?尝试调试它来检查它的值。 –
$ url正确解析。感谢古斯塔沃的问题。 –