Plugin Pimenu
Re: Plugin Pimenu
Die Einschränkungen auf bestimmte Bereiche geht am einfachsten über die Hierarchy.
Zum einen kann man diese im Adminbereich sehen und zum anderen finde ich sie auch schlüssig.
Man beachte den kleinen Hinweis in der Anleitung.
Im Adminbereich werden jedoch die Vorlaufnullen zu Ansichtszwecken entfernt.
Eine Sortierung danach würde ein völlig falsches Abbild ergeben.
Für unsere Zwecke muss sie voll expandiert sein, auf 5 Stellen mit Vorlaufnullen
So werden die Hierarchywerte in der Datenbank abgelegt.
Alle Menüzugriffe (auch die anderer Menümodule wie CSSMENU ) erfolgen mit der Anweisung ORDER BY hierarchy, sind also nach dem Wert sortiert und die sind in der Datenbank aus dem Grunde voll expandiert abgelegt.
Hinweis:
Die Tabelle prefix_content enthält seltsamerweise keinen Index auf die Tabellenspalte hierarchy.
Welcher Teufel den Wishy dazu gebracht hat , weiss ich nicht, denn das wird bei jedem Seitenaufruf
verwendet. Jetzt wird die Datenbankausgabe jedesmal sortiert - mit einem Index ist das unnötig.
Empfehle den Mysql - Anwendern mittels PHPMyadmin dort einen index zu setzen - bringt bei vielen Seiten etwas mehr Power.
Beispiel:
00001.00004
00001.00004.00001
00001.00004.00001.00001
00001.00004.00001.00002
Will man in einem Teilbereich z.B. nur o.a. Werte haben dann macht man das mit folgender
Abfrage
{if $entry->hierarchy >= "00001.0004" and $entry->hierarchy <="00001.00004.00001.00002"}
Die Anweisungen
{/if}
Es kommt darauf an, wie man das alles angelegt hat.
Ich empfehle eigentlich jedem immer einen Sectionheader vor einen Bereich anzulegen und den als Elternteil für die dazu gehörenden Inhalte zu nehmen , das ergibt immer definierte Bereiche von einem Sectionheader zum nächsten - dann kann man sich das wesentlich einfacher machen.
Zum anderen finde ich ist bei der Erfassung neuer Inhalte einfacher bei der Orientierung.
Sectionheader sind zudem leicht über eine Abfrage des Type leicht ausblendbar, wenn man diese nicht in der Optik haben
will.
Zum einen kann man diese im Adminbereich sehen und zum anderen finde ich sie auch schlüssig.
Man beachte den kleinen Hinweis in der Anleitung.
Im Adminbereich werden jedoch die Vorlaufnullen zu Ansichtszwecken entfernt.
Eine Sortierung danach würde ein völlig falsches Abbild ergeben.
Für unsere Zwecke muss sie voll expandiert sein, auf 5 Stellen mit Vorlaufnullen
So werden die Hierarchywerte in der Datenbank abgelegt.
Alle Menüzugriffe (auch die anderer Menümodule wie CSSMENU ) erfolgen mit der Anweisung ORDER BY hierarchy, sind also nach dem Wert sortiert und die sind in der Datenbank aus dem Grunde voll expandiert abgelegt.
Hinweis:
Die Tabelle prefix_content enthält seltsamerweise keinen Index auf die Tabellenspalte hierarchy.
Welcher Teufel den Wishy dazu gebracht hat , weiss ich nicht, denn das wird bei jedem Seitenaufruf
verwendet. Jetzt wird die Datenbankausgabe jedesmal sortiert - mit einem Index ist das unnötig.
Empfehle den Mysql - Anwendern mittels PHPMyadmin dort einen index zu setzen - bringt bei vielen Seiten etwas mehr Power.
Beispiel:
00001.00004
00001.00004.00001
00001.00004.00001.00001
00001.00004.00001.00002
Will man in einem Teilbereich z.B. nur o.a. Werte haben dann macht man das mit folgender
Abfrage
{if $entry->hierarchy >= "00001.0004" and $entry->hierarchy <="00001.00004.00001.00002"}
Die Anweisungen
{/if}
Es kommt darauf an, wie man das alles angelegt hat.
Ich empfehle eigentlich jedem immer einen Sectionheader vor einen Bereich anzulegen und den als Elternteil für die dazu gehörenden Inhalte zu nehmen , das ergibt immer definierte Bereiche von einem Sectionheader zum nächsten - dann kann man sich das wesentlich einfacher machen.
Zum anderen finde ich ist bei der Erfassung neuer Inhalte einfacher bei der Orientierung.
Sectionheader sind zudem leicht über eine Abfrage des Type leicht ausblendbar, wenn man diese nicht in der Optik haben
will.
Re: Plugin Pimenu
Du hast es schon genau so vermutet, wie ich es meinte.Piratos wrote: Aber ich vermute du willst auf etwas anderes hinaus - dann bitte genauer schildern.

