WBCE CMS – Way Better Content Editing.
You are not logged in.
Durch die Angabe von define('SM2_CORRECT_MENU_LINKS',true); in der config.php können ja bei Menü-Links statt der Menülink-Seiten-URLs die richtigen URLs, also die der Zielseiten, ausgegeben werden.
Leider musste ich gerade feststellen, dass das Feature zu massiven Perfomance-Einbußen führt, da dadurch scheinbar doch recht viele Datenbankabfragen erfolgen oder ähnliches. Jedenfalls gibt es auf der betr. Seite mit dieser Einstellung immer eine spürbare Verzögerung von ca. 3 Sekunden, bis eine Seite erscheint.
Das lässt sich auch belegen:
Ohne SM2_CORRECT_MENU_LINKS: Google PageSpeed-Index 91/100 (Desktop)
Mit SM2_CORRECT_MENU_LINKS: Google PageSpeed-Index 79/100 (Desktop)
Die Website umfasst ingesamt 169 Seiten, davon sind nur 9 Menülinks. Es ist also nicht so, dass diese inflationär verwendet würden.
WBCE 1.4.0, PHP 7.3.10, Provider ist Domainfactory
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hab mir das auf Wunsch von Colinax grade mal angeschaut.
Das Problem sind nicht die Menu-Links (bzw. deren Anzahl), sondern eher die Menge der Seiten.
So wie das momentan implementiert ist (sehr spät in der Verarbeitungskette erst direkt im Output) wird halt jeder komplette Menu-String durch die Funktion sm2_correct_menu_links gejagt und verwuschtelt. Bei 9 Menu-Links heißt das dann auch für jede Seite 9 Schleifendurchläufe innerhalb der Funktion.
Das trägt dann insgesamt halt schon ordentlich auf.
'ne wirkliche Lösung dafür habe ich aber (noch) nicht
@florian:
kannst du mal bitte testen, wenn du Zeile ~40 in der sm2_formatter.php so änderst
if(defined('SM2_CORRECT_MENU_LINKS') && SM2_CORRECT_MENU_LINKS == true && stristr($aString, 'menu-link')){
ob das
a.) eine Verbesserung bringt
b.) irgendwelche Nebenwirkungen hat
Last edited by bernd (11.06.2020 22:01:26)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
stefanek
Das führt leider dazu, dass die Links nicht ersetzt werden. Die Performance ist zwar top, aber statt <a href="pfad/zur/zielseite.php"> steht dann wieder <a href="/url/des/menulinks"> auf der Seite.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Komisch ... grade nochmal getestet funktioniert hier lokal Tiptop?!?
Du hast aber schon das SM2_CORRECT_MENU_LINKS wieder in der config.php drin?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Ja, hatte ich, sind eventuell noch weitere Anpassungen erforderlich?
Ich hatte mich auch ehrlich gesagt schon vor dem Testen gefragt, wo "menu-link" in $aString vor- bzw. herkommen sollte, denn an sich weiß show_menu2 doch gar nicht, um was für ein Seitenmodul es sich bei dem jeweiligen Link handelt?
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Uuups ... dumm -> dümmer -> ich ...
Funktioniert natürlich perfekt, wenn der Menu-Link auch "Menu Link" heißt
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Naja, der Ansatz ist ja nicht schlecht.
Das Menulink-Modul müsste - wenn CORRECT_MENU_LINKS==true - in den Dateinamen irgend ein eindeutiges Erkennungsmerkmal schreiben, z.B. modmenulink_ voranstellen.*
Die Funktion output prüft dann auf dieses Erkennungsmerkmal und führt dann ggf. output sm2_correct_menu_links aus.
(* Pferdefuß: bei rückwirkender Implementierung, also wenn es schon Menülinkseiten gibt, müsste der Dateiname bzw. das Accessfile nachträglich umbenannt werden, und, sollte sich der Seitenbetreiber es anders überlegen und CORRECT_MENU_LINKS wieder rausnehmen, müsste natürlich auch modmenulink_ wieder entfernt werden. Und der Seitenbetreiber darf nicht auf die Idee kommen, selbst den Menülink-Seiten-Dateinamen zu ändern.)
Andere Möglichkeit: Das ganze findet gar nicht in der sm2_formatter statt, sondern wird als Outputfilter realisiert (dann natürlich ohne Konstante CRRECT_MENU_LINKS). D.h. wenn die Seite rausgeschrieben worden ist, nimmt sich der OPF das Menü vor, und prüft, ob darin Menülinks sind und ersetzt diese durch die eigentlichen Links. Das ist leider aufwändig, da müssen initial ja die Tabellen pages, sections und mod_menu_link abgefragt werden, um überhaupt herauszubekommen, was nun ein Menülink ist und wo der eigentlich hinzeigen soll. Vermutlich würde sich das also auch nicht gerade günstig auf die Performance auswirken.
Erschwerend kommt noch hinzu, dass in der google_sitemap.php natürlich die Menülinks stehen bleiben, und ob sich das ganze dann mit shortURL verträgt, ist auch fraglich...
Das ist dann wohl also doch ein größeres Projekt.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ich glaube als Outputfilter ist da nichts gewonnen, da müßte ja auch wieder das ganze Menu durchgehechelt werden.
Man müsste das ganze viel eher im Ablauf bearbeiten, meine Idee wäre an der Stelle anzusetzen an der die Funktion show_menu2 sich das $page-Array zusammenbastelt, das ist auch so ziemlich die einzige Stelle an der die jeweiligen page ids verfügbar sind...
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Ich denke Florian's Ansatz, es mit einem OpFilter zu machen ist gar nicht so schlecht:
1) Zuerst würde man in der DB nachschauen, ob Menu-Link überhaupt in Verwendung ist.
2) Wenn ja, ein Array erstellen mit allen Seiten, die Menu-Link verwenden, den AusgangsURL als KEY und den ErsatzURL als VALUE.
3) Im Seiten-Output per RegEx die URLs ersetzen.
Gruß,
Christian
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
O.k.
ich bin dem ursprünglichen Gedanken "treu" geblieben (vielleicht bischen "von hinten durch die Brust ins Auge"):
- in der Funktion show_menu2 werden die menu_link id's geholt
- bei einem Match mit einer page id wird ein weiterer flag im page-Array gesetzt
- an Hand dieses Flags wird in der Funktion startItem eine zusätzliche Klasse "sm2-is-menulink" hinzugefügt
- diese Klasse dient dann in output als Weiche für sm2_correct_menu_links
Da das Hinzufügen der Klasse unabhänig von SM2_CORRECT_MENU_LINKS ist, hat man als netten Nebeneffekt gleich noch eine Klasse verfügbar um evtl. Menu-Links CSS-mäßig hervorheben zu können...
Last edited by bernd (12.06.2020 11:01:22)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
klawin
So, getestet. Hervorragend! Wird sogleich committet!
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Wenns funktioniert vielleicht noch die "EXPERIMENTAL" Kommentare rausnehmen?
Was mir grade durch den Kopf geht:
Wäre es vielleicht sinnvoll das Sitemap-Modul auch entsprechend anzupassen, damit dort die Links mit dem Menu übereinstimmen?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Ja
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Sodele,
anbei das überarbeitete Sitemap-Modul, ging schmerzfreier als befürchtet.
Dann wäre wohl noch die google_sitemap, aber da gucke ich momentan noch drauf wie ...
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
colinax, klawin
Die Sitemap 4.0.9 sowie die "EXPERIMENTAL" Kommentare entfernen, sind jetzt auf GitHub.
Offline
Sehe grade in der google_sitemap.php werden Menu-Links sowieso nicht verwurschtelt.
// Get all pages from db except of the module menu_link
Also kein Handlungsbedarf.
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
colinax
Dann setze ich dass mal auf erledigt.
Offline
Bravo Bernd! Und danke.
Gruß,
Christian
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline