Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü
-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es dir, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachte, dass du nur Beiträge sehen kannst, die in Teilen des Forums geschrieben wurden, auf die du aktuell Zugriff hast.

Beiträge anzeigen-Menü

Themen - Samson

#1
Plugins / Template wechseln - aber wie?
10. August 2010, 17:59:03
Ich möchte mit einem Plugin das Template wechseln, d.h. für bestimmte Inhaltsseiten ein jeweils anderes Template benutzen. So trivial scheint das aber nicht zu sein. Wenn das Plugin abgearbeitet wird, ist das (normale) Template bereits eingelesen und das Wechseln wird unmöglich.

In phpCMS konnte man in den Contentdateien (= Inhaltsseiten) festlegen, mit welchem Template der Content zu verarbeiten ist. Hier mal ein phpCMS-Beispiel dieser Seite:
{PROJECT}/template/homepage.ini
{TITEL}Aktuelle Nachrichten
{SCRIPT}/news/index.php
{CONTENT0}
{CONTENT}
Mit PROJECT wird die Projektdatei festgelegt und die enthält u.a. den Dateinamen des zu verwendenden Templates. Um Fragen vorzubeugen: TITEL, CONTENT0 und CONTENT sind frei im Template plazierbare Platzhalter, die in der Contentdatei mit Inhalt gefüllt werden (können). SCRIPT verweist auf ein externes PHP-Skript, das abgearbeitet werden muß. Im Template steht ebenfalls ein Platzhalter SCRIPT, damit phpCMS weiß, wohin die Ausgabe muß.

Eine denkbare Anwendung wäre z.B. eine Druckversion einer Seite. Ich weiß, da gibt es CSS, aber bei komplizierten Templates hat man stundenlang zu kämpfen, bis man alles ausgeblendet hat. Das Ergebnis sieht dann auch meist in der Druckvorschau nicht so aus wie gewünscht.
Einfacher ginge das mit einem Templateswitcher-Plugin: In allen Templates baut man den Plugin-Aufruf ein und im normalen Template wird ein Link zur Druckversion gesetzt, z.B. mit dem Parameter print=1. Damit wird das Templateswitcher-Plugin aufgefordert, die aktuelle Inhaltsseite mit dem Drucktemplate zu laden.

Ergänzung: Sowas könnte natürlich auch fest eingebaut werden in mozilo - jedenfalls die Option mit print. Aber es gibt sicher auch andere denkbare Anwendungsgebiete, wo sich ein Plugin besser macht.
#2
Wenn ich ein neues Plugin code, erstelle ich i.d.R. eine Kopie des Ordners DEMOPLUGIN und benenne in der index.php alle Vorkommen von "DEMOPLUGIN" in z.B. "MeinPlugin" um. Wenn ich dann in die Plugin-Verwaltung gehe und die Konfiguration des neuen Plugins bearbeite, wird nach dem Speichern irgendeine andere plugin.conf geändert - nur nicht die vom neuen Plugin.
Ich kämpfe dann meist eine Weile mit mozilo, bekomme zwischendurch mal weiße Seiten zu sehen und irgendwann hat's mozilo gerafft.

Aktuell ist mein Plugin das letzte in der Liste. Geschrieben wird immer in die plugin.conf des davor angezeigten Plugins.

Die plugin.conf meines Plugins bearbeite ich manchmal vorher manuell, was oft eine weiße Seite erzeugt - ebenso wenn plugin.conf nicht vorhanden ist.

Nach einigen kleinen Tests das erste Fazit: ist keine plugin.conf vorhanden, benutzt mozilo die plugin.conf eines anderen Plugins, anstatt eine neue plugin.conf anzulegen.
#3
Meine PHP-Datei:
// *** START Monatskalender ***
$monat=date("n");
$jahr=date("Y");
$erster=date("w", mktime(0,0,0,$monat,1,$jahr));
$insgesamt=date("t");
$heute=date("d");
$monate=array("Januar","Februar","März","April","Mai","Juni","Juli","August", "September","Oktober","November","Dezember");
if($erster==0){$erster=7;}
$content = '<table border="0" style="font-size:14pt; font-family:Verdana">';
$content .= "<th colspan='7' align='center' style='font-size:16pt; font-family:Arial; color:#ff9900;'>";
$content .= $monate[$monat-1];
$content .= " ";
$content .= $jahr;
$content .= "</th>";
$content .= '<tr><td style="color:#666666"><b>Mo</b></td><td style="color:#666666"><b>Di</b></td>';
$content .= '<td style="color:#666666"><b>Mi</b></td><td style="color:#666666"><b>Do</b></td>';
$content .= '<td style="color:#666666"><b>Fr</b></td><td style="color:#0000cc"><b>Sa</b></td>';
$content .= '<td style="color:#cc0000"><b>So</b></td></tr>';
$content .= "<tr>"; $i=1; while($i<$erster){$content .= "<td></td>"; $i++;} $i=1;
while($i<=$insgesamt) { $rest=($i+$erster-1)%7;
if($i==$heute){$content .= '<td style="font-size:12pt; font-family:Verdana; background:#ff0000;" align=center>';}
else{$content .= '<td style="font-size:12pt; font-family:Verdana" align=center>';}
if($i==$heute){$content .= "<span style='color:#ffffff'>$i</span>";}
else if($rest==6){$content .= "<span style='color:#0000cc';>$i</span>";}
else if($rest==0){$content .= "<span style='color:#cc0000'>$i</span>";}
else{$content .= "$i";}
$content .= "</td>";
if($rest==0){$content .= "</tr><tr>";} $i++; }
$content .= "</tr>";
$content .= "</table>";
return $content;
// *** ENDE Monatskalender *** ?>
Meine Inhaltsseite:
[ueber2|Aktuelle Dokumente]
blabla
[php|return include("inc/testcal_bsv.php");]
blabla
Die PHP-Datei wird abgearbeitet. Alle Inhalte vor und nach der includierten Datei werden nicht ausgegeben. Sie sind einfach weg. Was mache ich falsch?
Es spielt keine Rolle, ob ich ein return vor der includierten Datei habe oder nicht.
#4
Ich binde den Code für den Googlekalender mit dem Syntaxelement html ein:
<iframe src="http://www.google.com/calendar/embed?mode=AGENDA&amp;height=600&amp;wkst=2&amp;bgcolor=%23FFFFFF&amp;src=9fvpe8tpu6qikb0vh944evaa9c%40group.calendar.google.com&amp;color=%236B3304&amp;ctz=Europe%2FBerlin" style=" border-width:0 " width="610" height="600" frameborder="0" scrolling="no"></iframe>Nach dem Speichern der Inhaltsseite ist alles in Ordnung. Nach dem Neuladen sieht der Code wie folgt aus:
<iframe src="http://www.google.com/calendar/embed?mode=AGENDA&amp;height=600&amp;wkst=2&amp;bgcolor=#FFFFFF&amp;src=9fvpe8tpu6qikb0vh944evaa9c@group.calendar.google.com&amp;color=#6B3304&amp;ctz=Europe/Berlin" style=" border-width:0 " width="610" height="600" frameborder="0" scrolling="no"></iframe>Wer es nicht genau erkennt: mozilo dekodiert alle Zeichencodes in das ursprüngliche Zeichen. Aus %23 wird #, aus %40 wird @, aus %2F wird /.
Das ist natürlich schädlich, weil die URI damit nicht mehr korrekt ist. Ich finde das sollte bis zur nächsten Version unbedingt gefixed werden. Ebenso betroffen wird wahrscheinlich das Syntaxelement link oder php sein.
#5
Entweder bin ich zu blöd oder die mozilo-Coder haben das einfach nur vergessen: Ich habe gerade einen Email-Link in mozilo-Syntax - [mail|bla@bla.de] - ins Template eingetragen. Doch der Parser ignoriert das!
#6
Ich habe eine zweispaltige Seite. In der linken Spalte der Content, in der rechten Spalte erst das Suchformular, darunter das Detailmenü und darunter weiterer Content. Die Frage ist jetzt, wie ich in die rechte Box Content aus der Inhaltsseite bekomme, wenn doch bereits der eigentliche Content mit dem Zeug aus der Inhaltsseite gefüllt wird.