Ich hatte mir ein test.tpl gebastelt und alle vorhandenen Werte anzeigen lassen. Der einzige Wert, der - logischerweise - immer gleich war, war parent_id. Nur gab es da ja (noch) keinen Wert, mit dem man diesen vergleichen konnte.
Danke, danke, danke - es funktioniert perfekt und bietet jetzt bei Seiten mit hoher Menütiefe und komplexeren Menüstrukturen die ultimative Möglichkeit der Menüprogrammierung.Ich habe mir das mal angesehen, welche Möglichkeiten das bietet und weiss worauf du hinaus willst.
In Version 2.02 wird ->current_parent ausgegeben - download ab sofort
Einsatz macht aber nur in dynamischen Menüs Sinn, erzeugt aber eine enorme Vereinfachung.
Gute - wenn auch nicht ausgesprochene Idee.

Re: Plugin Pimenu
Na dann werden wir ja irgendwann etwas ganz ausgefeiltes zu sehen bekommen.
Re: Plugin Pimenu
Hmmm - jetzt steh ich wieder vor einem Problem, bei dem ich schon alles mögliche an Vergleichswerten durchprobiert habe, ohne dass etwas davon funktioniert. 
Folgende Problemstellung:
Ich habe jetzt durch current_parent ein Jumpmenü erzeugt, welches nur die Menüpunkte derselben Ebene anzeigt. Gleichzeitig möchte ich mittels Multimenüfähigkeit an anderer Stelle ein Menü der übergeordneten Menüebene anzeigen lassen. Wie stelle ich das mit den ganzen verfügbaren Werten an?

Folgende Problemstellung:
Ich habe jetzt durch current_parent ein Jumpmenü erzeugt, welches nur die Menüpunkte derselben Ebene anzeigt. Gleichzeitig möchte ich mittels Multimenüfähigkeit an anderer Stelle ein Menü der übergeordneten Menüebene anzeigen lassen. Wie stelle ich das mit den ganzen verfügbaren Werten an?
Re: Plugin Pimenu
Poste mal dein bisheriges TPL und teile mir mal mit wie die Hierarchy ist und welchen Ebene noch dran soll.
Re: Plugin Pimenu
Zuerst einmal ein zugrundeliegendes Hierarchiebeispiel:Piratos wrote: Poste mal dein bisheriges TPL und teile mir mal mit wie die Hierarchy ist und welchen Ebene noch dran soll.
Dank dem von Dir hinzugefügten Vergleichswert sieht das Template für die Anzeige von Serienfolgen (---- Folge x) wie folgt aus. Es wird auf dieser Ebene angezeigt (soll heissen: Die Auswahl der Serienfolgen erfolgt nur, wenn man sich auf der Serienfolgen-Ebene ---- befindet.).Home
- Serien
-- Serie 1
--- Darsteller
--- Fakten
--- Episodenführer
---- Folge 1
---- Folge 2
---- Folge 3
---- Folge 4
-- Serie 2
-- Serie 3
- Verschiedenes
Code: Select all
<div>
<form>
<select name="pulldown" onChange="jumpBox(this.form.elements[0])">
<option>---Bitte auswälen---</option>
{foreach from=$rawmenu item=entry}
{if $entry->parent_id eq $entry->current_parent}
{if $entry->type eq 'separator'}
<option>------</option>
{else}
<option value="{$entry->url}">{$entry->menutext}</option>
{/if}
{/if}
{/foreach}
</select>
</form></div>
Auf das Beispiel bezogen soll dann auf allen Seiten einer der "-- Serie x"-Ebenen das übergeordnete Menü ausgegeben werden, also der Teil hier:
Es würde IMHO schon reichen, wenn man einen Level vorgibt und sagt "gib mir alle Menüpunkte mit derselben parent_id oder current_parent aus".--- Darsteller
--- Fakten
--- Episodenführer
--- Folgen
Ich habe, wie schon geschrieben, schon alle möglichen Variationen an Vergleichswerten durch, bisher hat leider noch nichts zum gewünschten Ergebnis geführt.

