2016-06-23 16 views
6

Sono uno sviluppatore front-end che ha una certa familiarità ma usa raramente PHP. Sto lavorando a un progetto personale in cui utilizzo principalmente include per collegare file PHP insieme. Ecco il mio complessiva struttura della pagina di base:Utilizzo di istruzioni condizionali PHP per passare il contenuto HTML su pagine diverse

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

Page content goes here. 

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

Su pagetitle.php, Ho un'immagine <h1>, <h2> e lo sfondo, per i quali la pagina si è in.

La mia domanda è, come utilizzare le istruzioni condizionali per inserire tutti i titoli di pagina/sottotitoli su pagetitle.php e farli passare a seconda della pagina in cui ci si trova? Così, per esempio, io voglio

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

di presentarsi sul about.php, e

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

di presentarsi sul contact.php, ecc ecc ... ma solo utilizzando pagetitle.php su quelle pagine.

Il sito non è enorme. Non avrebbe più di 10 pagine. Inoltre, mi rendo conto che posso semplicemente usare quel segmento del titolo della pagina sulla rispettiva pagina, ma se possibile, voglio provarlo.

Grazie!

risposta

0

Sul pagetitle.php si potrebbe fare qualcosa di simile

<?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

Dovete ottenere la stringa dopo il nome del dominio in modo da poter utilizzare $_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

vorrei fare qualcosa di simile (non testato, ma dovrebbe funzionare con pochi, se del caso, modifiche.)
(Tutti dicono che, giusto?: 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"; 
     } 
    ?> 

Poi in ogni pagina in cui si voleva la vostra div, si dovrebbe inserire questo codice:

printinfo($_SERVER['PHP_SELF']);

Altro:

  • In questo modo è più flessibile rispetto agli altri modi, al sacrificio di nessuna dichiarazione condizionale. (È richiesto espressamente una soluzione che ha avuto istruzioni condizionali, ma nell'interesse di flessibilità & manutenibilità, questo esempio non usa switch privacy o if dichiarazioni.)

  • Perché non ci sono istruzioni condizionali, c'è meno codice per mantenere. Certo, è necessario impostare la matrice con le informazioni, ma se si decide di cambiare il <h2> a un <h3>, si dovrebbe fare il cambiamento in un solo luogo, ecc

+0

Questo è un grande punto! Lo prenderò in considerazione! – 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"; 
} 
Problemi correlati