使用PHP条件语句在不同页面上切换HTML内容

时间:2016-06-23 01:14:00

标签: php html

我是一位熟悉但很少使用PHP的前端开发人员。我正在开发一个个人项目,我主要使用的包括将PHP文件链接在一起。这是我的整体基本页面结构:

<?php include('header.php'); ?>
<?php include('pagetitle.php'); ?>

Page content goes here.

<?php include('footer.php'); ?>

在pagetitle.php上,我有一个<h1><h2>和背景图片,与您所在的页面有关。

我的问题是,我如何使用条件语句将所有页面标题/副标题放在pagetitle.php上,并根据您所在的页面切换它们?例如,我想要

<div id="about">
<h1>About</h1>
<h2>About page subheading</h2>
</div>

显示在about.php和

<div id="contact">
<h1>Contact Me</h1>
<h2>Contact page subheading</h2>
</div>

显示在contact.php等等...但只在这些页面上使用pagetitle.php。

该网站并不大。它不会超过10页。另外,我确实知道我可以在相应的页面上使用该页面标题段,但如果可能的话,我想尝试一下。

谢谢!

4 个答案:

答案 0 :(得分:1)

我会做这样的事情(没有经过测试,但如果有的话,应该很少改变。)
(每个人都说,对吧?:D):

<?php
    /*
    create a map that contains the information for each page.
    the name of each page maps to an array containing the
    (div id, heading 1, & subheading for that page).
    */
    $pageinfo = array(
        "about.php" => array ("about", "About", "About Page Subheading"),
        "contact.php" => array ("contact", "Contact Me", "Contact Page Subheading"),
        );

    function printinfo($pagename) {
        /*
        This function will print the info for the current page.
        */

        global $pageinfo;

        $pagename = basename($pagename);

        #make sure we have info for this page
        if (!array_key_exists($pagename, $pageinfo) {
            echo "<p><b>You did not supply info for page $pagename</b></p>";
            return;
            }

        #we do have info ... continue
        $info = $pageinfo[$pagename];

        #let's print the div (with its custom id),
        echo "<div id='" . $info[0] . "'>\n";

        #print the headings
        echo "<h1>" . $info[1] . "</h1>\n";
        echo "<h2>" . $info[2] . "</h2>\n";

        #close the div
        echo "</div>\n";
        }
    ?>

然后在您想要div的每个页面中,您将放置此代码:

printinfo($_SERVER['PHP_SELF']);

其他:

  • 这种方式比其他方式更灵活,牺牲了无条件陈述。 (您特别要求具有条件语句的解决方案;但是,为了灵活性和可维护性,此示例不使用switch语句或if语句。)

  • 因为没有条件语句,所以维护的代码较少。当然,您必须使用信息设置数组,但如果您决定将<h2>更改为<h3>,则必须仅在一个位置进行更改等。

答案 1 :(得分:0)

在你的pagetitle.php上你可以做这样的事情

require "forwardable"

class Store
  extend Forwardable
  def_delegator :@roster, :names, :roster

  attr_accessor :store_id

  def initialize(store_id)
    @store_id = store_id
    @roster = Roster.new
  end
end

class Roster
  def names(store_id)
    {
      1 => ['Ned', 'Smith', 'Jerry', 'Ben'],
      2 => ['Preeti', 'Jean', 'Sam', 'Lol']
    }[store_id]
  end
end

store = Store.new(1)
store.roster # => ['Ned', 'Smith', 'Jerry', 'Ben']

答案 2 :(得分:0)

您必须在域名后面输入字符串才能使用$_SERVER['REQUEST_URI']

$page = $_SERVER['REQUEST_URI']; 

if ($page == "about.php") {
     echo "<h1>About</h1>"."<br />";
     echo "<h2>About page subheading</h2>"."<br />";
}else if($page == "contact.php"){
     echo "<h1>Contact Me</h1>"."<br />";
     echo "<h2>Contact page subheading</h2>"."<br />";
}

答案 3 :(得分:0)

$page = $_SERVER['REQUEST_URI']; 
switch($page){
case 'about.php':

     echo "<h1>About</h1>";
     echo "<h2>About page subheading</h2>";

break;
case 'contact.php':
      echo "<h1>Contact Me</h1>";
      echo "<h2>Contact page subheading</h2>";
break;
default:
      echo "Invalid Request";
}