Last edited by Svenni on Tue Nov 08, 2005 9:55 pm, edited 1 time in total.
Plugin Pimenu Version 2.04
versuch es mal mit 2.04
Da gibt es einen neuen Abfragewert current_sh.
Der fängt mit nichts an und wird mit dem Wert des nächsten Sectionheaders überschrieben.
Bilde Sectionheaders und ordne die betreffenden Inhalte zu - dann hast du Gruppen.
Über current_sh kannst du dann elegant Gruppenbildung betreiben.
Eine Gruppe fängt also unterhalb des Sectionheaders an und endet mit dem nöchsten Sectionheader.
if $entry->current_sh eq "Gruppe1"
elseif if $entry->current_sh eq "Gruppe2"
usw.
Asserdem gibt es nun die Möglichkeit von aussen dem Pimenu einen Wert zuzuordenen
{$pimsw}
Wenn Du den Links z.B: &pimsw=1 hinzufügst, kann das gleiche oder ein anderes Template dieses auswerten.
Im Zusammenhang mit Gruppenbildung und dem pimsw müsste das eigentlich machbar sein.
Da gibt es einen neuen Abfragewert current_sh.
Der fängt mit nichts an und wird mit dem Wert des nächsten Sectionheaders überschrieben.
Bilde Sectionheaders und ordne die betreffenden Inhalte zu - dann hast du Gruppen.
Über current_sh kannst du dann elegant Gruppenbildung betreiben.
Eine Gruppe fängt also unterhalb des Sectionheaders an und endet mit dem nöchsten Sectionheader.
if $entry->current_sh eq "Gruppe1"
elseif if $entry->current_sh eq "Gruppe2"
usw.
Asserdem gibt es nun die Möglichkeit von aussen dem Pimenu einen Wert zuzuordenen
{$pimsw}
Wenn Du den Links z.B: &pimsw=1 hinzufügst, kann das gleiche oder ein anderes Template dieses auswerten.
Im Zusammenhang mit Gruppenbildung und dem pimsw müsste das eigentlich machbar sein.
Re: Plugin Pimenu
Danke sehr, damit kann man was anfangen.
Ich habe gestern und heute schon viel rumgetestet - und zwar einigermassen erfolgreich. Allerdings war das ganze zu wenig universell einsetzbar, wenn man mehrere Menüs gleichzeitig anzeigen lässt, so dass diese sich nach nem Seitenneuaufbau logischerweise auch verändern. Wenn man Pech hat, hat man zwischenzeitlich einen anderen Wert an $pimsw übergeben.
Daher bin ich jetzt doch bei current_sh gelandet. Wenn man die Sectionheader geschickt setzt, braucht man später nur noch die Menütiefe einschränken und gut ist - und auch Breadcrumb, Suchmaschine und evtl. gesetzte interne Links sind zufrieden.
Was (zumindest mir) jetzt noch fehlt, um nicht für alle betroffenen Menüs das Menütemplate zu ändern und current_sh universell einsetzbar zu machen, wäre (analog zu der Vergleichsmöglichkeit von id/parent_id und current_parent) der Wert sh/sectionheader des aktuellen Datensatzes. So könnte man in den Templates dann elegant mittels
die Menüeinträge auf den aktuellen Sectionheader beschränken. Damit stünden mit Pimenu dann wirklich keine Wünsche mehr offen. 

Daher bin ich jetzt doch bei current_sh gelandet. Wenn man die Sectionheader geschickt setzt, braucht man später nur noch die Menütiefe einschränken und gut ist - und auch Breadcrumb, Suchmaschine und evtl. gesetzte interne Links sind zufrieden.
Was (zumindest mir) jetzt noch fehlt, um nicht für alle betroffenen Menüs das Menütemplate zu ändern und current_sh universell einsetzbar zu machen, wäre (analog zu der Vergleichsmöglichkeit von id/parent_id und current_parent) der Wert sh/sectionheader des aktuellen Datensatzes. So könnte man in den Templates dann elegant mittels
Code: Select all
{if $entry->current_sh eq $entry->sh}

Last edited by Svenni on Thu Nov 10, 2005 4:54 pm, edited 1 time in total.
Re: Plugin Pimenu
Ja kann ich mir vorstellen, werde ich morgen realisieren.eq $entry->sh
Jetzt muss ich doch mal nachfragen
current_sh ist immer der aktuelle denn er wird immer vom gerade aktuellen neu überschrieben, meinst du nicht den last_sh ??
Last edited by Piratos on Thu Nov 10, 2005 5:21 pm, edited 1 time in total.
Re: Plugin Pimenu
Und wo nimmst Du den "gerade aktuellen" Sectionheader her? Das ist dann ja - wenn ich das richtig verstanden habe - der von Dir genannte Wert last_sh, oder? Dieser wäre dann auch der geeignete Vergleichswert.Piratos wrote: current_sh ist immer der aktuelle denn er wird immer vom gerade aktuellen neu überschrieben, meinst du nicht den last_sh ??

