• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Include und thisPage vereinen

CynnDiablo

Neues Mitglied
Hallo,
ich stehe momentan vor folgendem Problem: Ich bastel an einer Hompage und die Texte werden durch php includet. Funktioniert auch alles soweit. Jetzt will ich allerdings, dass diese durch php includeten Texte die Seite benennen mit
Code:
<?php $thisPage="start"; ?>
Das ist das Include-System:
Code:
 <?php
    if(isset($_GET['site'])) 
    {
        switch($_GET['site'])  
        {
            case 'start' : include('start.php'); break;
            case 'aufl' : include('aufl.php'); break;
            case 'team' : include('team.php'); break;                        
            default : include('error.php'); break;
        }
    }
    else 
    {
        include('start.php');
    }
 ?>
Ich habe schon versucht das
Code:
<?php $thisPage="start"; ?>
einfach auf die Seite "start.php" zu kopieren, aber es funktionierte nicht.

Weiß jemand wie ich sowas richtig mache?
 
Naja, im Prinzip gibts da gar nicht viel möglichkeiten. Nimm mehrere if und else if - Bedingungen, oder am Besten wieder switch-case. Um das kommst du nicht drum herum, außer du arbeitest mit Datenbank.

PHP:
<?php
$pagetitle = null;

if (isset($_GET['site']))
{
         switch ($_GET['site'])  
        {
            case 'start': 
            $pagetitle = 'Start';
            break;
            
            case 'aufl': 
            $pagetitle = 'Aufl';
            break;
            
            case 'team': 
            $pagetitle = 'Team';
            break; 
            
            default: 
            $pagetitle = 'Error';
            break;
        }   
}
else
{
    $pagetitle = 'Start';
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $pagetitle; ?></title>
</head>

<body>

 <?php
    if (isset($_GET['site'])) 
    {
        switch ($_GET['site'])  
        {
            case 'start' : include('start.php'); break;
            case 'aufl' : include('aufl.php'); break;
            case 'team' : include('team.php'); break;                        
            default : include('error.php'); break;
        }
    }
    else 
    {
        include('start.php');
    }
 ?>


</body>

</html>
 
Also, angenommen es geht um den Seitentitel, dann wäre es mit einem Output Buffer machbar, den Titel direkt in der einzubindenden Datei zu definieren.

index.php

PHP:
<?php

$pageTitle = '';
$pageContent = '';

ob_start();

    if(isset($_GET['site']))
    {
        switch($_GET['site'])
        {
            case 'start' : include('start.php'); break;
            case 'aufl' : include('aufl.php'); break;
            case 'team' : include('team.php'); break;
            default : include('error.php'); break;
        }
    }
    else
    {
        include('start.php');
    }

$pageContent = ob_get_clean();

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title><?php echo $pageTitle; ?></title>
</head>

<body>

    <?php echo $pageContent; ?>

</body>

</html>

start.php

PHP:
<?php $pageTitle = 'Startseite'; ?>

<h1>Startseite</h1>
 
Ich habs sofort mal ausprobiert und es funktioniert bestens! Vielen Dank!

hab nur noch ein Problem bei der Variante

Also, angenommen es geht um den Seitentitel, dann wäre es mit einem Output Buffer machbar, den Titel direkt in der einzubindenden Datei zu definieren.

index.php

PHP:
<?php

$pageTitle = '';
$pageContent = '';

ob_start();

    if(isset($_GET['site']))
    {
        switch($_GET['site'])
        {
            case 'start' : include('start.php'); break;
            case 'aufl' : include('aufl.php'); break;
            case 'team' : include('team.php'); break;
            default : include('error.php'); break;
        }
    }
    else
    {
        include('start.php');
    }

$pageContent = ob_get_clean();

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title><?php echo $pageTitle; ?></title>
</head>

<body>

    <?php echo $pageContent; ?>

</body>

</html>

start.php

PHP:
<?php $pageTitle = 'Startseite'; ?>

<h1>Startseite</h1>
Ich hab alles so gemacht, wie beschrieben, und trotzdem ist der Pagetitel die URL der Seite. Ich weiß nicht wo dran es liegt. Und noch dazu: kann mir vlt noch jmd sagen, wie ich es einstelle, das die Seite, die durch "else" definiert wird, auch Startseite benannt wird?
 
Das sollte bei meinem Beispiel eigentlich alles so funktionieren.

Sicher, dass du da alles passend übertragen hast? Poste im Zweifel noch mal den Code.
 
PHP:
<?php
                    
$pageTitle = '';
$pageContent = '';

ob_start(); 
    if(isset($_GET['site'])) 
    {
        switch($_GET['site'])  
        {
            case 'start' : include('content/startseite.php'); break;
            case 'impr' : include('content/impressum.php'); break;
            case 'kont' : include('content/kontakt.php'); break;
            case 'hinw': include('content/hinweise.php'); break;
                        
            default : include('content/error.php'); break;
        }
    }
    else 
    {
        include('content/startseite.php');
    }
    $pageContent = ob_get_clean(); 
 ?>


HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[PHP]<?php echo $pageTitle; ?>[/PHP]</title>
<style type="text/css">
@import url("stylesheet.css");
</style>
</head>

und dann auf jeder seite noch:
PHP:
<?php $thisPage="Startseite"; ?>
 
Einmal heißt die Variable $thisPage und einmal heißt sie $pageTitle. Das müsstest du an einer der beiden Stellen ändern.

Das ist kein festgesetzter Begriff, sondern ein frei wählbarer Bezeichner. Du könntest auch immer $stefan schreiben oder so.
 
Ich hab noch eine kleine Frage:

ich hab ja jetzt das Include system, was im Fall von z.B. "start" "startseite.php" includet.
ich ahb allerdings jetzt zwei unterschiedliche Textfelder: es soll im falle von "start" einmal "startseite.php" und einmal "startseite-head.php" includet werden in getrennten feldern. wie bringe ich das in den Code mit rein?
PHP:
<?php
                    
$pageTitle = '';
$pageContent = '';

ob_start(); 
    if(isset($_GET['site'])) 
    {
        switch($_GET['site'])  
        {
            case 'start' : include('content/startseite.php'); break;
            case 'impr' : include('content/impressum.php'); break;
            case 'kont' : include('content/kontakt.php'); break;
            case 'hinw': include('content/hinweise.php'); break;
                        
            default : include('content/error.php'); break;
        }
    }
    else 
    {
        include('content/startseite.php');
    }
    $pageContent = ob_get_clean(); 
 ?>
 
Im Prinzip genau wie den eigentlichen Inhalt.

PHP:
$pageTitle = '';
$pageContent = '';
$pageHeader = '';

// ...

ob_start(); 
    if(isset($_GET['site'])) 
    {
        switch($_GET['site'])  
        {
            case 'start' : include('content/startseite-head.php'); break;
            default: /* nothing */ break;
        }
    }
    else 
    {
        include('content/startseite-head.php');
    }
$pageHeader = ob_get_clean();

Dann hast du den Inhalt in der Variable $pageHeader.
 
Im Prinzip genau wie den eigentlichen Inhalt.

PHP:
$pageTitle = '';
$pageContent = '';
$pageHeader = '';

// ...

ob_start(); 
    if(isset($_GET['site'])) 
    {
        switch($_GET['site'])  
        {
            case 'start' : include('content/startseite-head.php'); break;
            default: /* nothing */ break;
        }
    }
    else 
    {
        include('content/startseite-head.php');
    }
$pageHeader = ob_get_clean();
Dann hast du den Inhalt in der Variable $pageHeader.

ja aber dann hab ich doch in
PHP:
$pageContent = '';
den gleichen inhalt wie in
PHP:
$pageHeader = '';
oder nicht?
 
Nein. Den anderen Output-Buffer-Block müsstest du natürlich stehenlassen. Der steht dort, wo ich im Beispiel den Kommentar (// ...) gesetzt habe. Du hast dann zwei unterschiedliche Variablen mit dem jeweiligen Inhalt.
 

Neueste Beiträge

Zurück
Oben