2015-10-01 130 views
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路径变量。

+1

arg();是一个drupal函数,它抓取一个url路径变量 –

+0

你确定在'switch'块之前有'$ url'变量的内容吗?尝试调试它来检查它的值。 –

+0

$ url正确解析。感谢古斯塔沃的问题。 –

回答

0

查看该问题的答案,以获得更多详细信息,但我通过更改路径来解决问题