[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • einfaches URL-Rewrite als AddOn in Redaxo5
Seite 1 von 1

einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 23. Mai 2017, 13:10
von w.busch
Ich versuche, einen eigenen kompakten URL-Rewriter zu bauen. Nachdem ich einen solchen für Redaxo 4 in Betrieb hatte, komme ich beim Umbau für Redaxo 5 nicht weiter.

Im Frontend wird zwar der gewünschte URL im Adressfeld des Browsers angezeigt, sowohl nach einem Klick auf "Artikel anzeigen" im Backend als auch im Falle von Links. Angezeigt wird aber immer nur der Inhalt der Startseite, unabhängig von dem Artikel, bei dem ich im Backend "Artikel anzeigen" anklicke. Im Seiten-Template liefert $this->getArticleId() tatsächlich immer den Wert 1 für die Startseite.

Der gewünschte URL ist von dieser Form: /home/kategorie1/kategorie2/.../artikel.html

Es folgen die relevanten Programmausschnitte in boot.php, lib/class.my_urlrewriter.php, .htaccess[/i].

Code: Alles auswählen

rex_extension::register('URL_REWRITE',array('myUrlRewriter','rewrite'));

Code: Alles auswählen

class myUrlRewriter {
   function rewrite($params) {
      $arr_params=$params->getParams();
      $art_id=$arr_params[id];
      $article=rex_article::get($art_id);
      $url="";
      if(rex::isBackend()):
        if(strpos($_SERVER['REQUEST_URI'],"?page=content")>0):
          $url=set_art_url($article);  // setzt und liefert den URL (als Spaltenwert in rex_article)
        endif;
        if(empty($url)):
          $url="/".$article->getValue("art_custom_url");
          #   dieser rex_article-Parameter enthaelt den gewuenschten URL
          endif;
        endif;
      return $url;
      }
   }

Code: Alles auswählen

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^redaxo/.*
RewriteCond %{REQUEST_URI} !^media/.*
RewriteCond %{REQUEST_URI} !^google(.*).html*
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 14. Jun 2017, 09:48
von w.busch
Schade, schon mehr als 100 Blicke auf meine Frage, aber keinerlei Antwort!

Weiß keiner der Experten einen Rat? Oder habe ich nur etwas Offensichtliches übersehen?

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 14. Jun 2017, 17:38
von NorbertK
Hallo Wolfgang,

warum nimmst Du nicht X-Core?

Schon Seo42 war klasse, aber X-Core gefällt mir noch besser!

Also wenn es was Fertiges gibt das so einfach zu integrieren ist sehe ich keinen Sinn darin sich selbst zu plagen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 15. Jun 2017, 09:46
von ds
Oder auch yrewrite von Yakamara.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 22. Jun 2017, 18:57
von w.busch
yrewrite ist natürlich bekannt. Ich habe aber Interesse daran, die Rewrite-Aufgabe auch selbst zu lösen. Nehmt es als eine Art Entdeckerehrgeiz, verbunden mit der Suche nach Erkenntnisgewinn.
Es kann doch eigentlich nicht so schwer sein. Zumindest waren die ersten AddOns von Markus Staab (Redaxo 4) relativ einfach zu lesen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 28. Jun 2017, 17:56
von w.busch
Vielleicht noch eine Ergänzung:
Wenn ich in der function rewrite($params) $_SERVER["REQUEST_URI"] nutze und als URL zurückgebe, liefert rex_getUrl() auch den richtigen URL.
Und noch einmal die wichtigste Detailfrage:
Liegt es an der RewriteRule, dass ich immer nur die Startseite (artcle_id=1) angezeigt bekomme?

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 4. Jul 2017, 19:51
von w.busch
Mit einer umfangreichen RewriteRule-Liste - eine Art pathlist - kommt man tatsächlich zum Ziel. Ist aber umständlich und aus Performance-Gründen vermutlich auch nicht so gut...

Stattdessen hilft eine zusätzliche Erweiterung des Extension Point FE_OUTPUT weiter. Jemand interessiert? Ich könnte ein Beispiel-AddOn bereitstellen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 6. Jul 2017, 09:26
von Ingo
w.busch hat geschrieben:Jemand interessiert? Ich könnte ein Beispiel-AddOn bereitstellen.
Ja klar. Warum einen gut supporteten und dokumentierten Rewriter von Yakamara nehmen, wenn ich auch was obskures selbstgebasteltes nutzen kann? Meine Kunden bezahlen mich schließlich nicht für ein flexibles und stabiles System... :wink:

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 13. Jul 2017, 14:50
von w.busch
Nachdem ich über 2300 Zugriffe auf meine Anfrage zähle und Interessierte mich auch persönlich kontaktiert haben, habe ich meine Lösung als AddOn veröffentlicht (Name: Einfaches URL-Rewrite, key: url_simple_rewrite).

Das AddOn enthält eine genaue Beschreibung der Funktionsweise eines URL-Rewriters, und es kann als Bauplan für Praxis-nähere URL-Rewriter genommen werden. Tatsächlich ist auf dieser Basis die Migration meines unter Redaxo 4 laufenden Rewriters nach Redaxo 5 fast fertig. Werde ich in Kürze auch hochladen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 25. Aug 2017, 19:28
von w.busch
Ich bin etwas unsicher, ob mein (exemplarischer) URL-Rewriter allen Anforderungen genügt.

In Templates und Modulen stehen zwar Artikel-Id, Sprach-Id etc. wie gewohnt im Artikel-Objekt $this zur Verfügung. Die Funktionen rex_article::getCurrentId() und rex_clang::getCurrentId() liefern aber Daten des Site-Startartikels. Ich sehe im Moment nicht, wie ich das hinbekommen könnte. Als Ersatz biete ich vorsichtshalber Funktionen my_article::getCurrentId() und my_clang::getCurrentId() an.

Ist das ein schwerwiegendes Manko?

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 1. Okt 2017, 12:05
von w.busch
Ich habe das AddOn inzwischen so ergänzt, dass die Funktionen rex_article::getCurrentId() und rex_clang::getCurrentId() die Daten des aktuellen Artikels liefern. Musste nur die entsprechenden Properties der beiden Klassen neu setzen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 1. Okt 2017, 14:53
von ds
Ich würde dir empfehlen, im ersten Schritt das AddOn bei GitHub anzulegen. Und wenn es bereits produktionsfertig ist, kannst es anschließend noch im Installer veröffentlichen, das bedeutet, im Addonverzeichnis auf redaxo.org hochzuladen.

GitHub übrigens deshalb, weil dort alle Möglichkeiten gegeben sind, um das AddOn zu finden, zu begutachten, (gemeinsam) weiterzuentwickeln, zu testen und runterzuladen. Kaum jemand hat interesse, irgendwelche unversionierten Zip-Files irgendwo runterzuladen oder per Mail zu erhalten. Überspitzt gesagt gilt: Was nicht bei GitHub (oder ähnlichen Anbietern wie Gitlab oder Bitbucket) vorliegt, existiert nicht (in der Open-Source-Welt).

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 15. Okt 2017, 13:58
von w.busch
Hallo Dirk,

> ...produktionsfertig ...
das AddOn schien mir schon genügend weit entwickelt, um es gleich ins Redaxo-Addon-Verzeichnis hochzuladen. Habe allerdings anschließend noch die eine oder andere Korrektur ergänzt und erneut hochgeladen. Hätte ich vielleicht besser von Anfang an versioniert gemacht.

> im ersten Schritt das AddOn bei GitHub anlegen...
Warum der Umweg über GitHub? Habe ich nicht verstanden. Das AddOn hat nur für Redaxo einen Sinn; bei GitHub ist es vermutlich unter ganz vielen Themen einfach unsichtbar. AddOns für Redaxo 4 habe ich auch immer einfach hochgeladen.
> auf GitHub weiterzuentwickeln, zu testen und runterzuladen...
Schauen die Software-Entwickler nicht auch im Redaxo-Forum nach Reaktionen, Fehlermeldungen, Erweiterungswünschen?
Welche Rolle für Entwickler spielen die "friends of redaxo"?
Ist es erwünscht/geduldet, wenn man ein neues AddOn im Forum ankündigt?

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 15. Okt 2017, 18:49
von ds
Hey Wolfgang,
Warum der Umweg über GitHub?
GitHub soll gar kein Umweg sein, sondern stattdessen der eine wichtige Ort, an dem entwickelt wird. Es ist natürlich keine Pflicht, dort zu entwickeln, aber für mein Gefühl kriegen Projekte, deren Code nicht sichtbar und über typische Werkzeuge (Pull Requests, Issues, Tags, Suche und die vielen anderen Features, die GitHub anbietet) bearbeitbar ist, keinerlei Aufmerksamkeit. Ich wollte dir deshalb empfehlen, deinen Code dort zu entwickeln, aber das war wirklich nur ein Vorschlag.
Schauen die Software-Entwickler nicht auch im Redaxo-Forum nach Reaktionen, Fehlermeldungen, Erweiterungswünschen?
Manche sicherlich, aber im Laufe der Jahre hat die Relevanz des Forums deutlich abgenommen. Viel Austausch passiert im Slack, und die Entwicklung findet quasi vollständig bei GitHub statt.
Welche Rolle für Entwickler spielen die "friends of redaxo"?
FOR bringt ganz viele Vorteile für Entwicklende und für die Community: Die Motivation war, Projekte langfristig abzusichern, so dass wichtige AddOns nicht in Gefahr laufen, nicht mehr gepflegt zu werden. Aber auch die Qualität der Projekte soll dadurch gesteigert werden, dass nicht nur eine Person daran entwickelt, sondern die Gemeinschaft. Dadurch können sich Einzelne auf die Bereiche konzentrieren, die ihnen Spaß machen, und generell sorgt die Abstimmung und der Austausch für mehr Spaß und Motivation.
Ist es erwünscht/geduldet, wenn man ein neues AddOn im Forum ankündigt?
Ich denke schon, klar. Nicht nur im Forum, gerne auch überall anders. Ich kann immer den Slack-Chat empfehlen, dort sind inzwischen knapp 300 Leute.

Viele Grüße!
_Dirk

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 17. Okt 2017, 18:45
von w.busch
Hallo Dirk,
danke für die Hinweise. Ich habe die Beschreibung des AddOn url_simple_rewrite noch einmal überarbeitet und versuche mich daran, nun alles nach GitHub zu transportieren. Bin jetzt dort angemeldet. GitHub Desktop ist installiert. Upload... kommt morgen.

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 7. Nov 2017, 12:57
von w.busch

Re: einfaches URL-Rewrite als AddOn in Redaxo5

Verfasst: 16. Nov 2017, 16:51
von w.busch
Ich habe jetzt auch meinen schon unter Redaxo 4 verfügbaren Rewriter an Redaxo 5 angepasst, ihn um die Mehrsprachigkeit erweitert und vorerst mal nach GitHub hochgeladen: https://github.com/WolfgangBusch/url_path_rewrite
Das AddOn hat den key url_path_rewrite und denselben Bauplan wie url_simple_rewrite.