根据某些条件在菜单中提供链接


Giving links in Menu based on some condition

我这里有一个情况。在我的项目中,菜单部分包含一些锚标签,当我们在索引页面中时它会完美运行,但是移动到其他页面我想在那里提供真正的链接,所以我的问题是如何检查哪个页面正在查看或如何检查网站查看器不在索引页面中

<li><a href="#home" class="active">Home</a></li>
<li><a href="#about_us">About Us</a></li>

我想有条件地更改href,例如当我在索引中时,上面的href属性是可以的,当我在另一个页面时,例如注册,然后href属性更改为index.php/site/index#home

提前致谢

更新:谢谢乌塔拉,我在她的帮助下找到了解决方案

<?php
$url = $_SERVER["REQUEST_URI"];
$page = pathinfo($url);
$filename = $page['filename'];
$href = ($filename=='root_directory' || $filename=='index'  || $filename=='site')?'':Yii::app()->request->baseUrl;
?>
<a href="<?php echo $href ; ?>#home" class="active">Home</a>

您可以使用 CMenu 小部件,这会处理亮点、外观等。 另外,您可以在之后使用自定义 CSS。

<?php 
    $this->widget('zii.widgets.CMenu',array(
        'items'=>array(
            array('label'=>'Home', 'url'=> 'YOUR_URL#home'),
            array('label'=>'About Us', 'url'=>'YOUR_URL#about_us)'
        )
       ); 
?>
$url = $_SERVER["REQUEST_URI"];
$page = pathinfo($url);
$filename = $page['filename'];

$filename将为您提供正在查看的当前页面的名称

你可以检查

if($filename != 'index')
{
    echo '<li><a href="index.php/site/index#home" class="active">Home</a></li>
          <li><a href="#about_us">About Us</a></li>';
}
else
{
    echo '<li><a href="#home" class="active">Home</a></li>
              <li><a href="#about_us">About Us</a></li>';
}

请记住$filename只为您提供不带扩展名的文件名

首先将 id 提供给锚标签,然后放置如下所示的条件

  <?php 
// the php code
   $flag=strpos('index.php',$_SERVER['PHP_SELF'])
   {
  ?>
   <script>
           $(document).ready(function(){
                       $("#idofanchortg").attr('href','hrefyou want to add');
           });
   </script>
<?php } ?>

你可以使用 Yii 提供的 CMenu widgethttp://www.yiiframework.com/wiki/211/creating-a-css-driven-drop-down-menu-using-cmenu/

首先,我宁愿把责任留在一个地方。

<li><a href="<?php echo $this->getHomeHrefLink(); ?>" class="active">Home</a></li>
<li><a href="#about_us">About Us</a></li>

我更喜欢这种方式'couse代码更干净。井。现在我们知道我们所有的控制器都扩展了控制器类(/protected/components/Controller.php)。在这个地方我们可以添加

public function getHomeHrefLink() {
    // when I'm in index page the href attribute is #home
    // when I'm in register page the href attribute is index.php/site/index#home
}

所以来吧:我们可以$this->action(控制器名称)和$this->action->id(操作名称)来了解我们在哪里:

public function getHomeHrefLink() {
    return $this->createUrl('index/site', array());

    // when I'm in register page the href attribute is index.php/site/index#home
    return '#home;
}