2012-06-04 37 views
2

我有这样的菜单:应用特定的类/ ID到当前页面菜单上(PHP)

<div id="blahblah" style="blahblah"> 
<a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> 
<a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> 
<a href="http://domain.com/folder/gallery"><img style="blahblah" src="blahblahblahblah"></a> 
<a href="http://domain.com/folder/dontknow"><img style="blahblah" src="blahblahblahblah"></a> 
</div> 

我想有一些自动添加一个类=“当前”页面我目前在。链接(如您在上面的代码中看到的)类似于domain.com/folder/biography或domain.com/folder/contacts,因此没有.php/.html等。

I尝试与:

<div id="blahblah" style="blahblah"> 
<a <?php if (strpos($_SERVER['PHP_SELF'], 'biography')) echo 'class="current"';?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> 
<a <?php if (strpos($_SERVER['PHP_SELF'], 'contacts')) echo 'class="current"';?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> 
... 
... 
</div> 

但它不工作...与strops解决方案似乎可行,可能我做错了..:P

+0

记住strpos将返回的位置,所以如果脚本的名称是“biography.php”,你搜索“biorgraphy”,它将返回0,将评估为false ...将'!== false'添加到您的条件中... – keithhatfield

回答

3

您应该:

  1. 检查strpos()!== false的结果。使用$_SERVER['REQUEST_URI']而不是$_SERVER['PHP_SELF']
  2. 将代码包装在函数中。

事情是这样的:

<?php 
function get_current($name) { 
    if (strpos($_SERVER['REQUEST_URI'], $name) !== false) 
    echo 'class="current"'; 
} 
?> 

<div id="blahblah" style="blahblah"> 
    <a <?php get_current('biography') ?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> 
    <a <?php get_current('contacts') ?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> 
    ... 
    ... 
</div> 
+0

Thanks !!! It works !!;) – MultiformeIngegno

+0

另一个问题..;) 对于一个条目,我有“子条目”。有没有办法让多个页面为一个条目“提供”当前的类?例如: \t href="http://domain.com/folder/biography"> MultiformeIngegno

+0

我不确定我是否理解您的问题,但PHP支持多参数函数,例如:'get_current('page1','page2','page3')'。参见['func_get_args()'](http://php.net/func_get_args)。如果您使用HTML代码创建新问题并解释您想实现的目标,我可以给你详细的答案。 – flowfree

1

如果位置为0,那么它将评估为FALSE在PHP中。尤其是应检查返回值,即> = 0

1

相反的strpos(),你可以试试这个:

<?php $current = basename($path, ".php"); ?> 

<a href="blahblah"<?php if ($current == 'biographies') echo ' class="current"'; ?> /> 

$current是当前文件的名称,没有.php扩展。

+0

感谢您的回复! ;) 不幸的是,这不起作用.. :( – MultiformeIngegno

+0

不用担心。它怎么不工作? – Litty

+0

class =“current”does not appear .. – MultiformeIngegno