Inhalt dynmischer Dateien durchsuchen
Sebastian
- php
0 Tom0 Der Martin
Hi,
auf meiner Seite werden so gut wie alle Seiten dynamisch erstellt.
Ich benutze nur eine zentrale Templatedatei, in die alle anderen Seiten (per URL Angabe) eingebunden werden.
Damit das ganze suchmaschinenfreundlich bleibt, möchte ich nun den Seitentitel (der im Header angegeben wird) auch dynamisch verändern.
Meine Idee war jetzt, dass ich die dynamischen Seiten nach dem Titel durchsuche (der steht immer zwischen <h1>-Tags) und dann jeweils verändere.
Anscheinend geht das aber nicht so ohne weiteres, da die Funktion "file()" anscheinend keine URLs mit Variablen unterstützt.
Hier mal meine bisheriger Quelltext (ich weiß, an einigen Stellen ist es noch umständlich, aber es war erstmal zum Ausprobieren).
Den Quelltext müsst ihr euch in meiner Templatedatei vor dem Beginn des "<html>"-Teils denken ;)
<?php
$current_page = parse_url($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$ending = '';
if($current_page['query'] != '')
{
$ending = '?'.$current_page['query'];
}
$file = 'index.php'.$ending;
$page_content = file($file);
foreach($page_content as $row)
{
$content .= $row;
}
if(preg_match("!<h1>(.*)</h1>!isU",$content,$result))
{
$title = $result[1];
}
else {
$title = 'Standardtitel';
}
?>
Hat jemand eine Idee, wie man das lösen könnte, oder ist das so nicht möglich?
Würde mich über ein paar Antworten freuen.
Hello,
das hängt vom Konzept ab, mit dem Du Deine dynamischen Module verwaltest.
Wenn die Ausgab erst ganz am Ende des Scriptes erfolgt, mag das ganz einfach mit den ob_-Funktionen von PHP möglich sein.
http://de.php.net/manual/de/ref.outcontrol.php
mittels auto-prepend-file und auto-append-file Einstellungen in der *.ini könntest Du dann die Buffer steuern und die Korrekturen durchführen lassen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
auf meiner Seite werden so gut wie alle Seiten dynamisch erstellt.
Ich benutze nur eine zentrale Templatedatei, in die alle anderen Seiten (per URL Angabe) eingebunden werden.
soweit okay.
Damit das ganze suchmaschinenfreundlich bleibt, möchte ich nun den Seitentitel (der im Header angegeben wird) auch dynamisch verändern.
Erstens: In welchem Header?
Zweitens: Wieso denkst du zuerst an Suchmaschinen? Der Seitentitel ist für die regulären Besucher sicher genauso interessant.
Meine Idee war jetzt, dass ich die dynamischen Seiten nach dem Titel durchsuche (der steht immer zwischen <h1>-Tags) und dann jeweils verändere.
Warum so kompliziert? Generiere doch einfach auch das title-Element dynamisch anhand des übergebenen Seiten-Identifiers.
Anscheinend geht das aber nicht so ohne weiteres, da die Funktion "file()" anscheinend keine URLs mit Variablen unterstützt.
Haha, kommt drauf an[tm].
Grundsätzlich ist file() zum Zugriff auf das lokale Filesystem gedacht. Das unterstützt natürlich keine URL-Parameter, weil das ein völlig anderer Kontext ist.
Man kann aber in der PHP-Konfiguration (fopen_URL_wrapper) die Datei-Funktionen so vergewaltigen, dass sie teilweise auch URLs anstatt Dateisystempfade akzeptieren und verarbeiten können. Dann sind auch URL-Parameter möglich. Ob dein Webhoster diese Einstellung unterstützt, findest du mit der Ausgaben von phpinfo() heraus.
$file = 'index.php'.$ending;
$page_content = file($file);
Nichts am Wert der Variablen $file deutet darauf hin, dass du eine URL meinst. Also wird PHP nach einer Datei mit dem Namen index.php?param=xxx suchen und sie vermutlich nicht finden.
Wenn du unbedingt auf URLs im HTTP-Kontext zugreifen möchtest, dann mach das wenigstens durch Voranstellen des Protokolls deutlich.
Hat jemand eine Idee, wie man das lösen könnte, oder ist das so nicht möglich?
Ich habe bereits eingangs gesagt, dass ich eine direktere Lösung vorziehen würde.
Schönes Wochenende,
Martin