4nAlbum - php nach HTML

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

4nAlbum - php nach HTML

Beitragvon woysch » 30.03.2005 08:54

Hallo modrewrite.de
ich möchte die URL'S von 4nAlbum 9.2 mit FixPack 1_092 auf PHP-Nuke 6.5 in HTML konvertieren.
Leider klapt es micht mit 4nAlbum ob wohl die .htaccess ist so weit OK ist.
Beispiel: .htaccess
Code: Alles auswählen
ErrorDocument 404 http://www.home-server.de/index.html
RewriteEngine On
RewriteRule ^index.html index.php
#4nAlbum
RewriteRule ^galerie-([1-9][0-9]*).* modules.php?op=modload&name=4nAlbum&file=index&do=showgall&gid=$1
RewriteRule ^galerie.* modules.php?name=4nAlbum

Wenn ich die URL dierekt im Brauser auf rufe (http://www.home-server.de/galerie-1.html) lande ich auch in der richtigen Katigorie.
Jetzt zum Problem:
Die URL soll dierekt in PHP-Nuke umgewandelt werden.
Code: Alles auswählen
/*********************************************************************************/
/*                       Beispiel: header.php start                                   */
/*********************************************************************************/
ob_start();
/** URL Array von einlesen  **/
function replace_for_mod_rewrite(&$s) {
$urlin = array(
"'(?<!/)index.php'",
"'(?<!/)modules.php\?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=([0-9]*)'",
"'(?<!/)modules.php\?name=4nAlbum'",
);
/** URL Array ausgeben  **/
$urlout = array(
"index.html",
"galerie-\\1.html",
"galerie.html",
);
    $s = preg_replace($urlin, $urlout, $s);
    return $s;
}
/*********************************************************************************/
/*                       Beispiel: header.php end                                    */
/*********************************************************************************/

/*********************************************************************************/
/*                       Beispiel: footer.php start                                     */
/*********************************************************************************/
/** Gibt den Inhalt des Ausgabe-Puffers $contents zurück **/
    $contents = ob_get_contents();
/** Bereinigt (löscht) den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung **/
    ob_end_clean();
/** Gibt den Inhalt des modifizierten Puffer $contents zurück  **/
    echo replace_for_mod_rewrite($contents);
/*********************************************************************************/
/*                       Beispiel: footer.php end                                      */
/**************************************************** ****************************/

Nun meine frage, kann ich die Variable $contents benutzen, oder benutzt
4nAlbum ein andere ausgabe Variable.

Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45

Beitragvon Bob » 30.03.2005 12:48

Nun meine frage, kann ich die Variable $contents benutzen,
Das bleibt dir überlassen.
Sollte die Variable vorher im Script genutzt werden, so wird sie am Ende eben überschrieben. Das hat aber keine Auswirkungen, da nach dem Zurückgeben des Ausgabe-Puffers eigentlich nichts mehr groß ausgeführt wedren sollte. Zu Konflikten kann es folglich nicht kommen.
oder benutzt
4nAlbum ein andere ausgabe Variable.
Die wird doch durch dein Code-Schnipsel erst zugewiesen. Du weist der Variable content hier den Output-Buffer zu. Dieser befindet sich in ob_get_contents(). In der variable wird nicht gepuffert, das "Ergebnis" des Puffers speicherst du in content um dann per ob_end_clean() den Puffer zu löschen.

Grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

Wieder mal Rahtlos !

Beitragvon woysch » 30.03.2005 13:10

Danke für die antwort,
leider löst es nicht mein Problem.
Der Fehler steckt wohl in dem Array, aber wo ?

Code: Alles auswählen
"'(?<!/)modules.php\?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=([0-9]*)'",


Das sollte doch laufen.

Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45

Beitragvon Bob » 31.03.2005 17:46

Wenn dein String im Quelltext auch exakt
modules.php?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=123
entspricht - du also &amp; statt & ausgibst (wie es ja HTML-techn. korrekt ist), sollte es funktionieren (zumindest bei meinem Test-Script läuft es...).

Optimierungsvorschlag:
ErrorDocument 404 http://www.home-server.de/index.html
RewriteEngine On
RewriteRule ^index\.html$ index.php [L]
#4nAlbum
RewriteRule ^galerie-([1-9][0-9]+)\.html$ modules.php?op=modload&name=4nAlbum&file=index&do=showgall&gid=$1 [L]
RewriteRule ^galerie\.html$ modules.php?name=4nAlbum [L]


<?
ob_start();
/** URL Array von einlesen **/
function replace_for_mod_rewrite(&$s) {
$urlin = array(
"'(?<!/)index.php'",
"'(?<!/)modules.php\?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=([0-9]*)'",
"'(?<!/)modules.php\?name=4nAlbum'",
);
/** URL Array ausgeben **/
$urlout = array(
"index.html",
"galerie-\\1.html",
"galerie.html",
);
$s = preg_replace($urlin, $urlout, $s);
return $s;
}
?>
<a href="modules.php?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=8779">asnhdfks</a><br />
<a href="index.php">asnhdfks</a><br />
<a href="modules.php?name=4nAlbum">asnhdfks</a><br />
<?
/** Gibt den Inhalt des Ausgabe-Puffers $contents zurück **/
$contents = ob_get_contents();
/** Bereinigt (löscht) den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung **/
ob_end_clean();
/** Gibt den Inhalt des modifizierten Puffer $contents zurück **/
echo replace_for_mod_rewrite($contents);

?>
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

mod_rewrite String im Quelltext

Beitragvon woysch » 31.03.2005 20:58

Hallo Caterham,
der String ist richtig da die URL dierekt aufrufen werden kann.
Code: Alles auswählen
http://www.home-server.de/galerie-1.html
// oder
http://www.home-server.de/modules.php?op=modload&name=Album&file=index&do=showgall&gid=1


Das Problem liegt woll bei 4nAlbum, da es ein eigenes Template System hat.
Ich werde mich woll durch der Code arbeiten müssen.
Danke noch nal für deine hinweise.
[L] ist mir klar, aber was macht das Doller Zeichen hinter dem html (galerie\.html$).
Das habe ich noch nicht verstanden.

Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45

Beitragvon Bob » 31.03.2005 21:28

was macht das Doller Zeichen hinter dem html (galerie\.html$).
Das marktert das Ende der Zeichenkette.

der String ist richtig da die URL dierekt aufrufen werden kann.
Ja ja, aber die Links im Quelltext, enthalten die auch ein &amp; (sichtbar im Quelltext?) wie z.B.
modules.php?op=modload&amp;name=4nAlbum&amp;file=index&amp;do=showgall&amp;gid=123

oder sehen die im Quelltext so aus:
modules.php?op=modload&name=4nAlbum&file=index&do=showgall&gid=123
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

Beitragvon woysch » 31.03.2005 21:54

Hallo Caterham,
so wir dir URL erzeugt.
Code: Alles auswählen
$out .= "<a class=\"".$font['normal']."\" href=\"$baseurl&amp;do=showgall&amp;gid=$row[gallid]\">".underscoreTospace($row[gallname])."</a> ($row[total])  $vis";

nicht & sonder &amp;
Ich habe auch schon versucht $out abzufangen und umzuscheiben.
Leider ohne erfolg.

Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45

Beitragvon woysch » 31.03.2005 21:57

Der Code ist für die SubCatikorie, das Problem ist aber das gleiche.

Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45

Beitragvon Bob » 31.03.2005 22:06

Wenn du die Zeile echo replace_for_mod_rewrite($contents); auskommentierst, solltest du nichts mehr angezeigt bekommen. Ist das der Fall? Wenn nicht, stimmt mit dem Buffering was nicht
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

Beitragvon woysch » 31.03.2005 22:19

Ich bekomme nur noch der rest vom footer.
Also alles was noch echo // replace_for_mod_rewrite($contents);
kommt.
Wie gesagt ich habe PHP-Nuke 6.5, und Fast alle Module laufen schon über mod_rewrite,
nur 4nAlbum und das phpBB Forum noch nicht.


Gruß JW
woysch
.
.
 
Beiträge: 7
Registriert: 30.03.2005 08:45


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste