Advanced Mod Rewriting Contenido 4.6.x

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mi 7. Dez 2005, 23:31

sorry - aus gesundheitlichen gründen kann ich mich sehr wahrscheinlich die nächsten 2 wochen nicht darum kümmern.

das anker problem an sich ist noch nicht wirklich gelöst, weil: die standard navigation nur die kategorien anzeigt. ein reiner anker link würde (wie du schon erfahren hast) nur die seite reloaden und dann zum punkt springen.

momentan ist die klasse ModRewrite in der datei classes/class.modrewrite.php noch nicht angepasst. Es müsste die Methode build_new_url () angepasst werden, dass die die # interpretiert und der neuen url korrekt anhängt. aber damit ist es nicht getan, da die 4.6.er automatisch und das mod rewrite generell ein base-href tag im head der seite setzt/verlangt - wenn man also ein #top setzen würde, würde sich das auf den basispfad im base-href beziehen und ebenfalls ein neu laden erzwingen.

wenn der komplette link in der url angegeben werden würde, könnte man zumindestens letztes problem lösen. aber wie gesagt: ich komme in den nächsten 2 wochen sehr wahrscheinlich nicht dazu in das forum zu schauen.

gruss stefan.

MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount » Do 15. Dez 2005, 14:37

Weiß jemand, wo ich strtolower() am besten einsetzen kann? Bisher hab ich mir nur das Skript zerschossen. Ich würde gerne sicherstellen, dass alle Zeichen in der URL wirklich in Kleinbuchstaben ausgegeben werden.

@stese: Gute Besserung.

MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount » Di 20. Dez 2005, 14:44


spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » Do 22. Dez 2005, 01:28

Hilfeee!!! :shock:

Ich hab bei mir das ModRewrite eingebaut aus der ZIP-Datei und seitdem hagelt es fehlermeldungen!

Hier die Fehlerliste:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 479

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 484

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 485

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 486

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 487

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 488

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 489

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/conlib/session.inc on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinedomain.com/httpdocs/1/contenido/includes/config.php:108) in /home/httpd/vhosts/meinedomain.com/httpdocs/1/cms/front_content.php on line 135
Ich habe in den betreffenden Dateien erstmal die Zeilen notdürftig auskommentiert und den mod_rewrite abgeschaltet ($cfg['mod_rewrite']['use'] = 0;), da es anscheinend auch Probleme beim darstellen der "Ordner" gibt (404 fehler)...

ich habe contenido 4.6.4 installiert auf einem linux-server und mod_rewrite ist on in php....

weiss jemand rat?

Dirk

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 22. Dez 2005, 10:14

hast du dir die fehlermeldung genau durchgelesen ?

-> output started at .../includes/config.php:108

d.h. die config.php muss mit ?> aufhören... kein leerzeichen oder linebreak darf danach zu finden sein...
*** make your own tools (wishlist :: thx)

spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » Do 22. Dez 2005, 13:18

*niederknieh* :D

Wie einfach die Ursache und wie schmerzhaft die Wirkung....

Danke für deine Hilfe emergence, das war wirklich der Grund... :)

Jetzt funktioniert auch das Mod_rewrite perfekt, bis auf eine Ausnahme: Die Umstellung der Sprachen.

Ich habe hierzu nicht die adittionalnavi verwendet sondern Flaggensymbole, welche bisher folgendermassen verlinkt waren:

Code: Alles auswählen

front_content.php?changelang=1
Nachdem sie mit dem mod_rewrite nicht mehr funktioniert haben, habe ich sie umgestellt auf

Code: Alles auswählen

http://www.domain.de/content/sprache/
Was aber genausowenig nützt.

Wie bekomme ich es jetzt hin dass auch noch die Sprachenumstellung funktioniert?

Gruss
Dirk

spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » Sa 24. Dez 2005, 10:06

Erstmal frohe Weihnachten! :)

*schieb*

Hat keiner eine Lösung parat? Es wäre schon sehr dringend da meine mehrsprachige Seite momentan nur auf deutsch läuft was vorher nicht der Fall war... hat jemand irgendeine idee??

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Sa 24. Dez 2005, 19:36

schreibt mal bitte immer mindestens eine idcat oder idart mit in den link wo es hinweisen soll

Code: Alles auswählen

front_content.php?changelang=1&idcat=1
sollte funktionieren, wenn die 1 eine kategorie ist, ddie einen startartikel hat.

spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » So 25. Dez 2005, 03:55

Hab ich jetzt mal probiert, habe mit allen variablen(idcat, idart, idcatart) herumexperimentiert, auch mit dem synchronisieren - erfolglos...

ohne mod_rewrite haben die umschaltflaggen immer funktioniert... was könnte noch der Grund sein?

Ich habe der einfachheit halber mal die "Flaggenzeile" hier:

Code: Alles auswählen

<a href="front_content.php?changelang=1&idcat=1"><img src="upload/languages/german-flag.gif" alt="Deutsch" height="14" width="21" border="0"></a> <a href="front_content.php?changelang=3&idcat=19"><img src="upload/languages/spain-flag-small.gif" alt="Espa&ntilde;ol" height="14" width="21" border="0"></a> <a href="front_content.php?changelang=2&idcat=1"><img src="upload/languages/british-flag.gif" alt="English" height="14" width="21" border="0"></a>
ich bin jeweils ins artikelmenü gegangen und hab von der Startseitenkategorie die idcat genommen und in die links eingepflegt... trotzdem wird generell die deutsche Seite angezeigt, auch wenn nach Klick aufs fähnchen in der adresszeile steht ..../content/english

