Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> Output des wysiwyg beinflussen
pawel
Beitrag Mon. 14. July 2008, 19:24
Beitrag #1


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Hallo zusammen, ich möchte gern den Output des wysiwyg beeinflussen, d.h. eine Funktion darauf anwenden, nachdem die Redakteure tätig waren. Wo ist das am einfachsten und perfomantesten möglich?

Ich habe mal (sozusagen als proof) ein Minimodul dazugepackt. Das tut, was es soll, den Text in zwei Container zu zerlegen. Aber das leider auch im backend, wodurch auch die js zerschnipselt werden.

edit:
Mist, hier kann ich ja nichts anhängen, dann also die Frontendausgabe:

QUELLTEXT
<CMSPHP>
function get_multicolumn($content) {

        $words = explode(' ', $content);
        $x     = count($words);
        $x     = floor($x / 2);
      
        $return .= '<div id="content_left">' . "\n";
        $return .= '<p>';
      
        $i = 0;
        foreach ($words as $word) {
                $return .=  $word . ' ';
                if ($i == $x) {
                        $return .= '</p>' . "\n";
                        $return .= '</div>' . "\n";
                        $return .= '<div id="content_right">' . "\n";
                        $return .= '<p>';
                }
                $i ++;
        }
      
        $return .= '</p>' . "\n";
        $return .= '</div>' . "\n";
        $return .= '<br style="clear: both" />' . "\n";
      
        return $return;
}
$content = <cms:mod type = "text" id = "1" addslashes="true"/>;
$printout = get_multicolumn($content);
print $printout;
</CMSPHP>
<cms:mod type = "typegroup" elements= "text[1]" title = „Text bearbeiten“  />


--------------------
Go to the top of the page
 
+Quote Post
saschapi
Beitrag Mon. 14. July 2008, 20:05
Beitrag #2


Advanced Member
********

Gruppe: Moderators
Beiträge: 911
Mitglied seit: 26.06.2006
Wohnort: Essen; Ruhrgebiet
Mitglieds-Nr.: 4



Wenn es nur um Frontend/Backend geht dann lass deinen Code doch nur dann ausführen, wenn Sefrengo im Bearbeitungsmodus ist.
QUELLTEXT
if ($view == "edit") {
echo "es kann bearbeitet werden!";
}


smile.gif


--------------------
Go to the top of the page
 
+Quote Post
pawel
Beitrag Tue. 15. July 2008, 19:47
Beitrag #3


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Gute Idee, so gehts
QUELLTEXT
if ($view == "edit") {
$printout = $content;
}else {
$printout = get_multicolumn($content);
}

Bleibt nur das Caching. das habe ich noch nicht ganz gepeilt.


--------------------
Go to the top of the page
 
+Quote Post
bjoern
Beitrag Wed. 16. July 2008, 09:32
Beitrag #4


Administrator
********

Gruppe: Members
Beiträge: 1.092
Mitglied seit: 16.06.2006
Wohnort: Köln
Mitglieds-Nr.: 1



Das Caching funktioniert so, dass alle cms:mod Contentelemente nur einmal die PHP Funktionen durchlaufen und der daraus resultierende Output dann gecacht wird. Der Cache wird ereneurt wenn ein Element bearbeitet wird, die Seite verschoben, konfiguriert wird. Das Templat, Modul oder Layout verändert wird.

Wo macht Dir der Cache Probleme?

Dateien jeglicher Art kannst Du hier hochladen, wenn Du aus diesen vorher ein Zip Archiv macht.


--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post
pawel
Beitrag Wed. 16. July 2008, 17:51
Beitrag #5


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



ZITAT
Wo macht Dir der Cache Probleme?

Beim Verständnis! Hab das Prinzip noch nicht verinnerlicht, cih versuche das aber heute hinzubekommen rolleyes.gif


--------------------
Go to the top of the page
 
+Quote Post
bjoern
Beitrag Wed. 16. July 2008, 18:14
Beitrag #6


Administrator
********

Gruppe: Members
Beiträge: 1.092
Mitglied seit: 16.06.2006
Wohnort: Köln
Mitglieds-Nr.: 1



Prinzip ist so:

Erster Aufruf der Seite im Frontend:
- Prüfung: Ist Seite im Cache: Nein!
- Alle <cms:lay, <cms:mod werden aus Layout, Template und Modulen werden zusammengefasst und in einer Variable gespeichert
- <CMSPHP:CACHE> und <cms:mod tags werden ausgeführt
- Vorkommen von cms://idfile=xy wird ersetzt
- das Ergebnis wird in der Tabelle cms_code gespeichert
- "dynamisches" PHP wird ausgeführt
- Vorkommen von cms://idcatside=xy, cms://idcat=xy werden ersetzt
- Seite wird ausgegeben

Zweiter Aufruf der Seite im Frontend:
- Prüfung: Ist Seite im Cache: Ja!
- Seite wird aus der cms_code tabelle gezogen
- "dynamisches" PHP wird ausgeführt
- Vorkommen von cms://idcatside=xy, cms://idcat=xy werden ersetzt
- Seite wird ausgegeben


--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post
pawel
Beitrag Wed. 16. July 2008, 19:08
Beitrag #7


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Mhm...

so etwas funktioniert nicht
QUELLTEXT
...
<CMSPHP:CACHE>
//Alle Variablen, die nur innerhalb des gecachten PHPs sichtbar sind, auch für dynamisches PHP zur Verfügung stellen

//Auf cms:tags kann nur innerhalb von gecachten PHP zugegriffen werden
$element['value'] = <cms:mod type = "wysiwyg2" id = "1" addslashes="true"/>;

//innerhalb von gecachten PHP wird ein <CMSPHP> Tag erzeugt. Darin wiederum werden die CMS:tag
//Variablen ausgegeben.
echo '<CMSPHP>';
if (is_array($element['value'])) {
foreach($element['value'] AS $k => $v){
    echo '$mvars["'.$k.'"] = "'. addslashes($v) .'";'."\n";
}}
echo '</CMSPHP>';
</CMSPHP:CACHE>

<CMSPHP>
$content = $mvars['value'];
if ($view == "edit") {

...

Derr Content ist zwar in der DB und wird auch beim Aufruf des wysiwyg angezeigt, aber die html-Ausgabe enthält keinen Text.. Irgendwo gibt es noch einen Denkfehler.

PS: Im Wiki sind wohl ein paar eckige Klammern zu viel?


--------------------
Go to the top of the page
 
+Quote Post
Guest_bkm_*
Beitrag Wed. 16. July 2008, 19:37
Beitrag #8





Guests






anderes beispiel vll. hilft's
Go to the top of the page
 
+Quote Post
bjoern
Beitrag Wed. 16. July 2008, 20:21
Beitrag #9


Administrator
********

Gruppe: Members
Beiträge: 1.092
Mitglied seit: 16.06.2006
Wohnort: Köln
Mitglieds-Nr.: 1



Ja, anscheinend war die ['element'] Klammer zu viel. Gehts jetzt?


QUELLTEXT
if (is_array($element)) {
foreach($element AS $k => $v){
    echo '$mvars["'.$k.'"] = "'. addslashes($v) .'";'."\n";
}}


--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post
Guest_bkm_*
Beitrag Wed. 16. July 2008, 20:30
Beitrag #10





Guests






@pawel
alles was du geschrieben hast in einen topf und gut umgerührt wink.gif

download entfernt laugh.gif

Der Beitrag wurde von bkm bearbeitet: Sun. 27. July 2008, 17:14
Go to the top of the page
 
+Quote Post
pawel
Beitrag Wed. 16. July 2008, 21:05
Beitrag #11


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Jupp, geht.

Anbei für Eure Experimente...


Angehängte Datei(en)
Angehängte Datei  Twocolumn.zip ( 1.01KB ) Anzahl der Downloads: 5
 


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 27.4.24 - 09:31

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.