[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Modul-Code wird mehrfach ausgeführt - Seite 2 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:19

Gregor.Harlan hat geschrieben:Estigy möchte aber ja nicht den Inhalt dauerhaft cachen, sondern nur während eines Requests.
Über OUTPUT_FILTER gehen? Würde ich vermutl. in dem Fall.. bin aber nicht wirklich sicher ob ich die Intentionen des op richtig verstehe.
vg, Jan

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:26

Keine Ahnung, was du jetzt genau meinst. Aber ich stelle es mir wenn so vor (und Estigy vermutlich auch), dass die rex_article-Klasse (die in R5 rex_article_content heißt) intern irgendwo die bereits ausgeführten Artikel ablegt, und bei erneuter Abfrage direkt zurückliefert. Aber alles halt nur während eines Requests.
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:35

Wenn man das von vornherein so konstruiert hat: klar, eine Möglichkeit.. in Bezug auf rex4 is halt nicht. Wenn ich den op richtig verstanden habe, will er aus dem fertig geparsten Artikel SEO kram/keywords rausziehen, und oben in die metas eintragen -> OPF.. allerdings sollte er da dann ein eigenes caching dahinterlegen.
vg, Jan

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:40

Eine komplett andere Alternative: die Rexseo custom keywords benutzen und automatisiert mittels seiner Funktion befüllen..
vg, Jan

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:48

Achso, dir ging es um eine akute Lösung für sein Problem ;)

Da hätte ich auch noch eine dritte Alternative:
Aktuell scheint er die Keywordberechnung ja direkt in der config.inc.php eines Addons zu machen. Zitat:
Estigy hat geschrieben:Zur Erklärung: Ich habe ein SEO-AddOn geschrieben, welches zB die Meta-Keywords direkt aus dem Artikel-Inhalt gewichtet berechnet. Dazu muss ich den Artikel-Content bekommen, bevor das Template gerendert wird, da ja die daraus berechneten Keywords dann in die Meta-Tags sollen.
Ich würde im Template oben einmal den Content holen (getArticle()), dann die die Berechnung aus dem Addon anstoßen, und den Content übergeben. Danach hätte er dann sowohl die keywords, als auch den einmalig generierten Content im Template zur Verfügung.
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:53

Gregor.Harlan hat geschrieben:Estigy möchte aber ja nicht den Inhalt dauerhaft cachen, sondern nur während eines Requests.
Inhalt in eine Variable speichern.

Steht schon alles auf Seite 1. Auch die Lösung für sein Problem.


vg Thomas

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

11. Okt 2012, 14:54

Yo, das ist die einfachste Lösung..
vg, Jan

Estigy
Beiträge: 12
Registriert: 26. Sep 2012, 14:54

Re: Modul-Code wird mehrfach ausgeführt

12. Okt 2012, 09:08

Wenn man das von vornherein so konstruiert hat: klar, eine Möglichkeit.. in Bezug auf rex4 is halt nicht.
Dass es derzeit nicht so ist, ist eh klar. Und genau diesen Umstand kritisiere ich bzw. sehe als Bug im System. Wenn man Content dynamisch generiert und dabei auch PHP ausgeführt werden darf, muss man halt als Programmierer des Systems dafür sorgen, dass das nur ein einziges mal passiert. Ich möchte aber wirklich niemandem persönlich zu nahe treten.
Über OUTPUT_FILTER gehen? Würde ich vermutl. in dem Fall..
Ja, daran habe ich eh auch schon gedacht. Das einzige Problem an der Sache ist, dass ich dann berücksichtigen muss, wo genau im gesamten Content der Hauptartikel steht. Wenn ich das direkt über getArticle() mache, bekomme ich ausschließlich den Artikel, um den es mir geht, und muss nicht später dann den gesamten Content parsen. (Und das auch noch vielleicht abhängig davon, welches der Templates verwendet wird.) Die Chancen dafür, dass so eine Funktionalität dann für die Allgemeinheit verfügbar gemacht werden könnte (lies: so einfach wartbar ist, dass es für den einfachen User leicht nutzbar ist) oder einfach wiederverwendbar ist, sehe ich praktisch bei Null.

Nachmal: Mir geht es weniger um die SEO-Sache selbst. Das war für mich nur der Anlass, wie ich auf das Problem gestoßen bin. Wenn ein Auto immer eingeht, wenn jemand seine 20 km entfernte Freundin besucht, kann man zwar darüber diskutieren, ob die beiden nicht einfach zusammenziehen sollten - besser wäre es aber, das Auto käme in die Werkstatt. ;-)
Estigy möchte aber ja nicht den Inhalt dauerhaft cachen, sondern nur während eines Requests. Darüber habe ich für R5 auch schon mal kurz nachgedacht, bin aber noch zu keinem Ergebnis kommen.
Ganz genau, so ist es.
Zur Umsetzung: Einfach ein internes (statisches) Array anlegen als Daten-Cache:

Code: Alles auswählen

protected static $generatedArticles = array();
Wenn Daten da, diese ausgeben, ansonsten neu generieren und danach ausgeben.

Code: Alles auswählen

// Code nur generieren, wenn wir ihn noch nicht haben
if (!isset(self::$generatedArticles[$id][$sprache])) {
    $generatedCode = [...]; // Artikelcontent generieren
    // Ab in den Cache damit
    self::$generatedArticles[$id][$sprache] = $generatedCode,
}
return self::$generatedArticles[$id][$sprache];
Im schlimmsten Fall machst du eine Proxyklasse, die sich darum kümmern kann. (Ich habe schon überlegt, genau dieses als eigenes kleines AddOn zu machen.)
Denn dass Leute damit Probleme haben, ist ja öfters hier Thema im Forum.
Sehe ich auch so - gerade deshalb wundert es mich, dass die Leute lieber über die Sinnhaftigkeit meiner SEO-Sache diskutieren als über das Problem an sich...

Ich hoffe jedenfalls, dass sich für die nächste Redaxo-Version eine Lösung dafür finden lässt. Ich würde auch gerne etwas Code beisteuern, wenn nötig.

LG, E.

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: Modul-Code wird mehrfach ausgeführt

12. Okt 2012, 10:39

Estigy hat geschrieben:
Über OUTPUT_FILTER gehen? Würde ich vermutl. in dem Fall..
Ja, daran habe ich eh auch schon gedacht. Das einzige Problem an der Sache ist, dass ich dann berücksichtigen muss, wo genau im gesamten Content der Hauptartikel steht.
HTML comments als Delimiter verwenden..
vg, Jan

Zurück zu „Sonstiges“