Das ist genau der Kernpunkt meiner Kritik an dieser CSMS - freut mich, dass dieses auch von jemanden geschrieben wird, der noch nicht so lange dabei ist.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.
Plugin Pimenu
Re: Plugin Pimenu
Re: Plugin Pimenu - Neu Version 1.5 - NEUER RECORD
Ab heute nachnmittag gegen 15.00 gibt es eine neue Version.
Generated in 1.800248 seconds by CMS Made Simple 0.11-beta4 (not cached) using 10 SQL queries
Das sind nicht etwa Zeiten für das statische Menü, sondern es ist kein statisches Menü , aber eines mit über 5000 Positionen - bei gleichzeitiger Erstellung und dem Schreiben des statischen Menüs mit über 500 KB Umfang - neuer Rekord !!!
Der Grund - ich habe mich komplett von der Standardprozedure GetAllContent - wie sie überall verwendet wird - getrennt und lese die Datenbank einfach direkt aus.
Ich war ehrlich überrascht, einen solchen Zuwachs an Speed hätte ich nicht erwartet.
Das bedeutet aber auch, dass diese CMS im Bereich Contentmanager beschissen programmiert ist, ansonsten wäre das nicht möglich.
Ich habe Pimenu ebenfalls komplett neu aufgestellt, doppelten Code (Zuweisungen an Variablen) entfernt - das bringt bis auf besser überschaubaren Code aber nur nicht mehr messbare Microsekunden.
Es werden zusätzlich show_in_menu, parent_id und hierarchy, sowie Dummyeinträge für Menüs mit Rollover Grafiken an Smarty übergeben.
Die Hierachyübergabe ist dabei das wichtigste, da damit direkte Ausblendungen einzelner Menüeinträge und ganzer Bereiche möglich ist.
Generated in 1.800248 seconds by CMS Made Simple 0.11-beta4 (not cached) using 10 SQL queries
Das sind nicht etwa Zeiten für das statische Menü, sondern es ist kein statisches Menü , aber eines mit über 5000 Positionen - bei gleichzeitiger Erstellung und dem Schreiben des statischen Menüs mit über 500 KB Umfang - neuer Rekord !!!
Der Grund - ich habe mich komplett von der Standardprozedure GetAllContent - wie sie überall verwendet wird - getrennt und lese die Datenbank einfach direkt aus.
Ich war ehrlich überrascht, einen solchen Zuwachs an Speed hätte ich nicht erwartet.
Das bedeutet aber auch, dass diese CMS im Bereich Contentmanager beschissen programmiert ist, ansonsten wäre das nicht möglich.
Ich habe Pimenu ebenfalls komplett neu aufgestellt, doppelten Code (Zuweisungen an Variablen) entfernt - das bringt bis auf besser überschaubaren Code aber nur nicht mehr messbare Microsekunden.
Es werden zusätzlich show_in_menu, parent_id und hierarchy, sowie Dummyeinträge für Menüs mit Rollover Grafiken an Smarty übergeben.
Die Hierachyübergabe ist dabei das wichtigste, da damit direkte Ausblendungen einzelner Menüeinträge und ganzer Bereiche möglich ist.
Re: Plugin Pimenu
Über MySQL oder ADODB ?Piratos wrote: Der Grund - ich habe mich komplett von der Standardprozedure GetAllContent - wie sie überall verwendet wird - getrennt und lese die Datenbank einfach direkt aus.
Re: Plugin Pimenu
Der Geschwindigkeitszuwachs liegt vermutlich am Verzicht auf die dynamische Klasseninstanzierung in GetAllContent:
Sieht echt fies aus! Und ist vollkommen unnötig, wenn es doch eigentlich nur darum geht, die Hierarchie aufzubauen.
PS: So neu bin ich gar nicht... Eher etwas still...
Code: Select all
if (in_array($row['type'], array_keys(@ContentManager::ListContentTypes())))
{
$contentobj = new $row['type'];
$contentobj->LoadFromData($row, $loadprops);
array_push($result, $contentobj);
}
PS: So neu bin ich gar nicht... Eher etwas still...
JETZT DOWNLOADEN 1.05
Habe fertig.
Sourcecode ist erheblich geschrumpft.
Es werden paar DInge mehr an Smarty übergeben, so z.B. Dummys für Grafikmenüs bzw. deren Bilderchen, parent_id und die volel Hierarchy damit man bestimmte Gruppen oder einzelne Seiten gezielt angreifen kann.
Ausserdem noch das jumpmenu und Erklärung als PDF.
Nachtrag:
Wishy hat da auch schon etwas über die Möglichkeiten von Pimenu bemerkt
Nachtrag:
Habe in der Anleitung folgendes vergessen:
->show_in_menu
ist 0 wenn bei der Erfassung es so gesetzt ist oder 1 (wird gezeigt)
Dieser Wert muss im Menütemplate ausgewertet werden, wenn es solche Inhalte gibt, die auf 0 gesetzt wurden.
Natürlich Adodb - lass mich doch nicht wieder von bestimmten Leuten anpinkeln, ausserdem ist das für mich auch bequemer.Über MySQL oder ADODB ?
Sourcecode ist erheblich geschrumpft.
Es werden paar DInge mehr an Smarty übergeben, so z.B. Dummys für Grafikmenüs bzw. deren Bilderchen, parent_id und die volel Hierarchy damit man bestimmte Gruppen oder einzelne Seiten gezielt angreifen kann.
Ausserdem noch das jumpmenu und Erklärung als PDF.
Verfolge mal alle Sprünge, dann weist du auch warum das dauert.Sieht echt fies aus!
Nachtrag:
Wishy hat da auch schon etwas über die Möglichkeiten von Pimenu bemerkt
It might be worth looking into the pimenu thing that's floating around. Should be able to modify the output enough to get the rollovers you need.
Nachtrag:
Habe in der Anleitung folgendes vergessen:
->show_in_menu
ist 0 wenn bei der Erfassung es so gesetzt ist oder 1 (wird gezeigt)
Dieser Wert muss im Menütemplate ausgewertet werden, wenn es solche Inhalte gibt, die auf 0 gesetzt wurden.
Last edited by Piratos on Sat Oct 29, 2005 1:48 pm, edited 1 time in total.
Re: Plugin Pimenu
Also entweder mache ich irgend etwas falsch oder da funktioniert bei mir irgend etwas (noch) nicht im Zusammenspiel 11beta4 und der neuen pimenu. Ich bekomme immer nur so kryptische und (lange) leere Menüs zurückgeliefert (siehe Anlage). Ich nutze das mit der neuen Version mitgelieferte jumpform.tpl, bei den anderen Templates ist es aber auch so.
[attachment deleted by admin]
[attachment deleted by admin]
Last edited by Svenni on Sat Oct 29, 2005 2:17 pm, edited 1 time in total.
Re: Plugin Pimenu
Also
1. das alles habe ich unter 0.11 beta4 erstelt und getestet
2. das template sieht so aus:
---Please select---
{foreach from=$rawmenu item=entry}
{if $entry->type eq 'separator'}
------
{else}
url}">{$entry->menutext}
{/if}
{/foreach}
3. Das kleine Javascript steht in der Anleitung und muss im Headerbereich eingebunden werden
4. Die Inhalte stammen auf dem direkten Wege aus deiner Datenbank ohne Zusatze
{$entry->menutext} ist der direkt von dir vorgegebene Text für den jeweiligen Inhalt
5. Das sieht dann z.B. so wie mein Screenshot
[attachment deleted by admin]
1. das alles habe ich unter 0.11 beta4 erstelt und getestet
2. das template sieht so aus:
---Please select---
{foreach from=$rawmenu item=entry}
{if $entry->type eq 'separator'}
------
{else}
url}">{$entry->menutext}
{/if}
{/foreach}
3. Das kleine Javascript steht in der Anleitung und muss im Headerbereich eingebunden werden
4. Die Inhalte stammen auf dem direkten Wege aus deiner Datenbank ohne Zusatze
{$entry->menutext} ist der direkt von dir vorgegebene Text für den jeweiligen Inhalt
5. Das sieht dann z.B. so wie mein Screenshot
[attachment deleted by admin]
Re: Plugin Pimenu
Und wo wir gerade bei Bildern sind hier pimenu.tpl, die Nachbildung vom CSSMENU.
Auch hier gilt laut Anleitung, dass das Javascript con dem Module manuell eingebunden werden muss.
In der 0.11beta4 ist CSSMENU Standard, deswegen ist die CSS schon vorhanden (wenn Installation nicht geändert wurde).
Man beachte beim Bild, das im statischen Menu automatisch die class="currentpage" nicht zum Einsatz kommt, da ja sinnlos.
Die Daten sind bis auf die obligatorischen aus der Installation mit Script erzeugte Dummydaten.
[attachment deleted by admin]
Auch hier gilt laut Anleitung, dass das Javascript con dem Module manuell eingebunden werden muss.
In der 0.11beta4 ist CSSMENU Standard, deswegen ist die CSS schon vorhanden (wenn Installation nicht geändert wurde).
Man beachte beim Bild, das im statischen Menu automatisch die class="currentpage" nicht zum Einsatz kommt, da ja sinnlos.
Die Daten sind bis auf die obligatorischen aus der Installation mit Script erzeugte Dummydaten.
[attachment deleted by admin]
Re: Plugin Pimenu
Hmmm - könnte natürlich auch noch sein, dass ich beim Aufruf zu wenig Parameter mitgebe bzw. einen wichtigen vergessen habe. So wie ich die Anleitung bisher verstanden habe, sollte für die von Dir gezeigten Ergebnisse doch
{pimenu template='jumpmenu.tpl'}
reichen, oder?
Nachtrag:
Ich habe mal die jumpform.tpl, die der neuen Version beiliegt, mit Deinem Script oben verglichen. Eine Zeile stimmt nicht überein, da ist was zu viel:
{pimenu template='jumpmenu.tpl'}
reichen, oder?
Nachtrag:
Ich habe mal die jumpform.tpl, die der neuen Version beiliegt, mit Deinem Script oben verglichen. Eine Zeile stimmt nicht überein, da ist was zu viel:
Kann es daran liegen? Ein kurzer Test erbrachte allerdings auch keine Änderung.url}">{$entry->menutext} {$entry->hierarchy}
Last edited by Svenni on Sat Oct 29, 2005 4:51 pm, edited 1 time in total.
Re: Plugin Pimenu
Vorsicht beim schnellen Test hintereinander - default ist statisches Menü und wenn du keinen Wert für seconds eingetragen hast, ändert ich in 60 Minuten nichts. Also entweder Cache löschen oder parameter seconds=0 angeben (das wäre zum testen besser)..
Auf dem Bild sieht es aber aus , als wenn da schon etwas ist.
Was sollte denn statt nn, ss, &&, && stehen.
Funktionieren die Links ??
Auf dem Bild sieht es aber aus , als wenn da schon etwas ist.
Was sollte denn statt nn, ss, &&, && stehen.
Funktionieren die Links ??
Re: Plugin Pimenu Unterstützung bei Imagemaps
Imagemaps sind eine gerne benutzte Navigationsmöglichkeit für die Startseite eies Webs.
Ausgehend von den sich hinter einem Imagemap verbergenden Links gelangt man zu den Details.
Man benötigt also eine Ansicht ohne die übliche Navigation und nur mit dem Imagemap
und eine mit der üblichen.
Natürlich kann Pimenu keine Imagemaps erzeugen aber das ist ein gutes Beispiel wie man
Pimenu dazu benutzen kann.
Dazu nimmt man sein Haupttemplate und kopiert es sich.
Man hat also MeinTemplate1 und Meintemplate2
MeinTemplate1 erhält keine Navigation und MeinTemplate2 die Standardnavigation.
Es wird eine Inhaltsseite als Default festgelegt, die verwendet MeinTemplate1.
In diese Inhaltsseite wird das Imagemap verankert.
Hier ein Muster eines Imagesmaps aus Selfhtml:
Es geht bei Pimenu die jeweils unerwünschten Inhalte auszublenden.
Das was im Imagemap steht soll nicht in der Standardnavigation erscheinen und umgekehrt.
Dazu werden dann Abfragen benutzt:
Kobelenz hat hierarchy 00001, Wiesbaden 00002, Mainz 00003, Baden 00004
Template für die Imagemapseite - pimenu wird in die Inhaltsseite und nicht in MeinTemplate1
eingebunden!
Damit werden alle anderen Positionen unterdrückt.
Das Menütemplate für MeinTemplate2 muss nun in der foreach - Schleife eine Abfrage haben um die in
MeinTemplate1 bereits verwendeten Inhalte zu unterdrücken.
Pimenu wird dann in das MeinTemplate2 eingebunden und nicht in eine Inhaltsseite.
Damit der Besucher zur Startseite zurück kommen kann, sollte man manuell den Link dazu in diesem Template
einfügen.
Natürlich wird nicht jedermann ein Imagemap machen wollen, aber die Abfragetechnik ist dann
auch brauchbar, wenn es um eine verteilte Navigation geht - deswegen habe ich das hier einmal
als Beispiel angeführt.
Man kann Pimenu beliebig häufig in einem Template einsetzen, wenn die einzelnen Menütemplates unterschiedliche Namen haben.
So kann man z.B. für bestimmte Dinge eine horizontale Navigation aufbauen und gleichzeitig vertikale.
Ausgehend von den sich hinter einem Imagemap verbergenden Links gelangt man zu den Details.
Man benötigt also eine Ansicht ohne die übliche Navigation und nur mit dem Imagemap
und eine mit der üblichen.
Natürlich kann Pimenu keine Imagemaps erzeugen aber das ist ein gutes Beispiel wie man
Pimenu dazu benutzen kann.
Dazu nimmt man sein Haupttemplate und kopiert es sich.
Man hat also MeinTemplate1 und Meintemplate2
MeinTemplate1 erhält keine Navigation und MeinTemplate2 die Standardnavigation.
Es wird eine Inhaltsseite als Default festgelegt, die verwendet MeinTemplate1.
In diese Inhaltsseite wird das Imagemap verankert.
Hier ein Muster eines Imagesmaps aus Selfhtml:
Code: Select all
<div>
<map name="Landkarte">
<area shape="rect" coords="11,10,59,29" href="http://www.koblenz.de/" alt="Koblenz">
<area shape="rect" coords="42,36,96,57" href="http://www.wiesbaden.de/" alt="Wiesbaden">
<area shape="rect" coords="42,59,78,80" href="http://www.mainz.de/" alt="Mainz">
<area shape="poly" coords="48,311,105,248,96,210,75,205,38,234,8,310" href="http://www.baden-aktuell.de/" alt="Baden">
</map>
</div>
<p><img src="karte.gif" width="345" height="312" alt="Karte" usemap="#Landkarte"></p>
Das was im Imagemap steht soll nicht in der Standardnavigation erscheinen und umgekehrt.
Dazu werden dann Abfragen benutzt:
Kobelenz hat hierarchy 00001, Wiesbaden 00002, Mainz 00003, Baden 00004
Template für die Imagemapseite - pimenu wird in die Inhaltsseite und nicht in MeinTemplate1
eingebunden!
Code: Select all
<div>
<map name="Landkarte">
{foreach from=$rawmenu item=entry}
{if $entry->hierarchy eq '00001'}
<area shape="rect" coords="11,10,59,29" href="{$entry->url}" alt="{$entry->menutext}">
{elseif $entry->hierarchy eq '00002'}
<area shape="rect" coords="42,36,96,57" href="{$entry->url}" alt="{$entry->menutext}">
{elseif $entry->hierarchy eq '00003'}
<area shape="rect" coords="42,59,78,80" href="{$entry->url}" alt="{$entry->menutext}">
{elseif $entry->hierarchy eq '00004'}
<area shape="poly" coords="48,311,105,248,96,210,75,205,38,234,8,310" href="{$entry->url}" alt="{$entry->menutext}">
{/if}
{/foreach}
</map>
</div>
<p><img src="karte.gif" width="345" height="312" alt="Karte" usemap="#Landkarte"></p>
Das Menütemplate für MeinTemplate2 muss nun in der foreach - Schleife eine Abfrage haben um die in
MeinTemplate1 bereits verwendeten Inhalte zu unterdrücken.
Pimenu wird dann in das MeinTemplate2 eingebunden und nicht in eine Inhaltsseite.
Code: Select all
{foreach from=$rawmenu item=entry}
{if $entry->hierarchy neq '00001' and $entry->hierarchy neq '00002' and $entry->hierarchy neq '00003' and $entry->hierarchy neq '00004'}
Und hier der restliche Teil je nach Menüsystem
{/if}
{/foreach}
einfügen.
Natürlich wird nicht jedermann ein Imagemap machen wollen, aber die Abfragetechnik ist dann
auch brauchbar, wenn es um eine verteilte Navigation geht - deswegen habe ich das hier einmal
als Beispiel angeführt.
Man kann Pimenu beliebig häufig in einem Template einsetzen, wenn die einzelnen Menütemplates unterschiedliche Namen haben.
So kann man z.B. für bestimmte Dinge eine horizontale Navigation aufbauen und gleichzeitig vertikale.
Re: Plugin Pimenu
Hat leider alles nichts gebracht - keine Änderungen zu sehen.Piratos wrote: Vorsicht beim schnellen Test hintereinander - default ist statisches Menü und wenn du keinen Wert für seconds eingetragen hast, ändert ich in 60 Minuten nichts. Also entweder Cache löschen oder parameter seconds=0 angeben (das wäre zum testen besser)..
Auf dem Bild sieht es aber aus , als wenn da schon etwas ist.

