Neuigkeiten:

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

Hauptmenü

Richtige Interpretation der CMS-Syntax

Begonnen von piepstachel, 07. Mai 2012, 16:12:03

« vorheriges - nächstes »

piepstachel

Hallo,

ich habe mich an einem Plugin versucht, dass es ermöglichen soll, zu jeder Inhaltsseite eine extra Sidebar zu verwalten.
Ich habe in der template.html ein Platzhalter eingefügt. Die Sidebar-Datei wird gefunden, wird auch an der richtigen Stelle eingefügt und der Inhalt wird auch faaaast richtig interpretiert.
Allerdings werden Zeilenumbrüche ignoriert, d.h. er schreibt alles in eine Zeile.
Was mache ich falsch???

Viele Grüße piepstachel

HPdesigner

#1
Meinst du, wie das Plugin von stefanbe?

Ist die Sidebar Datei eine CMS fremde (txt) Datei oder eine versteckte Inhaltsseite? Wie liest du die Datei genau aus?
Check my website devmount.de
and find me on Twitter, Medium, GitHub, StackOverflow, Codepen and Slack

piepstachel

#2
Hallo HPdesigner,

der Inhalt der Sidebar-Datei ist eine versteckte Inhaltsseite. Der Platzhalter in der template.html lautet z. Bsp. {SIDEBAR|sb1_}. Der Dateiname der Sidebar-Datei muss so heißen, wie die Inhaltsdatei + Präfix (aus dem Platzhalter). Die get-Content-Funktion des Plugins sieht folgendermaßen aus:

function getContent($value) {

       global $CAT_REQUEST;
       global $PAGE_REQUEST;
       global $CONTENT_DIR_REL;
    global $EXT_HIDDEN;
    $output = "";
    $curpage = preg_replace('/^d*_/', "", $PAGE_REQUEST);
    $dir = $CONTENT_DIR_REL.$CAT_REQUEST;
    $files = scandir($dir);
    foreach ($files as $file) {
        if (substr($file, -4) == $EXT_HIDDEN) {
        $sbpage = preg_replace('/^d*_/', "", $file);
        $sbpage = substr($sbpage, strlen($value), (strlen($sbpage) - strlen($value) - 4));
if (strcmp($curpage, $sbpage) == 0) {
$fh = fopen($dir."/".$file, 'r');
while ($content = fgets($fh, filesize($dir."/".$file))) {
$output = $output.$content;
}
fclose($fh);
  }
    }
    }
return($output);

}
Ich hoffe, ich konnte mich verständlich machen.

Viele Grüße piepstachel

djr

#3
Zitat von: "piepstachel"ich habe mich an einem Plugin versucht, dass es ermöglichen soll, zu jeder Inhaltsseite eine extra Sidebar zu verwalten.
Zitat von: "HPdesigner"Meinst du, wie das Plugin von stefanbe?
@piepstachel:
Schau Dir stefanbe's Plugin an!
Ich halte seine Variante für Übersichtlicher und zudem ist sie schon fertig.

piepstachel

#4
Hallo,

ich habe das Plugin ausprobiert, aber bei mir funktioniert es irgendwie nicht. Es wird immer eine neue Seite geöffnet, die nur den Inhalt der Sidebar-Seite enthält (unformatiert). Aber selbst, wenn es funktionieren würde - ich kann immer nur eine Sidebar konfigurieren - das empfinde ich als Nachteil.
Ich habe mein Plugin noch einmal zum hoffentlich leichteren Verständnis kommentiert:
function getContent($value) {

       global $CAT_REQUEST;
       global $PAGE_REQUEST;
       global $CONTENT_DIR_REL;
    global $EXT_HIDDEN;
    $output = "";
    $curpage = preg_replace('/^d*_/', "", $PAGE_REQUEST);                                       // Aufbereitung des Inhaltsseiten-Namens für den Vergleich (Entfernung der Pos-Nr.)
    $dir = $CONTENT_DIR_REL.$CAT_REQUEST;                                                        // Erzeugung des kompletten Verzeichnisses der Inhaltsseite
    $files = scandir($dir);                                                                      // Auslesen des Verzeichnisses
    foreach ($files as $file) {                                                                  // Überprüfung jeder einzelnen Datei...
        if (substr($file, -4) == $EXT_HIDDEN) {                                                    // ...sofern es sich um eine versteckte datei handelt
        $sbpage = preg_replace('/^d*_/', "", $file);                                            // Entfernung des Präfixes der Sidebar-Datei
        $sbpage = substr($sbpage, strlen($value), (strlen($sbpage) - strlen($value) - 4));       // Entfernung der Datei-Erweiterung
if (strcmp($curpage, $sbpage) == 0) {                                                    // Test auf Namensgleichheit, wenn ja dann...
$fh = fopen($dir."/".$file, 'r');                                                      // Öffnen der Sidebar-Datei
while ($content = fgets($fh, filesize($dir."/".$file))) {                              // Zeilenweises Einlesen
$output = $output.$content;                                                          // Sammeln der Zeilen für die Ausgabe
}
fclose($fh);                                                                           // Schließen der Sidebar-Datei
  }
    }
    }
return($output);                                                                             // Rückgabe des Sidebar-Quelltextes

    } // function getContent

