Advanced Mod Rewriting Contenido 4.4.4

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Do 7. Jul 2005, 07:21

Kann ich machen, aber...

1. Dauert aber 'n Moment.
2. Weiß nicht, ob sie 100%ig fehlerfrei läuft, weil ich sie bisher nur einmal getestet habe.

Melde mich im Laufe des Tages.

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

Re: Lösungsvergleich von Stese's Bundle und 4.5.3

Beitrag von stese » Do 7. Jul 2005, 07:54

Edanis hat geschrieben:Die Lösung von Stese (4.4.4) hat dem gegenüber den Vorteil dass die auch Artikel berücksichtigt. Der Nachteil wäre nur dass die nicht in Contenido aufgenommen ist, bei Erweiterungen muss erneut angepasst werden.
Ja das ist leider so. Ich habe aber alle meine Änderungen mit einem comment

Code: Alles auswählen

// edit by stese
ausgestattet, so dass man danach Dateiübergreifend suchen kann. die ModRewrite Erweiterung an eine neue Version anzupassen dauert bei mir mittlerweile keine stunde mehr.
Edanis hat geschrieben:Was mir noch aufgefallen ist, in 4.5.3 müssen die Module dafür sorgen die Moderewrite-komforme Links zu bekommen, es müssen also alle Module auf Modrewrite umgeschrieben werden. Die Stese's Lösung lässt die Module dagegen in Ruhe, ändert dafür wie gesagt viel in Contenidodateien.
Genau das war bei mir der tiefere Sinn, da ich eigentlich keine Lust habe jedesmal alle eigenen Module abzuändern bzw. Fremdmodule erstmal zu begreifen wie sie aufgebaut sind um sie zu ändern.
Edanis hat geschrieben:Wie ist aber in beiden Versioen mit GET - Parameter, ist ein Lösungsansatz vorhanden um zB. Seitenangaben der Artikelliste wie "&page=2" in der URL zu verschlüsseln und aufzulösen? Auch das Problem mit "&m=&s=" wurde zum Beispiel bereits angesprochen.
Ist bei meiner Version kein Problem - in der .htaccess bei aufgelösten Pfaden einfach ein [QSA,L] hinten ansetzen statt nur dem [L]. QSA heisst soviel wie QueryStringAppend. Bei mir werden alle Parameter die nicht zu Contenido und zur Artikel-/Kategoriebestimmung gehören automatisch als Argumente hinten an die .html angefügt.

andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej » Do 7. Jul 2005, 12:49

@ronaldo
Danke wäre echt nett.

@stese
Oder du, kennst Dich ja mit deiner ERweiterung aus. Wäre echt fein, wenn Du für die Version 4.4.5 das ganze einbauen könntest. Danke im voraus.

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

Beitrag von stese » Do 7. Jul 2005, 13:01

also in der 4.4.5 werde ich es so schnell nicht schaffen, weil ich die gar nicht habe und ich diese auch nicht nutzen werde - ich hab sie in der 4.5.3 beta vorliegen und dieses bundle werde ich hier auch veröffentlichen ... wenn mir die zeit bleibt werde ich auch vorn die manuelle installationsroutine mal abändern. aber termine versprechen kann ich nicht, da es momentan ziemlich stressig zugeht, dass ihc mich nicht um sowas kümmern kann.

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Re: Lösungsvergleich von Stese's Bundle und 4.5.3

Beitrag von Edanis » Do 7. Jul 2005, 13:05

Hallo Stese, so früh schon (oder so spät noch ?) auf jeden Fall so schnell mit der Antwort, danke :)
stese hat geschrieben:Ja das ist leider so. Ich habe aber alle meine Änderungen mit einem comment

Code: Alles auswählen

