Plugin Advanced Mod Rewrite für Contenido 4.8.x

CharlyBrown
Beiträge: 77
Registriert: Sa 13. Feb 2010, 16:07
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von CharlyBrown » Fr 7. Jun 2013, 06:51

Hallo da draußen....

auch ich habe das AMR Plugin öfters im Einsatz und möchte zunächst mal Danke sagen, für alle die es pflegen und weiterentwickeln.

Ich möchte, egal in wieviel Ebenen meine Seite geschachtelt ist, ein extrem flache Linkstruktur erreichen. Im Grunde soll die ausgeworfene URL immer so aussehen:

http://www.domain.de/mein-artikelname-alias.html

Der Artikelname kommt dann aus den Eigenschaften des Artikels (Alias).

Also bei den Einstellungen im Plugin habe ich bei "Artikelname an URLs anhängen" den Haken gesetzt. Ich würde sowas brauchen wie:

"Artikelname an URLs anhängen und Kategorienamen ignorieren"

Wie krieg ich das hin? Danke für Eure Tipps

Frank

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Mo 10. Jun 2013, 21:47

Hallo Frank,

das AMR-Plugin ist so konzipiert, dass es die Kategoriestruktur in den generierten URLs abbildet und ankommende Clean-URLs entsprechend wieder aufzulösen versucht.

Willst du das ohne Kategoriepfade generieren, so musst du in der Datei "contenido/classes/UrlBuilder/Contenido_UrlBuilder_MR.class.php" die Funktion _buildUrl() anpassen. Diese Funktion generiert die Clean-URLs für das AMR-Plugin.

Dann musst du dafür sorgen, dass ankommende Clean-URLs wieder korrekt aufgelöst werden. Das macht in der Datei "contenido/plugins/mod_rewrite/classes/class.modrewritecontroller.php" die Funktion _setPathresolverSetting(). Hier sollte die Kategorie nicht ermittelt werden. Eventuell ist es auch nötig, die Funktion _setIdart() anzupassen.

Bedenke aber, dass durch den Wegfall der Kategoriepfade in der URL das Risiko redundanter URLs aufgrund gleicher Artikelaliase erhöht wird. Vielleicht wäre es dann besser, die Id der Artikel in die generierte URL einzubauen, z. B. /impressum.2.html, damit hast du immer die Id in der URL und kannst einfach die Artikelid aus ankommenden Clean-Urls exrahieren...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Do 18. Jul 2013, 13:11

Ich habe gerade genau das gegenteilige Problem, nämlich dass AMR bei einem ganz bestimmten Menüpunkt keinen Menüpfad erzeugt, sondern nur eine domain.de/index.html daraus macht.
Es betrifft aber nur genau diesen Menüpunkt, egal in welcher Reihenfolge ich ihn im Menü setze.
Das Menüprogramm gibt mit die korrekte idcat aus und scheinbar ist alles gleich wie in den anderen Menüpunkten (teils auch mit weiteren Untermenüs), nur wird kein Pfad aufgebaut.

Ein anderes Menümodul bildet diesen Menüpunkt korrekt ab, aber das kann ich nicht damit ersetzen.
Wo könnte denn der Fehler sein?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Spider IT » Do 18. Jul 2013, 13:55

Hallo Frank,

wenn AMR ein Link zur Startseite generiert, liegt das meistens daran, dass in der Kategorie kein Startartikel online ist.

Gruß
René

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Do 18. Jul 2013, 18:17

Hallo René,

mag sonst so sein, aber in der Kategorie ist ja ein Startartikel.
Und wie gesagt, das andere Menümodul (Sitemap-Modul vermute ich), generiert ja den richtigen Link.

Man könnte dann denken, dass es klar am Menümodul liegen muss, aber dieses produziert auch die richtigen Links, bis auf genau diese eine Kategorie.

Viele Grüße,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Spider IT » Do 18. Jul 2013, 20:35

Und hast du dir den Link schonmal ohne AMR angesehen?

Gruß
René

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Do 18. Jul 2013, 22:36

Folgende Ursachen kann es noch geben:

* Die Kategorie ist eine Hauptkategorie, Hauptkategorien werden in der Regel ausgelassen.

* Zur der Kategorie fehlen Angaben wie "urlname" und/oder "urlpath" (siehe Tabelle con_cat_lang)

* Die Kategorie ist offline/geschützt

* Der Startartikel ist offline

* Irgendein Modul leert kurz zuvor den Ausgabebuffer, so dass das AMR- Plugin keine HTML Ausgabe zum umwandeln der URLs bekommt


