如何使用PHP将“活动”类设置为菜单项?

时间:2015-10-07 22:10:11

标签: php html

我想为当前活动页面设置class="active",但我无法让它工作。每次我在我的锚点和列表标记中包含<?php echo ($page == 'home') ? 'class="current"' : '';?>时,我都会收到同样的错误:

  

解析错误:语法错误,意外“回家”(T_STRING),期待','或';'在第18行的C:\ Users \ Standard \ Desktop \ Test \ includes \ top.php

我只是不知道我现在做错了什么......我一直在研究和寻找过去3个小时的答案,但仍然无法解决。我只是不断收到语法错误。 :(

这是我目前的代码:

<?php
echo '
    <div class="top-nav-bg">
        <div class="top-nav container">
            <div class="row">
                <div class="top-nav sixteen columns">
                    <ul>
                        <li><a <?php echo ($page == 'home') ? 'class="active"' : '';?> href="/index.php">Home</a></li>
                        <li><a href="/about-us/">About Us</a></li>
                        <li><a href="/our-services/">Our Services</a></li>
                        <li><a href="/products/">Products</a></li>
                        <li><a href="/contact-us/">Contact Us</a></li>
                    <ul>
                </div>
            <div>
        </div>
    </div>
' ; >?

它包含在我的index.php文件中:

<!DOCTYPE html>
  <html lang="en">
   <head>

    <?php include ('/includes/header.php'); ?>

    <title>Home - Test</title>

  </head>
  <body id="homepage">

    <?php $page = 'home'; include ('/includes/top.php') ;?>

</body>
</html>

2 个答案:

答案 0 :(得分:3)

您已经在PHP中,因此您的<?php echo并非必要。应该只是:

<?php
echo '
    <div class="top-nav-bg">
        <div class="top-nav container">
            <div class="row">
                <div class="top-nav sixteen columns">
                    <ul>
                        <li><a '.($page == 'home') ? 'class="active"' : ''.' href="/index.php">Home</a></li>
                        <li><a href="/about-us/">About Us</a></li>
                        <li><a href="/our-services/">Our Services</a></li>
                        <li><a href="/products/">Products</a></li>
                        <li><a href="/contact-us/">Contact Us</a></li>
                    <ul>
                </div>
            <div>
        </div>
    </div>
' ; 
?>

答案 1 :(得分:1)

不要发表评论,所以会回答。

您只输出一个变量,因此您不需要在php中拥有所有html。 另外,通过取消它,您不必担心条带'"。 此外,如果你使用一个漂亮的IDE /编辑器,你会得到更好的语法高亮。

以下是如何以更清洁的方式做到这一点:

<div class="top-nav-bg">
    <div class="top-nav container">
        <div class="row">
            <div class="top-nav sixteen columns">
                <ul>
                    <li><a <?= ($page === 'home') ? 'class="active"' : ''; ?> href="/index.php">Home</a></li>
                    <li><a href="/about-us/">About Us</a></li>
                    <li><a href="/our-services/">Our Services</a></li>
                    <li><a href="/products/">Products</a></li>
                    <li><a href="/contact-us/">Contact Us</a></li>
                <ul>
            </div>
        <div>
    </div>
</div>

请注意使用<?=,这是<?php echo的简写。 只有php 5.4+会接受它们,所以如果您不确定它可能是个问题,请使用<?php echo