Eine Möglichkeit wäre ja die vielbeschriebene Möglichkeit, dafür ein benutzerdefiniertes Syntaxelement (eine eigene Contentbox) zu nehmen. Doch wird dessen Positionierung erst zur Laufzeit ermittelt und beschränkt sich auf den normalen Content (linke Spalte). Ich will die Box aber in einen Bereich bekommen, der außerhalb des normalen Contents liegt.
Man kann zwar mit CSS so eine Box an beliebige Stellen auf der Seite plazieren, aber die Box soll halt genau unter dem Detailmenü landen. Da dieses aber immer eine andere Höhe hat und meine Box eine feste Position wird es Layoutprobleme geben.
Ich muß die Box also relativ zur Position des Detailmenüs positionieren können. Doch wie?
#7
Da ich gerade ein News-Plugin code, stellt sich mir auch die Frage, wie ich der Suchfunktion mitteilen kann, das nicht nur die "Startseite" des Plugins aufgerufen werden muß. Ein Beispiel:

Mein Plugin verwaltet 100 Artikel. 10 Artikel werden auf der Startseite angezeigt, die anderen 9 "Unterseiten" mit den restlichen 90 Artikeln sind erstmal nicht sichtbar. Wenn die Suchfunktion auch diese 9 "Unterseiten" berücksichtigen soll, müßte ich das der Suchfunktion irgendwie mitteilen. Da aber die Suchfunktion auf solche dynamischen Inhaltsseiten nicht vorbereitet ist, muß ich mich irgendwie mit dem Plugin in die Suche einmischen.

Bevor ich mir die Suchfunktion ansehe, vorab meine Frage: Gibt es ein Array, an das ich die Inhalte samt der URI anhängen kann? Oder ein Array, wo die abzuklappernden URI's drinstehen - wo mein Plugin die URI's ablegen könnte?
#8
Wenn in einem Inputfeld in der Plugin-Konfiguration Anführungszeichen verwendet werden, führt dies nach Speichern und Wiederladen der Konfiguration zu unerwünschten Effekten, da der HTML-Code nicht mehr stimmt. Beispiel:

Im Inputfeld wird eingetragen:
<img src="/plugins/FFDBNews/rechtspfeil.gif" title="Ältere Nachrichten" alt="Ältere Nachrichten" />Nach dem Speichern wird die Seite zerschossen und im Quellcode der Seite steht:
value="<img src="/plugins/FFDBNews/rechtspfeil.gif" title="Ältere Nachrichten" alt="Ältere Nachrichten" />"So eine Anordnung von Anführungszeichen verträgt natürlich kein Browser.

Abhilfe schaffen hier erst einmal Hochkommata, aber das ist natürlich keine befriedigende Lösung.
#9
Plugins / Webseiten-Titel modifizieren
29. Juli 2010, 12:24:00
Ich möchte in meinem Plugin den Titel der Webseite ändern. In den mozilo-Einstellungen kann man die Reihenfolge/Anzeige von "Ttel der Website", "Kategorie" und "Inhaltsseite" anpassen. Mich interessiert, welche Variablen ich ändern muß. $WEBSITE_NAME für "Ttel der Website" funktioniert ja bestens. $PAGE_REQUEST_URL scheint aber nicht die richtige Variable für "Inhaltsseite" zu sein. Welche ist es dann? Und für "Kategorie"?
#10
Bei einem Test mit dem neuesten XAMPP 1.7.3 und dem dort enthaltenen PHP 5.3.1 wurde in einem meiner Plugins includierter PHP-Code nicht mehr ausgeführt, sondern der Code als reiner Text interpretiert. Ursache war das PHP-Tag in der includierten Datei:

