2016-06-23 11 views
6

Ich bin ein Front-End-Entwickler, der etwas vertraut ist, aber selten PHP verwendet. Ich arbeite an einem persönlichen Projekt, bei dem ich meistens nur Includes verwende, um PHP-Dateien miteinander zu verknüpfen. Hier ist meine allgemeine Grundstruktur der Seite:Verwenden von bedingten PHP-Anweisungen zum Wechseln von HTML-Inhalten auf verschiedenen Seiten

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

Page content goes here. 

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

Auf pagetitle.php, ich habe ein <h1>, <h2> und Hintergrundbild in Bezug auf welcher Seite Sie sind.

Meine Frage ist, wie benutze ich Conditional Statements, um alle Seitentitel/Unterüberschriften auf pagetitle.php zu setzen und sie je nachdem, auf welcher Seite du bist, zu wechseln? So zum Beispiel, mag ich

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

auf about.php zu zeigen, und

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

auf contact.php zeigen, etc. etc. ... aber nur pagetitle.php mit auf diesen Seiten.

Die Seite ist nicht riesig. Es hätte nicht mehr als 10 Seiten. Mir ist auch klar, dass ich das Seitentitelsegment auf der entsprechenden Seite verwenden kann, aber wenn möglich, möchte ich das ausprobieren.

Danke!

Antwort

0

Auf Ihrem pagetitle.php könnten Sie so etwas wie dieses

<?php 

$scriptname = basename($_SERVER["PHP_SELF"]); 

if ($scriptname == "about.php") { 
    echo "<h1>About Page</h1>"; 
}else if($scriptname == "contact.php"){ 
    echo "<h1>Contact Us</h1>"; 
} 

?> 
0

Sie müssen erhalten die Zeichenfolge nach dem Domain-Namen tun, so dass Sie $_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 />"; 
} 
1

ich so etwas wie dies tun würde, verwenden können (nicht getestet, sollte aber mit wenigen, wenn überhaupt, Änderungen funktionieren.)
(Jeder sagt das, oder?):

<?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"; 
     } 
    ?> 

Dann auf jeder Seite, wo Sie Ihre div wollten, würden Sie diesen Code setzen:

printinfo($_SERVER['PHP_SELF']);

Sonstiges:

  • Auf diese Weise ist flexibler als die anderen Möglichkeiten, um das Opfer keine bedingten Aussagen. (Sie speziell nach einer Lösung, die bedingten Anweisungen hatte, aber im Interesse der Flexibilität & Wartbarkeit, dieses Beispiel nicht switch Aussagen oder if Aussagen nicht verwendet.)

  • Da es keine bedingten Anweisungen sind, gibt es weniger Code pflegen. Zugegeben, haben Sie das Array mit den Informationen zu Setup, aber wenn Sie die <h2> zu einem <h3> ändern entschieden, würden Sie die Änderung nur an einer Stelle vornehmen müssen, usw.

+0

Das ist ein großartig Punkt! Ich werde darüber nachdenken! – solodesigner

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"; 
} 
Verwandte Themen