// edit by stese
ausgestattet, so dass man danach Dateiübergreifend suchen kann.
Ist eine gure Idee die das Problem natürlich reduziert :)
stese hat geschrieben:
Edanis hat geschrieben:Wie ist aber in beiden Versioen mit GET - Parameter, ist ein Lösungsansatz vorhanden um zB. Seitenangaben der Artikelliste wie "&page=2" in der URL zu verschlüsseln und aufzulösen? Auch das Problem mit "&m=&s=" wurde zum Beispiel bereits angesprochen.
Ist bei meiner Version kein Problem - in der .htaccess bei aufgelösten Pfaden einfach ein [QSA,L] hinten ansetzen statt nur dem [L]. QSA heisst soviel wie QueryStringAppend. Bei mir werden alle Parameter die nicht zu Contenido und zur Artikel-/Kategoriebestimmung gehören automatisch als Argumente hinten an die .html angefügt.
Danke für die Erklärng, ich hatte mich schon gefragt was QSA wohl bedeuten mag und es ist mir schon aufgefallen dass es Links wie
aufgebaut werden die nach
umgeleitet werden, heute Abend werde ich mich damit näher beschäftigen, jedesmal bekomme ich seit gesten auf einmal keine 404Fehler darauf.

Aber wie ist es in 4.5.x, ist etwas vorgesehen worden um Folgeartikel anzusprechen und GET Parameter zu übermitteln, ich möchte ungern das Rad nochmal erfinden.

Gruss, Edward

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

Re: Lösungsvergleich von Stese's Bundle und 4.5.3

Beitrag von stese » Do 7. Jul 2005, 13:29

Edanis hat geschrieben:Aber wie ist es in 4.5.x, ist etwas vorgesehen worden um Folgeartikel anzusprechen und GET Parameter zu übermitteln, ich möchte ungern das Rad nochmal erfinden.
Irgendwie verstehe ich den Satz nicht. Meine Erweiterung erkennt alle Parameter die nicht zu Contenido direkt gehören, um die URL aufzulösen. Alle diese gefundenen Parameter die per GET an der URL in deinen Modulen angefügt werden, werden ebenfalls automatisch in die ModRewrite URLs übernommen (egal ob 4.4.4 oder 4.5.x, da das Versionsunabhängig in meinen Functions bzw der ModRewrite Klasse geschieht).

z.b. aus

Code: Alles auswählen

front_content.php?idcat=32&idart=43&page=34
wird dann bei mir automatisch

Code: Alles auswählen

/Aktuelles/Sport/Handball.html?page=34
jetzt muss man nur noch in der .htaccess dieses [QSA] mit reinbringen, dass er auch die Parameter an die front_content.php korrekt übergibt. das wars dann schon und du kannst ganz normal in deinem Modul mittels $_GET['page'] auf diesen Wert zugreifen.

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Do 7. Jul 2005, 15:32