Die normale Menüstruktur. In einer Neuinstallation mit Standardinhalten, die ich eben zu Testzwecken noch mal gemacht hat, sieht das ganze genauso aus: Nur dieser "kryptische Kram", massig Leerraum und "Home Page" werden von allen Templates erzeugt.Was sollte denn statt nn, ss, &&, && stehen.
Nur der vorhandene Eintrag, Rest "The requested URL was not found on this server.". Wenn ich mir den Quelltext der ausgegebenen Seite anschaue, sieht das - entpersonalisiert - so aus:Funktionieren die Links ??
Code: Select all
<form>
<select name="pulldown" onChange="jumpBox(this.form.elements[0])">
<option>---Please select---</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=n">n</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=1">Home Page</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=S">S</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=&">&</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=&">&</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse=m">m</option>
<option value="http://www.wasweissdenn.ich/cmsms11b4/index.php?Hör*erlebnisse="></option>
</select>
</form>
Re: Plugin Pimenu
Wo kommt dann dieser Link her ??n
Aus der CMS wohl kaum - wüsste zumindest nicht, dass es eine Domainform .ich gäbe - das bedeutet, der Link geht ins Leere die URL wird nicht gefunden.
Zum anderen fehlt da etwas - die CMS gibt wesentliche Daten über die Variable $config her und so wird es auch verarbeitet :
$config["root_url"]."/index.php?".$config["query_var"]."=".$onecontent['content_id']
Das ergibt den Link der auf einem lokalen server dann so aussieht:
Code: Select all
http://localhost/ctest/index.php?page=17
$onecontent['content_id'] kommt aus deiner Datenbank und enthält die ID des aktuellen Inhaltes.
Deine komischen Zeichen stammen wahrscheinlich von Hör*erlebnisse - dein Webserver kommt mit den Umlauten nicht klar - ist falsch eingestellt .
Also in deiner CMS -Konfiguration ist etwas oberfaul und deine Webserverkonfiguration stelle ich ebenfalls in Zweifel.
Re: Plugin Pimenu
Ich hab' nochmal neu installiert, diesmal hat er die richtige URL draus gemacht. Hat nur leider nichts gebracht - immer noch dasselbe.Piratos wrote:Code: Select all
http://localhost/ctest/index.php?page=17