Wenn nichts davon zutrifft, würde ich vorschlagen, den Debugger des Plugins zu aktivieren und die Generierung dieser einen URL zu prüfen...

Der Debugger lässt sich in "contenido/plugins/mod_rewrite/includes/config.plugin.php" an folgender Stelle aktivieren:

Code: Alles auswählen

// set debug configuration
$options = array(
    'enable'                    => true, // <<-- hier auf true setzen
    'ressource_urls'            => array('/contenido/logs/errorlog.txt'),
    'dump_super_globals'        => array('$_GET', '$_POST', '$_COOKIE', '$_SESSION'),
    'ignore_empty_superglobals' => true
);
Dann wird im Frontend oben links ein Debug-Layer ausgebenen, das kann man sich dann genauer ansehen...

Gruß
xmurrrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 09:28

Spider IT hat geschrieben:Und hast du dir den Link schonmal ohne AMR angesehen?
Ja, funktioniert dann einwandfrei.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 10:05

xmurrix hat geschrieben:Folgende Ursachen kann es noch geben:

* Die Kategorie ist eine Hauptkategorie, Hauptkategorien werden in der Regel ausgelassen.
Nein, es ist wie die anderen auch in der gleichen Ebene.
* Zur der Kategorie fehlen Angaben wie "urlname" und/oder "urlpath" (siehe Tabelle con_cat_lang)
Hab nachgeschaut, die sind da. Und das müssen sie ja auch, weil es mit dem anderen Menümodul einwandfrei funktioniert.
* Die Kategorie ist offline/geschützt
Nein, es wird ja angezeigt.
* Der Startartikel ist offline
Auch nicht, funktioniert ja, wenn man es über front_copntent.php aufruft oder im anderen Menü.
* Irgendein Modul leert kurz zuvor den Ausgabebuffer, so dass das AMR- Plugin keine HTML Ausgabe zum umwandeln der URLs bekommt
Es ist das Modul "Hauptnavigation" von Jan Lengowski und Andreas Lindner. Da wird ja die HTML-Ausgabe gesammelt und erst danach der Puffer beendet (ob_end_clean), folglich müssten entweder gar nichts funktionieren oder alles.

Ich hatte schon den Verdacht, dass die nachfolgenden inaktiven Kategorien eine Rolle spielen könnten. Ich weiß nicht ob die gelöscht werden könnten, aber sowohl die Kategorien als auch die Artikel sind offline geschaltet. Ich hatte daher mal genau die betroffene Menükategorie verschoben, damit sie nicht mehr die letzte angezeigte Kategorie im Menü ist, aber auch da bleibt es hartnäckig dabei, dass genau diese Kategorie mit diesem Menümodul keinen Pfad bekommt.
In der Datenbank ist der Pfad aber vorhanden und hat keine Auffälligkeiten.
Wenn nichts davon zutrifft, würde ich vorschlagen, den Debugger des Plugins zu aktivieren und die Generierung dieser einen URL zu prüfen...
Hab ich eben gemacht und "chunksetprettyurlparts() ist ein leeres Array.
In der Tabelle sind alle Daten vorhanden, diese Abfrage hier findet aber scheints nichts:

Code: Alles auswählen

ModRewriteUrlStack->_chunkSetPrettyUrlParts() $sql = SELECT
        al.idartlang, al.idart, al.idlang as lang, al.urlname, cl.idcatlang, cl.idcat,
        cl.urlpath, ca.idcatart
FROM
        con_art_lang AS al, con_cat_lang AS cl, con_cat_art AS ca
WHERE
        al.idart = ca.idart AND
        ca.idcat = cl.idcat AND
        al.idlang = cl.idlang AND
        ( (cl.idcat = 1 AND cl.idlang = 1 AND cl.startidartlang = al.idartlang) OR 
(cl.idcat = 132 AND cl.idlang = 1 AND cl.startidartlang = al.idartlang) )
Daher kommt dann das:

Code: Alles auswählen

Array (
    [in] => Array (
            [idcat] => 132
            [lang] => 1
        )

    [out] => /index.html
)
und folglich das:

Code: Alles auswählen

Array (
    [in] => front_content.php?idcat=132
    [out] => /index.html
)
In der Datenbank sind aber alle Daten vorhanden, kann es sein, dass hier der Server vielleicht genau an dieser Stelle das MySQL abbricht, weil die idart=863 ziemlich hoch ist?
Könnte ja sein, dass der Server zu knapp konfiguriert ist (kann man aber einrichten, wenn man wüsste wo und ob es das ist).