Variante 1:
<?
?>

Variante 2:
<?php
?>

Ich habe bisher immer die kurze Variante 1 benutzt. Doch die ist nur erlaubt, wenn in der php.ini short_opentag auf On steht. Standardmäßig ist das bei den meisten Hostern der Fall. Die XAMPP-Macher benutzen die weniger gebräuchliche Variante - und sorgten bei mir für Haareraufen.
#11
Wenn man eine Inhaltsseite mit einem Passwort schützt, dann muß man jedes Mal, wenn man die Seite aufruft, das Passwort erneut eingeben. Das ist zum einen sehr lästig und gestattet auch keine Formularverarbeitung (per POST, GET nicht geprüft) auf der geschützten Seite. Beim erneuten Aufruf der Seite (mit erneuter Passworteingabe) werden die Formulardaten nicht weitergereicht.

Der Zugang zu einer geschützten Seite sollte zumindest für die Dauer der Sitzung erhalten bleiben und eine sich immer wiederholende Passwortabfrage vermieden werden.
#12
Wo kann ich die Schriftart und -größe im Editor (Adminbereich) einstellen? Eine Änderung von textarea#pagecontent in adminstyle.css hat nichts gebracht.
#13
Wenn in einer Tabelle Leerzeichen nach (oder auch vor?) dem Zelleninhalt sind, ersetzt diese mozilo durch geschützte Leerzeichen. Ich weiß nicht, wer diese Idee hatte und wozu sie gut sein soll. Ich kann mir keinen Anwendungszweck vorstellen, wo das sinnvoll sein könnte. Und ich arbeite viel mit Tabellen.
Wegen dieser geschützten Leerzeichen ist es nahezu unmöglich im Editor schön untereinander geordnete Spalten zu haben - besonders wenn man dort noch zusätzliche Leerzeichen eingefügt hat, um die Tabelle übersichtlich zu halten.

Deshalb mein Vorschlag:

a) Entweder gleich alle Leerzeichen vor und nach dem Zelleninhalt vom Parser entfernen lassen oder
b) in der Konfiguration die Möglichkeit einbauen, dieses Feature abzuschalten.
#14
Ich wünsche mir... / Weiterentwicklung
08. Juli 2010, 18:24:24
Das moziloWiki ist ja schon ganz nett und reicht für einfache Wikis ohne Schnörkel vollkommen aus. Beim Testen ist mir aber aufgefallen, daß

1.) Einträge jeweils mit ihrem Namen verlinkt werden müssen. Eine Möglichkeit wie
Das ist das [eintrag=Hauptmenü (ELOBASE)|Hauptmenü].funktioniert nicht
2.) werden Umlaute in Eintragsnamen ersetzt, was auch nicht gerade das Gelbe vom Ei ist.

Wird moziloWiki überhaupt weiterentwickelt? Der Syntaxparser vom CMS ist doch nahezu identisch mit dem vom Wiki und der Wikiparser konnte doch mit dem vom CMS ersetzt werden.
#15
Wenn Dateien und Verzeichnisse im Adminbereich umbenannt, kopiert oder verschoben werden, wird dann auch der Downloadcounter angepaßt? Oder anders gefragt: Gibt es eine eindeutige Möglichkeit eine Inhaltsseite (z.B. in einem Plugin) wiederzuerkennen, auch wenn diese verschoben oder umbenannt wurde. Ich überlege, ein Seitencounter-Plugin zu schreiben und da wäre es wichtig das die Counterdaten bei diesen Vorgängen erhalten bleiben.