Last edited by Svenni on Thu Nov 10, 2005 5:39 pm, edited 1 time in total.
Re: Plugin Pimenu
Also es fängt mit nichts , also "" an.
Dann kommt der erste Sectionheader, Wert wird übernommen und verbelibt solange bis der nächste kommt, dann wird der übernommen usw.
Dann kommt der erste Sectionheader, Wert wird übernommen und verbelibt solange bis der nächste kommt, dann wird der übernommen usw.
Re: Plugin Pimenu
OK, dann hast Du Recht, das es last_sh sein muss.Piratos wrote: Also es fängt mit nichts , also "" an.
Dann kommt der erste Sectionheader, Wert wird übernommen und verbelibt solange bis der nächste kommt, dann wird der übernommen usw.

Re: Plugin Pimenu
Ich habe mit der 2.05 das Thema mehrsprachliche Web's abgeschlossen.
Das kommt gfür dich ja nicht in Frage, aber die Lösung lässt sich für deine Zwecke 1:1 übernehmen.
Das kommt gfür dich ja nicht in Frage, aber die Lösung lässt sich für deine Zwecke 1:1 übernehmen.
Re: Plugin Pimenu
Äh - nein, nicht so wirklich, ich würde eher sagen, dass die Lösung zumindest für meine Zwecke vollkommen unbrauchbar ist. Aber vielleicht hab' ich die Funktionsweise vom Wert language ja auch nur noch nicht richtig verstanden. Warte ich dann wohl mal die Erläuterungen in der Anleitung der 2.05 ab, wenn sie draussen ist.Piratos wrote: Das kommt gfür dich ja nicht in Frage, aber die Lösung lässt sich für deine Zwecke 1:1 übernehmen.

Zur Erläuterung mal ein paar Einzelheiten zu meiner Seite: Es handelt sich hierbei um eine Rezensionsseite, in der Serien, Einzelstücke, Specials etc. etc. besprochen werden. Je nach Art sehen da die Hierarchien, der Inhaltsaufbau und die Menü- und Darstellungsstruktur natürlich sehr unterschiedlich aus. Dazu gehört dann auch, dass gleichzeitig unterschiedliche Menüs aktiv sein können, die auf unterschiedliche Tiefen und Artikel-IDs zurückgreifen, so dass hierdurch schon pimsw am Ende dazu führte, dass durch den sich öfter ändernden Wert die anderen Menüs teilweise - nach Aufruf eines Menüpunktes - wieder änderten, da pimsw zwischenzeitlich einen anderen Wert hatte. Das ist bei den Sectionheadern natürlich nicht der Fall.
Mit der Vergabe der Sectionheader könnte ich somit wirklich gruppieren und Untermenüs mittels sh- und depth-Abgleich auf einfachste Art und Weise so einschränken, wie ich sie haben möchte. Ich habe im Extremfall, wenn ich alleine meine alte Seite mit CMSMS neu aufgebaut habe, irgendwann mal Massen an unterschiedlichen Sectionheadern (also die ganzen Serien jede alleine für sich, die ganzen Einzelverlage und Produktionen für sich und was es sonst noch so alles an zu besprechenden Inhalten gibt). Wie käme ich da mit dem Language-Wert weiter?

Den Wert pimsw möchte ich dabei ganz aussen vor lassen und nicht zusätzlich zu language hinzusetzen, da das die Sache wieder nur mit Pimenu oder Pisearch lauffähig macht - im Gegensatz zu den "von Haus aus" vorhandenen Sectionheadern.
Ich würde wirklich sehr gerne den von Dir angekündigten Wert last_sh zur Verfügung haben, da dieser alles durch die Sectionheader programmiertechnisch und menüstrukturmässig sehr transparent machen würde.

Nachtrag: Hab' mal meine Contentstruktur etwas erläutert.
Last edited by Svenni on Fri Nov 11, 2005 5:24 pm, edited 1 time in total.
Re: Plugin Pimenu
Was du da machst wird sowieso nur mit pimenu laufen und die Sache ist, einmal durchschaut mehr als einfach.
Aber das ist ja nicht mein Problem neue Version 2.06 steht auf Wunsch eines "einsamen" CMS'lers zur Verfügung.
Die Arbeit mit Pimenu neigt sich langsam dem Ende zu, es wird noch etwas gemacht um die breadcrumbs zu ersetzen und das war's auch schon langsam.
Möchte nur noch einen Wahnsinnigen finden, der die Anleitung übersezt.
Aber das ist ja nicht mein Problem neue Version 2.06 steht auf Wunsch eines "einsamen" CMS'lers zur Verfügung.
Die Arbeit mit Pimenu neigt sich langsam dem Ende zu, es wird noch etwas gemacht um die breadcrumbs zu ersetzen und das war's auch schon langsam.
Möchte nur noch einen Wahnsinnigen finden, der die Anleitung übersezt.