Plugin Pimenu

Hilfe zu Modulen und Tags
Piratos

Re: Plugin Pimenu

Post by Piratos »

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.
Svenni

Re: Plugin Pimenu

Post by Svenni »

Piratos wrote: Aber ich vermute du willst auf etwas anderes hinaus - dann bitte genauer schildern.
Du hast es schon genau so vermutet, wie ich es meinte. :)

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.
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.
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. :D
Piratos

Re: Plugin Pimenu

Post by Piratos »

Na dann werden wir ja irgendwann  etwas ganz ausgefeiltes zu sehen bekommen.
Svenni

Re: Plugin Pimenu

Post by Svenni »

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?
Piratos

Re: Plugin Pimenu

Post by Piratos »

Poste mal dein bisheriges TPL  und teile mir mal mit wie die Hierarchy ist und welchen Ebene noch dran soll.
Svenni

Re: Plugin Pimenu

Post by Svenni »

Piratos wrote: Poste mal dein bisheriges TPL  und teile mir mal mit wie die Hierarchy ist und welchen Ebene noch dran soll.
Zuerst einmal ein zugrundeliegendes Hierarchiebeispiel:
Home
- Serien
-- Serie 1
--- Darsteller
--- Fakten
--- Episodenführer
---- Folge 1
---- Folge 2
---- Folge 3
---- Folge 4
-- Serie 2
-- Serie 3
- Verschiedenes
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.).

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>
Nun möchte ich natürlich noch an anderer Stelle ein "übergeordnetes" Menü für die gesamte Serie anzeigen lassen. Und das möglchst - wie mittels parent_id- und current_parent-Abgleich - automatisch aus der Hierarchie heraus, damit man nicht jedes Mal ein neues Template schreiben und einbauen muss.

Auf das Beispiel bezogen soll dann auf allen Seiten einer der "-- Serie x"-Ebenen das übergeordnete Menü ausgegeben werden, also der Teil hier:
--- Darsteller
--- Fakten
--- Episodenführer
--- Folgen
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".

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

Plugin Pimenu Version 2.04

Post by Piratos »

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.
Svenni

Re: Plugin Pimenu

Post by Svenni »

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

Code: Select all

{if $entry->current_sh eq $entry->sh}
die Menüeinträge auf den aktuellen Sectionheader beschränken. Damit stünden mit Pimenu dann wirklich keine Wünsche mehr offen. :)
Last edited by Svenni on Thu Nov 10, 2005 4:54 pm, edited 1 time in total.
Piratos

Re: Plugin Pimenu

Post by Piratos »

eq $entry->sh
Ja kann ich mir vorstellen, werde ich morgen realisieren.

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.
Svenni

Re: Plugin Pimenu

Post by Svenni »

Piratos wrote: current_sh ist immer der aktuelle denn er wird immer vom gerade aktuellen neu überschrieben, meinst du nicht den last_sh ??
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. :)
Last edited by Svenni on Thu Nov 10, 2005 5:39 pm, edited 1 time in total.
Piratos

Re: Plugin Pimenu

Post by Piratos »

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.
Svenni

Re: Plugin Pimenu

Post by Svenni »

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.
OK, dann hast Du Recht, das es last_sh sein muss. :)
Piratos

Re: Plugin Pimenu

Post by Piratos »

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.
Svenni

Re: Plugin Pimenu

Post by Svenni »

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.
Ä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. :)

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

Re: Plugin Pimenu

Post by Piratos »

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

Return to “Module und Tags”