Allerdings habe ich jetzt mal in die Seiteninformationen geschaut - und evtl. einen Hinweis auf den Verursacher gefunden: Bei den kryptischen und leeren Einträge/Links steht als Typ "Anker".
Last edited by Svenni on Sat Oct 29, 2005 7:36 pm, edited 1 time in total.
Re: Plugin Pimenu
Den Type gibt es aber überhaupt nicht und Typen werden auch nicht ausgegeben.
There are currently 5 main content types in version 0.11-beta4 "Trinidad":
* Content
* Link
* Separator
* Section Header
* News
neues template als test.tpl
{foreach from=$rawmenu item=entry}
{$entry->type} --- {$entry->url} --- {$entry->menutext}
{/foreach}
Dann tmp/template_c/test.tpl (vorher aber parameter seconds streichen). posten
There are currently 5 main content types in version 0.11-beta4 "Trinidad":
* Content
* Link
* Separator
* Section Header
* News
neues template als test.tpl
{foreach from=$rawmenu item=entry}
{$entry->type} --- {$entry->url} --- {$entry->menutext}
{/foreach}
Dann tmp/template_c/test.tpl (vorher aber parameter seconds streichen). posten
Last edited by Piratos on Sat Oct 29, 2005 8:39 pm, edited 1 time in total.