Gruss
Dirk

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » So 25. Dez 2005, 11:00

ok, damit hätten wir das erste problem gelöst, dass er die url nicht korrekt umgewandelt hat.

nun schaue mal bitte in deine .htaccess ob die language namen auch genauso wie sie in der url auftauchen dort eingeschrieben sind (groß/kleinschreibung beachten!)

wenn das nicht funktioniert, dann nimm bitte einen garantiert als startartikel deklarierten artikel in die url (also z.b. content/english/welcome.html)

ich habe viele mehrsprachige websites im einsatz und bei mir gibt es dahingehend kein problem. ich kenne allerdings das 4.6.4er paket nicht, da ich es nicht angepasst habe, daher kann ich nicht für die funktionsweise garantieren. mir fehlt momentan auch leider die zeit, ein eigenes paket (mit einigen bugfixes) zu schnüren - job geht halt leider vor.

spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » So 25. Dez 2005, 11:44

Danke Stese,

mit der direkten Verlinkung (welcome.html, bienvenido.html etc...) hat es wunderbar geklappt! Ich schulde dir einen Drink! :D

Gruss
Dirk :)

P.S. Frohe Weihnachten!

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » So 25. Dez 2005, 13:55

Hohoho...

Bild

hat das ganze schon jemand in die 4.6.4 lauffähig integriert?
Ich habe da ein kleines Problem. Die Änderungen von Stese habe ich manuell in die Dateien der Version 4.6.4 integriert und nachdem ich dann in der Config.php das Verzeichnis als beispiel auf "contenido46/cms/" gelegt und modrewrite aktiviert hatte sah leider die URL folgendermaßen aus "www.domain.de/contenido46/cms/contenido46/cms/home/".
Es wurde also das Verzeichnis "contenido46/cms/" zweimal hintereinander eingefügt.

gruß yodatortenboxer

PS: Frohe Weihnachten an alle :-)
Bild
Schöne Grüße von Usedom
Ralf

spandauer13595
Beiträge: 25
Registriert: So 30. Jan 2005, 08:00
Kontaktdaten:

Beitrag von spandauer13595 » So 25. Dez 2005, 20:32

Hallo yodatortenboxer (was fürn geiler name *g*)

Ja bei mir läuft es unter 4.6.4. Dir fehlt einfach ein Slash vor der Pfadangabe so wie ich das sehe. Also "/contenido46/cms/" statt "contenido46/cms/".

Gruss
Dirk

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mo 26. Dez 2005, 10:20

Hohoho...

Bild


Ei perplex, du hattest recht. Ich hatte nur ein "contenido46/cms/" und es nun in "/contenido46/cms/", also mit den Slash davor, geändert. Dadurch war die doppelte anzeige von "www.domain.de/contenido46/cms/contenido46/cms/home/" wieder so wie es sein sollte "www.domain.de/contenido46/cms/home/".

Was so ein kleiner Slash alles bewirken kann...
Nun funktioniert alles soweit bis auf das wechseln der Sprachen, aber da werde ich das Modul dementsprechend wie oben beschrieben anpassen :-)

Danke und ein Frohes Fest noch...

Gruß yodatortenboxer
Bild
Zuletzt geändert von yodatortenboxer am Mo 16. Jan 2006, 13:04, insgesamt 2-mal geändert.
Schöne Grüße von Usedom
Ralf

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mo 26. Dez 2005, 14:31

Hohoho...

Bild

Ich habe die Hauptnavi bei mir in der Contenidoversion 4.6.4 von der idcat zur idcatart angepasst. Der Grund liegt darin dass ich wollte das die URL nicht nur www.domain.de/home/artikel/ sondern www.domain.de/home/artikel/artikelname.html heißt. Weil ich nun nicht auch noch das ganze Modul im Output umschreiben wollte habe ich es mit einer einfachen Funktion umgesetzt.

Dazu habe ich einfach in den Output des Hauptnavimodules vor der Zeile

Code: Alles auswählen

foreach ($navitems as $key => $data) {

    /* 1. Navigation level */
	if (checkCatPermission($data['idcatlang'],$data['public'])) {
folgende Funktion eingefügt

Code: Alles auswählen

// Funktion zum umwandeln der idcat in idcatart
function navidcatart($idcat) {

   global $navitems, $client, $lang, $cfg, $start_cat;

   $db  = new DB_Contenido;
   
   $sql="SELECT
            A.idcat,
            A.idlang,
            A.startidartlang,
            B.idartlang,
            B.idart,
            C.idart,
            C.idcatart
      FROM
            ".$cfg["tab"]["cat_lang"]." AS A,
            ".$cfg["tab"]["art_lang"]." AS B,
            ".$cfg["tab"]["cat_art"]." AS C
      WHERE
            B.idartlang=A.startidartlang AND
            C.idart=B.idart AND
            A.idlang=".$lang." AND
            A.idcat=".$idcat;
   //echo $sql;
   $db->query($sql);
   while ( $db->next_record() ) {
      $navidcatart=$db->f("idcatart");
   }
   return $navidcatart;
}
und dann überall die

Code: Alles auswählen

front_content.php?idcat=".$data['idcat']."
durch die

Code: Alles auswählen

front_content.php?idcatart=".navidcatart($data['idcat'])."
ersetzt.

Funktioniert bei mir einwandfrei in der Contenidoversion 4.6.4 mehrsprachig.

Gruß yodatortenboxer
Bild
Zuletzt geändert von yodatortenboxer am Mi 28. Dez 2005, 23:02, insgesamt 3-mal geändert.
Schöne Grüße von Usedom
Ralf

Gesperrt