CnC: Cache&Compress für CMSimple_XH

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
frase
Posts: 2341
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: CnC: Cache&Compress für CMSimple_XH

Post by frase » Fri Jul 06, 2018 9:41 am

Habe gerade ein Problem, was ich mir nicht so recht erklären kann.
Wahrscheinlich mache ich nur wieder mal etwas falsch.

Ich habe ein (Test-)Template, in dem ich einen Teil der Seite (Hero) per Javascript ausgeben muss (Thread dazu).
Der Hero-Text wird über "morepagedata" festgelegt.
Im Test-Template auf der Seite Datenschutz tritt ein eigenartiges Phänomen auf, sobald ich CnC aktiviere.

Der morepagedata-Eintrag für die zweite Textzeile im Hero lautet:

Code: Select all

Der Datenschutz ist uns <em>seeeehr</em> wichtig!
Ab "seeeehr" wird die Schrift auch wirklich kursiv - hört aber gar nicht mehr damit auf.
Der gesamte Rest der Seite, bis in den Footer, bleibt kursiv.

Schalte ich CnC auf inaktiv, dann ist alles wieder in Ordnung.
In der CnC-Konfiguration habe ich morepagedata unter Ignore bei JS und CSS eingetragen. Ich glaube aber, das hat gar nichts mit morepagedata zu tun, sondern mit dem Script-Aufruf im Template. Möglicherweise ist die Maskierung der Slashes falsch?
Die betreffende Zeile sieht im Template so aus:

Code: Select all

document.write('... <p class="container"><?php if(isset($heroText)){echo $heroText;}else{echo '';}?><\/p> ...');
Irgendetwas passiert da bei der Minifizierung.
Aber was?
Ich lasse mal die "kaputte" Demo so stehen. Später, bei der Veröffentlichung des Templates, werde ich CnC deaktivieren müssen.
Oder, wir finden eine Lösung.

Nachtrag:
Im Quelltext der gerenderten Seite sieht der JS-Aufruf so aus:

Code: Select all

document.write(' ... <p class="container">Der Datenschutz ist uns <em>seeeehr wichtig!<\/p> ... ');
Das schließende </em> ist also verschwunden.

cmb
Posts: 12934
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: CnC: Cache&Compress für CMSimple_XH

Post by cmb » Fri Jul 06, 2018 11:02 am

frase wrote:
Fri Jul 06, 2018 9:41 am
Möglicherweise ist die Maskierung der Slashes falsch?
Ich denke, das ist das Problem. Probier doch mal folgenden Morepagedata-Eintrag:

Code: Select all

Der Datenschutz ist uns <em>seeeehr<\/em> wichtig!
Oder allgemeiner im Template:

Code: Select all

document.write('... <p class="container"><?php if(isset($heroText)){echo str_replace('</', '<\/', $heroText);}?><\/p> ...');
(das überflüssige else habe ich auch gleich entfernt)

Selbst wenn obiges nun auch mit CnC funktioniert, gibt es dennoch ein allgemeines Problem, wenn im Morepagedata-Eintrag einfache Anführungszeichen (') vorkommen. Ich verzichte daher lieber ganz auf solche JS/PHP-Mixe, und würde eher folgendes versuchen:

Code: Select all

var heroText = <?=json_encode(isset($heroText) ? $heroText : '')?>;
document.write('... <p class="container">' + heroText + '<\/p> ...');
Christoph M. Becker –Plugins for CMSimple_XH

frase
Posts: 2341
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: CnC: Cache&Compress für CMSimple_XH

Post by frase » Fri Jul 06, 2018 11:08 am

Danke.
Ich werde das alles gleich durchprobieren.

Was ich vorher schon probierte ist:

Code: Select all

Der Datenschutz ist uns <em>seeeehr wichtig!<\/em>
Hier greift aber wieder irgendeine Bereinigungsfunktion von morepagedata (oder vom Core?). Der Backslash ist beim nächsten Aufruf wieder weg.

frase
Posts: 2341
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: CnC: Cache&Compress für CMSimple_XH

Post by frase » Fri Jul 06, 2018 11:59 am

Hu. Ha. Brrrrr.

Das war ja 'n Ding.
Mein Template-Code sieht jetzt so aus:

Code: Select all

<!-- HERO SECTION -->
<script>
var heroHeadline = <?=json_encode(isset($heroHeadline) ? $heroHeadline : $title)?>;
var heroText = <?=json_encode(isset($heroText) ? $heroText : '')?>;
document.write('<section class="hero">');
document.write('<div class="hero-inner">');
document.write('<p class="heroHeadline container">' + heroHeadline + '<\/p>');
document.write('<p class="container">' + heroText + '<\/p>');
document.write('<div class="heroScroll"><div><a href="#start"><span class="chevronBtn fa fa-angle-down fa-3x"><\/span><\/a><\/div><\/div>');
document.write('<\/div><\/section>');
</script>
Und wenn ich jetzt in morepagedata Text mit html-Tags eingebe ...
... na? ...
Es klappt!
MIT und OHNE CnC.
Einfach super!

Vielen, vielen Dank, Christoph!
(Programmierer-Krone on your head.)

(Da kann ich jetzt die Demo aktualisieren. Spätere Leser können das dann nicht mehr nachvollziehen.)

Post Reply