Viele Grüße
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 10:28

Wenn ich die SQL direkt in der Datenbank ausführe, gibt es auch kein Ergebnis.
Die startidlang ist 0 und die ist bei mehreren Einträgen null (nicht NULL).
Folglich kann der Vergleich cl.startidartlang = al.idartlang nicht stimmen, weil idartlang=882 ist.

Ich kann zwar jetzt provisorisch die startidlang von Hand in die Tabelle con_cat_lang eintragen aber dass dieser Wert dort fehlt, sollte eigentlich nicht der Fall sein.
Könnte es sein, dass dieser Fehler damals auf dem alten Hostingplatz zustande kam, weil dort deren Server das Programm abgebrochen hat, weil die Laufzeit zu kurz eingestellt war?
Früher war der Hoster nämlich 1&1 und da ist ja bekannt, dass oft das Programm mitten drin abgebrochen wird, weil die Ressourcen zu knapp eingestellt sind.
Das war auch der Hauptgrund des Umzuges (abgesehen von der ultra lahmen Antwortzeit) zu einem richtigen Hoster, weil ich im Backend schon gar nicht mehr arbeiten konnte.
Und das ist auch nicht das erste Mal der Grund für einen Umzug von 1&1 zu richtigen Hostern, das ist eher häufig so.
Könnte das sein, dass daher die Daten in den Tabellen falsch sind?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 10:59

Hab festgestellt, dass auch bei neuem Artikel erstellen der Eintrag von startidartlang bei 0 bleibt.
Das sollte doch so sicher nicht sein?

Hab hier einen neuen Thread aufgemacht, weil das eigentlich nicht mehr ursächlich das AMR betrifft, oder?
http://forum.contenido.org/viewtopic.php?f=62&t=33741
Zuletzt geändert von Faar am Fr 19. Jul 2013, 11:08, insgesamt 1-mal geändert.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Fr 19. Jul 2013, 11:07

Wenn bei dir einige Einträge den Wert startidartlang = 0 haben, dann liegt es wohl daran, dass die CONTENIDO Installation früher lief oder immer noch mit der Einstellung läuft:

Code: Alles auswählen

$cfg["is_start_compatible"] = true;
CONTENIDO hat diese alte Einstellung lange unterstützt, mittlerweile auch nicht mehr. Auch das AMR-Plugin unterstützt diese Einstellung nicht. Es gibt einen Beitrag, in der beschrieben ist, wie man das umstellen kann:
http://forum.contenido.org/viewtopic.php?f=64&t=32530

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 11:11

xmurrix hat geschrieben:Wenn bei dir einige Einträge den Wert startidartlang = 0 haben, dann liegt es wohl daran, dass die CONTENIDO Installation früher lief oder immer noch mit der Einstellung läuft:

Code: Alles auswählen

$cfg["is_start_compatible"] = true;
Moin,

die Installation läuft scheints seit 2006, zumindest sind aus der Zeit einige "created" Einträge.
Inzwischen gab es wohl einige Updates und ich habe es letztes Jahr auf 4.8.18 geupdatet.
Gibt es da noch mehr solcher Altlasten, die zu bereinigen wären?

Danke und viele Grüße,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix » Fr 19. Jul 2013, 11:23

Faar hat geschrieben:...Gibt es da noch mehr solcher Altlasten, die zu bereinigen wären?...
Nein, das sollte alles sein.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von Faar » Fr 19. Jul 2013, 11:42

So, jetzt geht die Seite nicht mehr richtig.

Ich habe das mit der is_start Bereinigungs-Function ausprobiert.
Diese hatte nur einige startidartlang von 0 auf die richtige ID umgestellt aber nicht alle.
Dafür aber ging dann die Seite nicht, wegen XML-Fehler.
Zum Glück, dachte ich, habe ich vorher eine Datenbank-Sicherung gemacht.
Aber Glück ist sehr flüchtig, denn in der Hauptkategorie war gar nicht die Startseite, sondern ein Google-XML-Sitemap Modul-Template.
Die Startseite ist wohl eine Unterkategorie.
Trotz wieder einlesens der alten Tabellen bleibt dieser XML-Fehler, wenn man die Domain aufruft.
Die Unterseiten gehen noch.
Eine Umleitung direkt auf die Unterseite, die wohl die Startseite sein soll, funktioniert auch nicht: Fehler 404.

Dafür läuft jetzt etwas anderes, was zuvor gar nicht aufgetaucht ist.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Gesperrt