Falls das nicht möglich ist, könnte vielleicht für zukünftige mozilo-Versionen eine eindeutige Seiten-ID eingeführt werden, die von Plugins ausgelesen werden kann. Das würde die Plugin-Programmierung insgesamt sehr erleichtern, so lange es dieses nachteilige System der Dateiverwaltung gibt, das Dateien und Verzeichnisse nach deren sichtbaren Titeln benannt werden (sh. dazu auch das Thema Vorschläge zum Dateihandling). Im Moment ist es schwer, seitenabhängige Plugins zu coden. Dazu müßte wohl direkt in die Inhaltsdatei vom Plugin geschrieben werden.
#16
mozilo-Bug in Admin-Bereich -> Plugins:

Ich habe das Calendar-Plugin eingebunden, aber nicht aktiviert. Trotzdem werde ich mit dem Hinweis genervt, ich solle endlich das Passwort des Plugins ändern, wenn ich die Einstellungen eines (anderen) Plugins speichere. Zudem klappt die Plugin-Konfiguration des deaktivierten Plugins auf.
M.E. sollte man nicht zu einer Änderung eines deaktivierten Plugins genötigt werden. Schließlich kann man die Plugin-Parameter ohnehin nicht ändern, wenn das Plugin deaktiviert ist.
#17
Im Adminbereich scheint bei der Anzeige der Plugin-Konfiguration ein Bug zu sein. Die Plugin-Beschreibung wird nur angezeigt, wenn die index.php des Plugins in UTF-8 kodiert ist. Wandelt man die Datei in eine "normale" Datei um, verschwindet die Beschreibung.
#18
Mein zweites moziloCMS-Projekt ist nahezu fertig: Ein Überblick und Nachschlagewerk über die bisher erschienenen Verbandszeitungen des Berliner Schachverbandes (noch sehr lückenhaft). Anfang Juli, mit Erscheinen von Heft 3/2010, gebe ich die URL auch der Schachgemeinde bekannt.
Für die Anzeige der Digitalisate verwende ich den DigiViewer, den ich als Plugin eingebunden habe. Den per OCR erkannten Text aus den Digitalisaten, habe ich (wenn vorhanden) unter der DigiViewer-Einbindung in die Seite geschrieben. Damit sind die einzelnen Hefte auch durchsuchbar. Bei manchen Suchbegriffen, wird die Trefferliste aber schnell zu lang. Hier wäre eine Voransicht mit den gefundenen Textstellen nett. Aber das ist ja vielleicht für eine spätere mozilo-Version geplant ?!

mb.berlinerschachverband.de
#19
Ich habe gerade bemerkt, daß die Suchfunktion offensichtlich nicht nur die reinen Contentdateien durchsucht, sondern auch die darin enthaltenen Plugins ausführt. Doch nicht immer ist das sinnvoll. Bei mir wird ein Plugin ausgeführt, welches keinen Text zurückliefert. Dadurch wird die Suche verlängert. Gibt es eine Möglichkeit, in einem Plugin festzustellen, ob gerade eine Suche durchgeführt oder die Seite normal geladen wird?
#20
Ich versuche gerade DigiViewer in moziloCMS als Plugin einzubinden. Das klappt auch ganz hervorragend, allerdings mischt sich moziloCMS in die Javascript-Links vom DigiViewer ein. Auf dieser Seite habe ich den DigiViewer eingebunden. Wenn man jetzt die zweite Seite auswählt, zeigt der Browser die Seite in dem DIV-Layer zwar sofort an. Allerdings sieht man das nicht mehr, weil der Browser die Seite gleich weiterlädt und dabei die Parameter in der URI entfernt.

Hat jemand eine Lösung oder Idee? Ich habe beide Seiten jetzt mal lokal gespeichert, muß jetzt noch ein paar Anpassungen machen und will dann testen, um die mozilo-Templates als Fehlerquelle auszuschließen.

EDIT: Es liegt am DigiViewer. Der ignoriert die Parameter in der URI. Ich werde mal den Autor kontaktieren.