Package contains Contenido 4.4.5 ( http://www.contenido.org/ )
+ copy article ( http://contenido.org/forum/viewtopic.php?t=7150 )
+ advanced mod rewrite ( http://contenido.org/forum/viewtopic.php?p=51253 )
+ advanced mod rewrite database updater ( http://contenido.org/forum/viewtopic.ph ... t=90#50770 )
+ some more file upload fields

Attention:
- package is not testet
- you have to
# change some paths ( search for xampp )
# add your database settings ( contenido/contenido/includes/config.php )

Thanks to
* four for business AG ( http://www.4fb.de/ )
* alexd
* stese aka Stefan Seifarth
* contenido community ( http://www.contenido.org/forum/ )


and now take this: contenido4.4.5_copy_art--mod-rewr.zip ;-)

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Re: Lösungsvergleich von Stese's Bundle und 4.5.3

Beitrag von Edanis » Do 7. Jul 2005, 19:45

stese hat geschrieben:
Edanis hat geschrieben:Aber wie ist es in 4.5.x, ist etwas vorgesehen worden um Folgeartikel anzusprechen und GET Parameter zu übermitteln, ich möchte ungern das Rad nochmal erfinden.
Irgendwie verstehe ich den Satz nicht. Meine Erweiterung erkennt alle Parameter die nicht zu Contenido direkt gehören, um die URL aufzulösen. Alle diese gefundenen Parameter die per GET an der URL in deinen Modulen angefügt werden, werden ebenfalls automatisch in die ModRewrite URLs übernommen (egal ob 4.4.4 oder 4.5.x, da das Versionsunabhängig in meinen Functions bzw der ModRewrite Klasse geschieht).
Diesmal meine ich nicht Deine Erweiterung, die ist von Grund aus artikelfähig, sondern ob die Standartunterstützung die in 4.5.x eingebaut wurde auch Folgeartikel ünterstützt. Das was ich bisher gesehen habe scheint nur Kategorienamen auflösen und demnach nur Startartikel auffinden zu können. Ob ich es richtig gesehen habe ist meine Frage :roll:

Zum Verdeutlichen. Für modrewrite ist die Bibliothek functions.pathresolver.php vorgesehen, die beiden ersten Funktionen prResolvePathViaURLNames und prResolvePathViaCategoryNames lösen den durch die dritte Funktion prCreateURLNameLocationString aufgebauten Pfad auf. Und diese erwartet die Artikelangabe in keiner Form. Zum Testen setze ich einfach im Frontendscript cms/front_content.php dieses Code (irgendwo um die Zeile 360):

Code: Alles auswählen

echo "<hr>";
echo "<hr>";
$cat_str = "";
prCreateURLNameLocationString($idcat, "/", $cat_str, true, "", 0, 0, true, true);
echo "?path=$cat_str";
echo "<hr>";
Wenn ich nun zB in Punkt 1.2 navigiere bekome ich '?path=Hauptnavigation/Punkt-1/Punkt-1.2' oben auf der Seite ausgegeben. Wenn ich in eins der Newsnachrichten gehe bekomme ich folgendes '?path=News'.

Navigiere ich nun auf die Startseite und hänge an front_content.php eine der obigen ausgaben, zB so

Code: Alles auswählen

http://localhost/contenido-4.5.3/cms/front_content.php?path=Hauptnavigation/Punkt-1/Punkt-1.2
spring der Script zum Punkt 1.2 hinein. Auf

Code: Alles auswählen

http://localhost/contenido-4.5.3/cms/front_content.php?path=News
reagiert er mit dem Newsletterartikel (http://localhost/contenido-4.5.3/cms/fr ... Newsletter) aber das ist wahrscheinlich wegen falscher Webnamenauswahl für Kategorien.

Nun kann ich die folgende .htacess schreiben (ein Alpha, bitte testen)

Code: Alles auswählen

#
# File E:\Projekte\WebSeiten\LocalWeb\contenido-4.5.3\.htaccess
# URL  http://localhost/contenido-4.5.3/.htaccess
#

RewriteEngine On
RewriteBase /contenido-4.5.3/

RewriteRule ^cms/index.html$ cms/front_content.php [L]
RewriteRule ^cms/(.*)/index.html$ cms/front_content.php?path=$1 [L]
Gebe ich nun die Adresse

Code: Alles auswählen

http://localhost/contenido-4.5.3/cms/Hauptnavigation/Punkt-1/Punkt-1.2/index.html
hängt der Apache alles was zwischen cms/ und /index.html als ?path=.... an, es wird also nach

Code: Alles auswählen

http://localhost/contenido-4.5.3/cms/front_content.php?path=Hauptnavigation/Punkt-1/Punkt-1.2
umgeleitet.

Nur, wie spreche ich aber Artikel einer Kategorie an, die keine Startartikel sind wenn die Artikelangabe nicht interpretiert wird? Einfach mit ?idart anzuhängen würde genau das zerstören was modrewrite reparieren soll - Googlefreundlichkeit. Deshalb meine Frage ob ich irgendwas übersehen habe.

Gruss, Edward

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 7. Jul 2005, 20:09

Naja ganz einfach: wir haben bei vielen Installationen noch eine Regel in der Form

index-<kategorie>-<artikel>.html

Zusammen mit dem Pathresolver erhält man dann z.b. einen link in der Art http://www.dorma.com/en/newspress/newsp ... -2157.html

andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej » Do 7. Jul 2005, 20:42

@ronaldo
Vielen Dank für deine Constribution, super Arbeit.
Habe jedoch ein kleines Problem. Aus meinen dynamischen PHP Dateien, werden keine .html Datei erstellt. Ich teste das ganze mit xampp, lokal. modrewrite wurde unter xampp aktiviert.

In der config.php von Contenido, wurde auch die Anweisung auf 1 gestellt. Dein Script für die Datenbank wurde auch ausgeführt.

Gibt es da jetzt einen Trick?

Ach ja und der tinyMCE läuft mit deiner Constribution leider auch nicht.

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Fr 8. Jul 2005, 01:40

@ronaldo Vielen Dank auch Dir. es läuft lokal auf meinem System ohne Problemme, bis auf eins:

Leider habe ich immer noch ein Problemchen, das auch im Originalbundle vorhanden ist, Frage daher auch an Stese wie kann es dazu kommen dass wenn ich zB auf den ersten Newseintrag klicke dieses Link bekomme:

Code: Alles auswählen

http://localhost/contenido-4.4.5/cms/CMS-Contenido.html?m=&s=
Dieses öffnet die Startseite. Wenn ich aber manuell 'News/' einschiebe wird der richtige Artikel angezeigt:

Code: Alles auswählen

http://localhost/contenido-4.4.5/cms/News/CMS-Contenido.html?m=&s=
Die Newskategorie ist abgespeichert, auch der MRUpdater meint "0 Kategorien ohne websafename".

@timo Ja das könnte hinhauen, danke :)

Edanis

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Fr 8. Jul 2005, 07:31

@Edanis, jetzt fällt's mir erst auf, dass das gar nicht funktioniert... :cry:
Dann leiten wir die Frage doch mal dezent an Stese weiter :!: Stese, bitte kommen...

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Fr 8. Jul 2005, 18:49

Habs herausgefunden :)
war auch nicht schwer. und ist auch kein Bug sondern Feature ;)

Die Newskategorie ist nämmlich eine Startkategorie (eine mit Level 0). Davon gibt es drei Hauptnavigation, News und Hilfsnavigation Und die Ausgabe von Startkategorien wurde per Default ausgeschaltet.

Die Moderewrite-URL bildet die Funktion build_new_url der Klasse Moderewrite (class.modrewrite.php, Zeile 407) Und ob die nun Startkategorien hinzunimmt oder nicht entscheidet die Einstelung die man per

Code: Alles auswählen

/* Start TreeLocation vrom Root Tree (set to 1) or get location from first category (set to 0) */
$cfg['mod_rewrite']['startfromroot'] = 0;
umschaltet. Die Stelle findt sich auf der Zeile 115 von config.php. Bei der Angabe 1 Beginnt der Pfad für die Newslinks mit 'News/' und findet den richtigen Artikel. Nebenwirkungen habe ich bisher keine beobachten können ;)

Gruss, Edward

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

Beitrag von stese » Sa 9. Jul 2005, 19:56

äh ja genau - problem gelöst ;)

das feature war notwendig, weil ich mehrere projekte hatte, die eine andere Baumstruktur aufwiesen.

aber ich hab noch einen anderen bug gefunden, welcher verursacht, dass wenn 2 verschachtelte kategorien gleich heissen eine 50/50 chance besteht dass er die falsche kategorie auswählt.

bugfix:
öffnen der includes/functions.modrewrite.php

suche funktion mr_get_idcat

suche folgende zeile:

Code: Alles auswählen

		// get the parent id from first websafe name
		$sql = "SELECT c.parentid
				FROM " . $cfg["tab"]["cat"] . " c 
				LEFT JOIN " . $cfg["tab"]["cat_lang"] . " cl 
				ON c.idcat = cl.idcat
				WHERE cl.websafename = '" . $arr_catnames[0] . "'";
und durch diese query ersetzen:

Code: Alles auswählen

		// get the parent id from first websafe name
		$sql = "SELECT c.parentid
				FROM " . $cfg["tab"]["cat"] . " c 
				LEFT JOIN " . $cfg["tab"]["cat_lang"] . " cl 
				ON c.idcat = cl.idcat,
				" . $cfg["tab"]["cat_tree"] . " ct
				WHERE cl.websafename = '" . $arr_catnames[0] . "'
				AND ct.idcat = c.idcat
				ORDER BY ct.level ASC LIMIT 1";
Zuletzt geändert von stese am Fr 15. Jul 2005, 10:23, insgesamt 1-mal geändert.

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Do 14. Jul 2005, 10:17

... Mini-Änderungen -> Nochmal zum Download ...

Package contains Contenido 4.4.5 ( http://www.contenido.org/ )
+ copy article ( http://contenido.org/forum/viewtopic.php?t=7150 )
+ advanced mod rewrite ( http://contenido.org/forum/viewtopic.php?p=51253 )
+ advanced mod rewrite database updater ( http://contenido.org/forum/viewtopic.ph ... t=90#50770 )
+ some more file upload fields

Changes
- Steses Änderung
- Readme.txt (SQL-Statement für copy article)

download: contenido4.4.5_copy_art--mod-rewr_pl1.zip

Gesperrt