Page 1 of 8
Plugin Pimenu
Posted: Sat Oct 22, 2005 4:36 pm
by Piratos
Ich habe zwar nichts mehr am Hut mit CMSMS, aber ich finde es schade, das bei mir noch einiges rum liegt, was für CMSMS wertvoll ist.
Aus dem fertigen Module unimenu habe ich das Plugin pimenu extrahiert, dass dem Anwender von CMSMS ziemliche, ja fast völlige Freiheit von irgendwelchen vorhandenen Menüs bzw,. Menüsystemen gibt.
Es erzeugt nämlich nur Rohdaten für Smarty - mittels Smarty wird dann der eigentliche Menüinhalt aufbereitet.
Das bedeutet - es kann so ziemlich jedes Menüsystem verwendet werden, ja sogar solche, die Ihre Daten in Javascripten ablegen (Smarty muss ja nicht unbedingt HTML erzeugen.
Beispiel - so erzeugt man ein vertikales CSSMENU (das jetzige Standardmenü) über ein Template mit dem Plugin Pimenu.
Code: Select all
<div id="listmenu">
<ul id="primary-nav-vert" class="cssmenu-vertical">
{foreach from=$rawmenu item=entry}
{if $entry->depth neq 0}
{if $entry->next_level > $entry->depth}
{if $entry->type <>'separator'}
<li class="menuparent"><a href="{$entry->url}"{if $entry->iscurrent eq 1}class="currentpage"{/if}>{$entry->menutext}</a><ul>
{else}
<li class="separator"><ul>
{/if}
{/if}
{if $entry->next_level == $entry->depth}
{if $entry->type <>'separator'}
<li><a href="{$entry->url}"{if $entry->iscurrent eq 1}class="currentpage"{/if}>{$entry->menutext}</a></li>
{else}
<li class="separator"><li>
{/if}
{/if}
{if $entry->next_level < $entry->depth}
{if $entry->next_level > 0}
{if $entry->type <>'separator'}
<li><a href="{$entry->url}"{if $entry->iscurrent eq 1}class="currentpage"{/if}>{$entry->menutext}</a></li></ul></li>
{else}
<li class="separator"></li></ul></li>
{/if}
{else}
{if $entry->type <>'separator'}
<li><a href="{$entry->url}"{if $entry->iscurrent eq 1}class="currentpage"{/if}>{$entry->menutext}</a>
{else}
<li class="separator">
{/if}
{/if}
{/if}
{else}
{$entry->trenner}
{/if}
{/foreach}
</div>
Das Ergebnis dieses Beispieles ist der gleiche Output wie das Original in der Ansicht, allerdings nicht irgendwie limitiert.
Benötigte Javascripte oder Styles müssen manuell in das Template einmal eingefügt werden.
(Diese Art der Aufbereitung des CSS - Menüs ist sehr viel schneller als das Original).
Das Wichtigste aber ist die völlige Unabhängigkeit von Menüprogrammierern - so gut wie jedes Muster vorhandener Systeme kann damit verwendet werden.
Wenn allgemeines Interesse besteht kann ich das zum Download bereit stellen.
Re: Plugin Pimenu
Posted: Sat Oct 22, 2005 5:37 pm
by Piratos
Und das sind die Daten, welche das Plugi liefert - alles was man zur Ge
Deutsch (German)
->number Laufende Nummer des Datensatzes
->id Id des Inhaltes
->type Contentbezeichnung (content,separator und was auch immer enthalten ist)
->depth Level des aktuellen Inhaltes
->last_level Level des vorherigen Inhaltes
->next_level Level des nächsten Inhaltes
->url Den Link zum Inhalt (wenn nicht Separator oder Sectionheader)
->menutext Den Menütext
->iscurrent enthält 1 wenn die gerade angezeigte Seite identisch mit dem aktuellen Link ist
next_level enthält 0, wenn es sich um den letzten Datensatz handelt (der keine anderen Inhalte hat, dient nur
der Anzeige des Endes)
Re: Plugin Pimenu
Posted: Mon Oct 24, 2005 5:28 am
by cyberman
Es wäre super, wenn Du uns auch noch dieses Modul zur Verfügung stellen könntest - ich denke, daß das Interesse der Allgemeinheit ist auf jeden Fall da.
Wäre in der Tat sehr schade, wenn so ein wieder mal geniale Teil auf Deiner HD ungenutzt vor sich hin oxidieren würde

...
Re: Plugin Pimenu
Posted: Mon Oct 24, 2005 9:28 am
by Piratos
Plugin .. kein Modul - eigentlich eine Miniversion vom nicht publizierten Modul unimenu (das kann auch noch jede Menge mit Grafikmenüs).
Ich habe mich hier wieder angemeldet nicht um Leuten den Mund wässrig zu machen, sondern dieses meiner Meinung nach gutes Teil bei Bedarf zur Verfügung zu stellen.
Eines muss klar sein - es stellt lediglich Daten zur Verfügung - keine fertigen Menüs oder Systeme.
Es sind alle normalerweise notwendigen Daten vorhanden plus einige, die eine Sache bequemer machen können, welche es mit Hilfe von Smarty ermöglicht so gut wie jedes auf dem Markt befindliche Standardmenüsystem nutzen zu können.
Ich gebe hier weder eine Nachhilfe in Smarty oder in logischem Denkvermögen - das muss der Anwender schon können.
Es sei auch bemerkt - dass mit Pimenu erstmals ein kompletter aber sehr wichtiger Bestandteil der CMS vom Programmierer an den Designer übergeben wird - der allein trägt die Verantwortung damit nun etwas zu machen oder nicht.
Man beachte in dem Zusammenhang auch die Beiträge im englischen Forumsteil.
Ich werde heute im Laufe des Tages das Download über meine Website anbieten.
Download ab sofort hier
Posted: Mon Oct 24, 2005 10:55 am
by Piratos
Hier gibt es das Teil
http://piratossmarty.pi.funpic.de/pimenu.zip
Wer Lust hat kann ja die Datei pimenu.txt in's englische übersetzen.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 8:45 am
by Piratos
Danke für die Blumen.
Interessant wird es, wenn die Leute hier die wahnsinnigen Möglichkeiten erkennen und nutzen würden.
Inzwischen gibt es Version 1.01 - code wurde stark reduziert, ansonsten inhaltlich gleich.
Das grundsätzliche Problem der CMS selbst, die ätzende Aufbereitungszeit für jeden Seitenaufruf bleibt uns leider erhalten (siehe Threads zu Pisearch da kommen erschreckende Werte für die CMS an das Tageslicht).
Ich bin gerade noch dabei eine Lösung dafür zu entwicklen und zu basteln ohne das man die CMS selbst ändert - die ersten Versuche sahen schon ganz gut aus.
Neue Version 1.02 Statische Menüs !!
Posted: Fri Oct 28, 2005 11:28 am
by Piratos
Ich hab es hinbekommen.
Um die Homepage zu laden und zwar als einer von 5000 !!! vorhandenen Seiten
benötigt man nur noch
Generated in 0.443242 seconds by CMS Made Simple 0.11-beta4 (cached) using 9 SQL queries
statt
Generated in 12.473494 seconds by CMS Made Simple 0.11-beta4 (cached) using 9 SQL queries
wenn man die statische Funktion nützt (default).
Nach dem ersten Aufruf wird das statische Menü geschrieben und solange verwendet, wie die aktuelle Zeit - 3600 Sekunden (default) kleiner ist als der aktuelle Timestamp.
Mit dem Parameter seconds=dein_wert kann die Zeit geändert werden , ist sie 0 , ist die statische Funktion abgeschaltet.
Das ist eine Sensation, denn die Zeiten auch für normale Menge ändern sich drastisch nach unten.
Die Ursache warum die CMS solange benötigt ist das bekannte Problem, dass bei jedem Seitenaufruf alle Seiten eingelesen werden um das Menü zu bilden - das wird bzw. kann nun verhndert werden.
Enorme Zeitersparnis beim Seitenaufruf !!!!
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 12:31 pm
by cyberman
[sprachlosmitoffenemmundstaun]
Schon das Ur-Plugin an sich ist ja ein Hammer, aber heute hast Du Dir nicht nur ein Feierabend-Bier, sondern einen ganzen Kasten verdient

... Damit dürfte sich ja die ganze Geschwindigkeits-Diskussion von CMSms erledigt haben, oder

?!
Das Ding muß IMHO definitiv in die V 1.0 !!!
PS: Im aktuellen DL-Archiv (13.46 Uhr) sind keine Templates mehr drin.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 12:43 pm
by Svenni
Könnte man damit theoretisch auch ein Pulldownmenü mit füllen? Wenn ja, wie sähe beispielhaft ein Quelltext dafür aus?
Ich stelle mir das nämlich so vor, zu Serien die Serientitel aus einer einer bestimmten Menüebene heraus anzeigen zu lassen.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 12:54 pm
by Piratos
Dann nimm das Template pimenu.tpl, das entspricht dem CSSMENU.
Habe gerade das Downloadpaket korrigiert, da hatte ich die Muster vergessen.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 2:19 pm
by Piratos
Damit dürfte sich ja die ganze Geschwindigkeits-Diskussion von CMSms erledigt haben
Im Prinzip ja , nach meinen Feststellungen kommt man damit bei normalen Seiten auf ca. fast immer den gleichen Wert egal ob nun 100 oder 5000 Seiten.
Schwankungen in der Generierungszeit die vom Inhalt abhängig sind (z.B. RSS Fremdinhalte = Reaktionszeiten des Senders) bleiben einem dagegen enthalten - da kann man nichts mit einem Menü machen.
Wer sich den Sourceteil ansieht um das statische Menü zu erhalten wird es für ein Witz halten so gering ist der Aufwand - allein man muss nur die Idee haben.
Die Wirkung aber - die ist wirklich im Effekt stark.
Übrigens - es gibt jetzt eine 1.03
Habe da eine Filesizekontrolle eingebaut.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 2:32 pm
by petert
if it works, then kudo's to piratos.
If he only would lose his attitude then there would be no need to.... Well you know.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 4:30 pm
by Lohengrin
Benutzt der original Menu-Code etwa kein Caching?!?!
Wenn Caching vom Core geleistet wird, läßt sich der Update nach Zeit auch durch ein Update nach Veränderung (in der Administration) ersetzen.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 5:35 pm
by Piratos
Benutzt der original Menu-Code etwa kein Caching?!?!
Ich weiss zwar nicht was du genau meinst aber das CSSMENU benutzt mit Sicherheit kein caching.
Ausserdem erarbeiten sich alle bekannten Menüsysteme ob nun PHPLayers, Bulletmenu, CSSMENU etc. bei jedem Seitwechsel die Inhalte des Menüs komplett neu - das ist ja das leidige Thema.
Was immer neu ist wird auch beim caching immer neu gemacht - würde also nicht wirken.
Ausserdem geht es hier doch um etwas anderes.
Pimenu erzeugt direkt überhaupt kein Menü, sondern stellt lediglich Daten dafür zur Verfügung, die man über die Einbindung von Pimenu in das zentrale Template und mit einem Menütemplate erst zu einem Menü macht - es geht also um Trennung von Code und Design , dem Anliegen von Smarty und der Traum vieler Designer.
Dafür gibt es keinen Original Menü Code - auch wenn die Routine zum einlesen der Daten aus der CMS überall gleich sind.
Re: Plugin Pimenu
Posted: Fri Oct 28, 2005 10:32 pm
by Lohengrin
Ja, Deinen Ansatz habe ich verstanden und finde ihn sehr sinnvoll.
Was ich sagen wollte: die Produktion der Menü-Rohdaten sollte nicht durch den Aufruf einer Seite, sondern durch Updates im Admin-Bereich ausgelöst werden.