Neuigkeiten:

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

Hauptmenü

Inhaltsseiten teilweise inkludieren: IncludePage

Begonnen von azett, 06. Mai 2011, 18:15:02

« vorheriges - nächstes »

azett

Salut zusammen,

ich möchte euch mein neues Plugin "IncludePage" vorstellen. Es setzt moziloCMS 1.12.beta4 voraus, denn es nutzt die neue CatPage-Klasse (die das Arbeiten mit den Inhaltsseiten herrlich vereinfacht ???  :mrgreen: )


Anforderungen
Auf meiner privaten Website habe ich in der Kategorie "Start" jeweils eine Inhaltsseite pro Jahr ("2011", "2010", ...), wo ich meine Beiträge sammle.
Die Beiträge bestehen immer aus einer Überschrift (benutzerdefiniertes Syntaxelemen "a_ueber2") und einem DIV mit dem Inhalt (benutzerdefiniertes SE "contentdiv").
Auf der Seite "Aktuelles" wollte ich nun nur die ersten 3 Beiträge des aktuellen Jahres anzeigen, also aus der Inhaltsseite "2011" - und genau das macht das Plugin.


Technik
Das Plugin bekommt drei Parameter übergeben:
  • Name der Inhaltsseite (ggfs auch in anderer Kategorie; dann in bekannter Schreibweise "Kategorie:Seite")
  • zu suchendes Syntaxelement
  • Anzahl des Syntaxelements
Das Plugin liest die übergebene Inhaltsseite ein - gibt aber nur den Teil zurück, in dem das angegebene Syntaxelement genau so oft vorkommt wie gewünscht (z.B. 3x). Sobald das Syntaxelement das nächste (z.B. vierte) Mal auftaucht, wird der Rest abgeschnitten.


Beispiel
Inhaltsseite:[ueber1|Überschrift 1]
viel Text 1
[ueber1|Überschrift 2]
viel Text 2
[ueber1|Überschrift 3]
viel Text 3
Aufruf des Plugins: {IncludePage|Seite|ueber1|2}Ausgabe des Plugins: [ueber1|Überschrift 1]
viel Text 1
[ueber1|Überschrift 2]
viel Text 2
Vor der dritten großen Überschrift wird der Inhalt also abgeschnitten.
Um die Darstellung des zurückgegebenen Seitenteils kümmert sich dann ganz normal der Syntaxparser.


Nutzungsbeispiele
{IncludePage|Seite|ueber1|2} inkludiert die Inhaltsseite bis zur dritten großen Überschrift. {IncludePage|Kategorie:Seite|---|0} inkludiert die Inhaltsseite aus der angebenen Kategorie bis zur ersten horizontalen Trennlinie. {IncludePage|Seite|trenner|5} inkludiert die Inhaltsseite bis zum vierten benutzerdefinierten Syntaxelement 'trenner'.


Bekannte Probleme
Ich weiß noch nicht, warum - aber Tabellen aus inkludierten Inhaltsseiten kommen nicht an :(  -> <table></table> ist im resultierenden HTML-Quelltext, aber keine <tr>s und <td>s.
Vermutung: Die Tabellensyntax wird vom Plugin manipuliert und später vom Syntaxparser nicht mehr erkannt. Muss aber noch ausgiebig erforscht werden - hat wer Lust? ;)



Wenn sonst noch was schiefgeht, lasst es mich wissen - und bitte auch, wenn alles klappt. Das Plugin ist auf meiner Website ausführlich dokumentiert und im Pluginverzeichnis verfügbar; außerdem ists in der stets aktuellen Version im offiziellen Plugin-Nightly-ZIP enthalten.

Viel Spaß beim Ausprobieren! :)

stefanbe

#1
wen du das nimst
list($catparam,$pageparam) = $CatPage->split_CatPage_fromSyntax($params[0]) kanste dir das sparen
        // Kategorie und Seite
        $cat_and_page = explode(":", $params[0]);
        $catparam = "";
        $pageparam = "";
        // "Kategorie:Seite"
        if (count($cat_and_page) == 2) {
            $catparam = $specialchars->replaceSpecialChars($cat_and_page[0],false);
            $pageparam = $specialchars->replaceSpecialChars($cat_and_page[1],false);
        }
        // Seite in gleicher Kategorie ("Seite")
        else {
            $catparam = $CAT_REQUEST;
            $pageparam = $specialchars->replaceSpecialChars($cat_and_page[0],false);
        } 

gruss stefanbe *grins*

freakiger

#2
Das hat gefehlt! Danke!

wie sieht das mir einem "von..." aus? Also z.B.: ab der 2. Syntax bis zur 5ten. (ein "von Syntax-A bis Syntax-B" finde ich übertrieben)

azett

#3
Zitat von: "stefanbe"wen du das nimst
[...]
kanste dir das sparen
[...]
gruss stefanbe *grins*
Und du hast so recht. Die CatPage-Klasse ist einfach wunderbar :)

Die Änderungen sind im SVN und damit im Plugin-Nightly - außerdem habe ich das Plugin trotz des noch offenen Tabellen-Problems ins Pluginarchiv hochgeladen.


Zitat von: "freakiger"wie sieht das mir einem "von..." aus?
War mir klar, dass diese Frage kommt^^ Grundsätzlich ist das möglich, wird aber eine böse RegEx-Schweinerei. "Bis..." ist technisch recht einfach: Gehts z.B. um "ueber2", sucht der aktuelle Algorithmus einfach nach allen Vorkommen von "[ueber2|" und schneidet bei der gewünschten Anzahl einfach davor ab. "Von..." ist komplizierter, da dann ja die schließende eckige Klammer gesucht wird - die aber allein steht und damit alles andere als einfach zu identifizieren ist.

freakiger

#4
@azett: vllt kann man, wenn mein Wunsch der "wegklammer-Syntax" erfüllt ist, "IncludePage" mit dieser kombinieren um ein "von..." zu erreichen!?!