Ich denke ja, dass es an der Zeile liegt, wo ich die Ausgabe zusammenbaue:
$fh = fopen($dir."/".$file, 'r');                                                      // Öffnen der Sidebar-Datei
while ($content = fgets($fh, filesize($dir."/".$file))) {                              // Zeilenweises Einlesen
$output = $output.$content;                                                          // Sammeln der Zeilen für die Ausgabe
}
fclose($fh);  
Gibt es vielleicht noch eine andere Möglichkeit, die Datei auszulesen?
Hat noch jemand eine Idee???

Viele Grüße piepstachel

ManfredB

#5
Warum nicht komplett lesen mit
$content = @file_get_contents($FileName)Wenn der Text in mozilo-Syntax angelegt ist, dann klappt die Formatierung mit
// neues mozilo-Syntax-Objekt
$syntax = new Syntax();
// umwandeln in html
$content = $syntax->convertContent($content, $currentcategory, TRUE);
Bei mir im FeedCreator klappt das bisher stabil.

Gruß ManfredB

piepstachel

#6
Hallo ManfedB,

Dein Vorschlag war genau das, was ich gesucht habe. So funktioniert es tadellos.
Das Ganze werde ich noch ein bischen aufbereiten und dann mal ins Pluginarchiv stellen.

Vielen Dank an alle!

Viele Grüße piepstachel

stefanbe

#7
POSTEDIT: 28.06.2012. 20:09 CET (wasp)

Hab mir das mal angeschaut und euch das mit hilfe der CatPage classe umgebaut
        function getContent($value) {
        global $CatPage;
        global $CAT_REQUEST;
        global $PAGE_REQUEST;
        global $USE_CMS_SYNTAX;
        global $EXT_HIDDEN;
        $cat = $CatPage->get_AsKeyName($CAT_REQUEST);
        $search = $CatPage->get_AsKeyName($PAGE_REQUEST);
        foreach($CatPage->get_PageArray($cat,array($EXT_HIDDEN)) as $page) {
            if($value.$search == $page) {
                $content = $CatPage->get_PageContent($cat,$page,$USE_CMS_SYNTAX,true);
                return $content;
            }
        }
        return "";
    } // function getContent
 
lg stefanbe

wasp

#8
:!:  Code im Vorpost wurde durch stefanbe aktualisiert. Bitte ggf. beachten.

@piepstachel: Doch... Auf den berühmten zweiten Blick eine klasse Sache  :idea:  :!:

Verfügbare Version mit obigen Änderungen läuft bei mir tadellos unter 1.12.ß4 REV948
( maßlose und oder gar rekursiv verweisende Verwendung wird noch (gegen-)geprüft ...)

piepstachel

#9
Hallo,

habe es endlich geschafft, das Plugin nach dem Vorschlag von stefanbe zu überarbeiten. Ich habe es auch schon hochgeladen. Es ist unter FLEXSIDEBAR v2 zu finden. Ich frage mich nur, wie ich die erste Version aus dem Plugin-Archiv entfernen kann?

Viele Grüße

piepstachel

djr

#10
Zitat von: "piepstachel"Ich frage mich nur, wie ich die erste Version aus dem Plugin-Archiv entfernen kann?
Seit einer guten Woche ist es möglich, veraltete Plugins selbst zu löschen. Siehe Artikel hierzu.