我试图使用php在nav中设置活动类。现在我需要通过目录而不是完整的URL来设置它,因为我有一个每个目录的主登陆页面,其中包含目录中其他页面的子导航。我打算使用以下内容,但这将返回完整的URL。
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;}
function activeLink($pageID) {
if ( $pageID == curPageURL() ) {
echo 'class="active"';
} }
然后我在这样的导航项中调用activeLink():
<li class="projectchild padding1"><a href="http://www.strangeleaves.com/nexus/index.php" <?php activelink('http://www.strangeleaves.com/nexus/index.php'); ?> >nexus</a></li>
您对如何修改此设置以返回目录的建议将非常感激。
答案 0 :(得分:1)
如果您想从directory name
中提取URL
,可以使用parse_url
和dirname
作为:
$url = 'http://www.strangeleaves.com/nexus/index.php';
$arr = parse_url($url);
$path = dirname($arr['path']); // $path is now /nexus
答案 1 :(得分:0)
您可以获取完整的URL,然后将其展开以进入您的目录,如下所示:
$currentFile = $_SERVER["PHP_SELF"];
$parts = Explode('/', $currentFile);
$thisDir = $parts[count($parts) - 2];