Plugin Pimenu

Hilfe zu Modulen und Tags
Post Reply
Piratos

Plugin Pimenu

Post 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.
Piratos

Re: Plugin Pimenu

Post 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)
cyberman

Re: Plugin Pimenu

Post 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 8-) ...
Last edited by cyberman on Fri Jan 27, 2006 4:59 pm, edited 1 time in total.
Piratos

Re: Plugin Pimenu

Post 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.
Last edited by Piratos on Mon Oct 24, 2005 9:30 am, edited 1 time in total.
Piratos

Download ab sofort hier

Post 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.
Last edited by Piratos on Mon Oct 24, 2005 11:27 am, edited 1 time in total.
Piratos

Re: Plugin Pimenu

Post 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.
Piratos

Neue Version 1.02 Statische Menüs !!

Post 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 !!!!
cyberman

Re: Plugin Pimenu

Post 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 8-) :-D 8-) ... 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.
Svenni

Re: Plugin Pimenu

Post 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.
Piratos

Re: Plugin Pimenu

Post by Piratos »

Dann nimm das Template pimenu.tpl, das entspricht dem CSSMENU.

Habe gerade das Downloadpaket korrigiert, da hatte ich die Muster vergessen.
Piratos

Re: Plugin Pimenu

Post 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.
User avatar
petert
Power Poster
Power Poster
Posts: 282
Joined: Wed Feb 09, 2005 9:30 pm

Re: Plugin Pimenu

Post 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.
Mambo sucks, that's why I am here.
Now they call it Joomla, but it still sucks!

CMSMS rules!
Lohengrin

Re: Plugin Pimenu

Post 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.
Last edited by Lohengrin on Fri Oct 28, 2005 4:31 pm, edited 1 time in total.
Piratos

Re: Plugin Pimenu

Post 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.
Lohengrin

Re: Plugin Pimenu

Post 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.
Post Reply

Return to “Module und Tags”