WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 24.03.2020 14:11:35

boeseroeser
Gast

Auto Placeholder, jQuery Probleme

Ich habe ziemlich Troubles nach dem Upgrade auf 1.4.3

Die Site https://oekl-bauen.at/ ist oft sehr langsam (Ladezeit > 10 Sekunden odr mehr, v.a. im Backend), also habe ich an den Output-Filtern gefummelt. Das hat zwar geholfen, aber dann wurde jQuery nicht mehr geladen:
<script src="/include/jquery/jquery-insert.js" id="js_jquery-insert__jquery"></script>
fehlt einfach, der Block beginnt direkt mit "/include/jquery/jquery-insert.js"

Nach weiterem Herumspielen habe ich (möglicherweise) die Einstellung "Auto Placeholder" als Verursacher identifiziert. Nur wenn der an ist, wird jQuery geladen - aber die Ladezeit schnellt wieder hoch.
Das mit der Ladezeit ist natürlich so eine Sache - manchmal merkt man gar nichts, manchmal ist sehr langsam.

Kann es daran liegen, dass die index.php im Template nur weitere Dateien includet? (screen.php ist das eigentliche Template)

Nebenfrage:
Was muss ich ein/ausschalten, dass alles CSS/JS dort bleibt, wo es ausgegeben wird? Ausgenommen (wenn möglich) <style> im body.

Beitrag geändert von boeseroeser (24.03.2020 14:13:59)

#2 24.03.2020 19:53:05

colinax
Developer

Re: Auto Placeholder, jQuery Probleme

Hi,

poste bitte mal den kompletten Head des Templates.

Wenn ich mir die Source der Live Seite ansehe, stimmt da was nicht.

Werden in diesem Template die Contentblöcke gebuffert oder wird SM2_CORRECT_MENU_LINKS verwendet?

Offline

#3 25.03.2020 13:45:52

boeseroeser
Gast

Re: Auto Placeholder, jQuery Probleme

colinax schrieb:

Wenn ich mir die Source der Live Seite ansehe, stimmt da was nicht.
Werden in diesem Template die Contentblöcke gebuffert oder wird SM2_CORRECT_MENU_LINKS verwendet?

Hmm - was stimmt nicht?
Ich spiele mich momentan oft mit den OutputFiltern herum, kann dh öfter mal anders sein.

SM2_CORRECT_MENU_LINKS wird nicht verwendet, Contentblöcke werden gebuffert, aber erst direkt bei der Ausgabe, nicht im Head.
Ist im Kern ein älteres Template., ich kann aber nichts ungewöhnliches erkennen.
Außer dass eben die index.php kaum Inhalt hat, sondern das eigentliche Template (screen.php) includet wird.

Es scheint so zu sein:
Wenn ich Auto Placeholder deaktiviere, fehlt der Block
<script id="script_js_sysvars">
        var URL = WB_URL = 'https://oekl-bauen.at';
...

Ohne diesen funktioniert jQuery nicht.
Undurchsichtig das alles, scheint sich auch gegenseitig zu beeinflussen. Am Ende bleibt einem eh nichts über, als alle Output-Filter zu aktivieren.


Leider machen derzeit viele Leute Teleworking - unter anderem eben auch Website-Pflege. Und ein TimeOut beim Speichern ist eben lästig..
Eigentlich sollte ich eher ins Backend-GEwusel schauen, aber da hab ich keine Ahnung von den Abläufen.

#4 25.03.2020 14:18:19

colinax
Developer

Re: Auto Placeholder, jQuery Probleme

Wird direkt im head gebuffert oder in einer ausgelagerten Datei und wo befindet sich der Code bzw diese Einbindung im head, direkt nach dem head Anfang oder vor dem head Ende?

An den Filtern rumspielen ist keine gute Idee alles was als Standard aktiv ist sollte es auch bleiben, sonst kommen da Ergebnisse raus wo die description und co leer bleiben.

Was mit dem head nicht stimmt, so sieht kein normaler head aus:

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="language" content="de"/>
<title>ÖKL-BAUEN - Plattform für landwirtschaftliches Bauwesen und Stallbau - ÖKL-Bauen</title>
<meta name="description" content=""/>
<meta name="keywords" content=""./>
<meta name="generator" content="WBCE CMS; https://wbce.org"/>
<!--(PH) CSS HEAD MODFILES -->
<!--(PH) JS HEAD MODFILES -->	<script src="/include/jquery/jquery-min.js"></script>
	<script src="/include/jquery/jquery-insert.js"></script>
	<script src="/include/jquery/jquery-migrate-min.js"></script>
	<script src="/include/jquery/jquery_theme.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">




<link rel="stylesheet" href="/templates/oekl/fancybox/jquery.fancybox.min.css" />
<script src="/templates/oekl/fancybox/jquery.fancybox.min.js"></script>


<link href="/templates/oekl/editor.css" rel="stylesheet" type="text/css" />
<link href="/templates/oekl/template.css" rel="stylesheet" type="text/css" />

<link href="/templates/oekl/print.css" rel="stylesheet" type="text/css" media="print"/>


<script type="text/javascript" src="/templates/oekl/standard.js"></script>
<script type="text/javascript">
   var xmlhttpPostLinkURL = "/templates/oekl/quicksearch.php";
</script>

</head>

Um anständig zu helfen muss ich wissen wie die index.php (und in diesem Fall auch die screen.php) aussieht oder FTP und BE Zugang.

Offline

#5 25.03.2020 18:03:40

boeseroeser
Gast

Re: Auto Placeholder, jQuery Probleme

colinax schrieb:

Wird direkt im head gebuffert oder in einer ausgelagerten Datei und wo befindet sich der Code bzw diese Einbindung im head, direkt nach dem head Anfang oder vor dem head Ende?

Die Blöcke werden im Body gepuffert, die Menüs noch VOR dem Head, ganz zu Beginn.
Ich habe jetzt die screen.php, die bisher per include reinkam und alle Ausgabe machte, in die index.php reinkopiert. Ich kann nicht sagen, ob es einen Unterschied macht. Scheint nicht so.

colinax schrieb:

An den Filtern rumspielen ist keine gute Idee alles was als Standard aktiv ist sollte es auch bleiben, sonst kommen da Ergebnisse raus wo die description und co leer bleiben.

Naja: Warum gibt es dann das Dashboard? Ich kann jetzt auch nicht mehr sagen, was der "Standard" ist.
Meta-Description und co sind leer, weil niemand was angegeben hat. ;-)

colinax schrieb:

Was mit dem head nicht stimmt, so sieht kein normaler head aus...

Abgesehen von den Kommentaren - was sollte da nicht normal sein?
Die Kommentare sind da, weil ich den Filter ausgeschaltet habe. Es ist mir lieber, das Zeug ist da drin, als die Ausgabe wird noch zäher.

Es ist nach wie vor so: sobald ich Auto Placeholder deaktiviere ist Schluss mit jQuery.
Das ist für mich nicht recht klar - warum sollte das zusammenhängen?

Ohne Auto Placeholder ist die Ausgabe aber spürbar schneller.

Beitrag geändert von boeseroeser (25.03.2020 18:04:52)

#6 25.03.2020 19:13:01

colinax
Developer

Re: Auto Placeholder, jQuery Probleme

boeseroeser schrieb:

Die Blöcke werden im Body gepuffert, ...

Hier könnte das Problem liegen

Mit dem head jetzt um 18:40 sieht es schön aus und reagiert auch schnell.

Allgemein zum lade Verhalten (soweit ich es verstanden habe) der Core läd sich selbst und die Module sowie Templates und sendet es an das Frontend, der OPF erkennt es, nimmt die Daten - macht sein Ding und gibt es dann am Frontend final aus.

Der OPF hat diverse Filter drinnen die per default aktiv sind und zum korrekten Funktionieren erforderlich sind (trotz der Tatsache dass man diese Filter auch deaktivieren kann).

Aktuell gibt es ein paar Kleinigkeiten wo Probleme auftreten, was den head angeht (aber zu 90% liegt das Problem im Template).

von Core Seite aus
Je nach Verwendung von Features mach php 5.6 Schwierigkeiten.
aktuell gibt es Probleme wenn ein bestimmter Code im Head an der falschen Stelle ist und/oder in eine eigene Datei (z.b. include.php) ausgelagert wurde.

von Template her:
Wenn irgendwas gebuffert wird muss es an der richtigen Stelle sein da sich sonst eine Core Function verschluckt.
Wenn gebuffert wird und mit ob_start(); beginnt muss auch zwingend ob_end_clean() mit dabei sein.

Der Code fürs buffern muss im Head stehen.

Für weitere Infos/Verweise siehe hier und hier.

Offline

#7 25.03.2020 20:19:53

stefanek
Developer

Re: Auto Placeholder, jQuery Probleme

Du kannst mir gerne das Template per Mail schicken.
Ich schaue es mir morgen an.
Es gibt eine gewisse Anomalie in Zusammenhang mit gebufferten content Blöcken. Dazu gab es auch mal ein Issue auf GitHub.

Ich verstehe, dass es ärgerlich ist.
Das Ziel ist den Core so zu pflegen, dass möglichst keine Änderungen an den Templates vorgenommen werden müssen.
Im Großen und Ganzen wurde dieses Ziel auch erreicht, bis auf vereinzelte Fälle, die nicht einfach nachzuvollziehen sind, wenn man den ganzen Code des Templates hat.


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#8 25.03.2020 21:16:49

boeseroeser
Gast

Re: Auto Placeholder, jQuery Probleme

Ich hab jetzt die Buffer in den <head> verschoben.

Vielleicht noch mal zur Klarstellung: Das Problem tritt auf wenn ich Auto Placeholder AUSschalte. Nicht wenn es an ist - dann gehts.
Ich will aber soviel wie möglich AUS schalten, weil die Site sonst zu langsam ist.
Und: Das sollte ja möglich sein - wozu sind die ganzen Schalter denn sonst gut.

Wenn ich in den erweiterten Optionen "Auto Placeholder" abschalte, fehlt der Bereich
<script id="script_js_sysvars">
        var URL = WB_URL = 'https://oekl-bauen.at';
..
</script>
Dann kann jQuery Probleme machen.

Was ich gemacht habe, dass jQuery gar nicht mehr geladen wurde weiß ich nicht mehr. Da hat vielleicht das Verschieben in den head was genutzt.

Die Site ist recht konservativ gemacht, es sollte nicht einmal CSS to head nötig sein.
Basierend auf einem ziemlich gängigen Template ("findle")

Ich denke, ich werde den fehlenden <script> block einfach hart ins Template kopieren. Nur dass sich keiner wundert, wenn er plötzlich da ist.


Hier mal der aktuelle Code bis body. Danach passiert nicht mehr viel besonderes.

[== PHP ==]
<?php

if(!defined('WB_URL')) {
	header('Location: ../index.php');
	exit(0);
	
}
$basistemplate = '/templates/'.basename(dirname(__FILE__));

$style = '';
if(isset($_GET['style'])) { $style = $_GET['style']; }
$printlink = '?style=print';
if (count($_GET)>1) {$printlink= ''.$_SERVER['REQUEST_URI'].'&amp;style=print';}

if ($style == 'print') {


	$printlink = '#';
	include('print.php');
	
	
} else { 
//screen.php
//========================================
/*Menüs*/
ob_start(); 
//show_menu2(1, SM2_ROOT, SM2_START+1, SM2_ALL, '<li><a href="[url]" class="[class]"><span>[menu_title]</span></a>', "</li>", '<ul>', "</ul>", true, '<ul id="header_menu" class="menu">');
show_menu2(1, SM2_ROOT, SM2_ALL, SM2_ALL, '<li class="[class]"><a href="[url]" class="[class]"><span>[menu_title]</span></a>', "</li>", '<ul>', "</ul>", true, '<ul id="header_menu" class="menu">');
$topmenu = ob_get_contents();
ob_end_clean();
$topmenu = str_replace(WB_URL,'', $topmenu);


ob_start();    
show_menu2(1, SM2_ROOT+1, SM2_CURR+1, SM2_TRIM, '<li class="lev[level] [class]"><a href="[url]" class="[class]">[menu_title]</a>', '</li>', '<ul>', '</ul>');
$leftmenu=ob_get_contents();
ob_end_clean(); 
$leftmenuclass = 'noleftmenu';
if (strlen($leftmenu) > 20) {$leftmenuclass = '';}
$leftmenu = str_replace('uebersicht.php" class="', 'uebersicht.php" class="uebersicht ',$leftmenu);

$kontaktlink='[wblink10]';
//$wb->preprocess($kontaktlink);



?><!DOCTYPE html>
<html lang="de">
<head>
<?php if(function_exists('simplepagehead')) {
	simplepagehead(); 
} else { ?>
<title><?php page_title(); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=<?php if(defined('DEFAULT_CHARSET')) { echo DEFAULT_CHARSET; } else { echo 'utf-8'; }?>" />
<meta name="description" content="<?php page_description(); ?>" />
<meta name="keywords" content="<?php page_keywords(); ?>" />

<?php }

register_frontend_modfiles('css');
register_frontend_modfiles('jquery');
register_frontend_modfiles('js');


ob_start(); 	
page_content(1);
$page_content1 = ob_get_contents();
ob_end_clean();


if(defined('TOPIC_BLOCK2') AND TOPIC_BLOCK2 != '') { 
		$page_content2 = TOPIC_BLOCK2; 
} else {
	ob_start();
	page_content(2);
	$page_content2 = ob_get_contents();
	ob_end_clean();
}



 ?>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="<?php echo $basistemplate; ?>/fancybox/jquery.fancybox.min.css" />
<script src="<?php echo $basistemplate; ?>/fancybox/jquery.fancybox.min.js"></script>


<link href="<?php echo $basistemplate; ?>/editor.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $basistemplate; ?>/template.css" rel="stylesheet" type="text/css" />

<link href="<?php echo $basistemplate; ?>/print.css" rel="stylesheet" type="text/css" media="print"/>


<script type="text/javascript" src="<?php echo $basistemplate;?>/standard.js"></script>
<script type="text/javascript">
   var xmlhttpPostLinkURL = "<?php echo $basistemplate;?>/quicksearch.php";
</script>

</head>

#9 25.03.2020 21:27:21

boeseroeser
Gast

Re: Auto Placeholder, jQuery Probleme

"Insert" darf man wie es scheint gar nicht ausschalten.
Dann ist der übliche Block
register_frontend_modfiles('css');
register_frontend_modfiles('jquery');
register_frontend_modfiles('js');

komplett wirkungslos, da kommt gar nichts mehr.

Fußzeile des Forums

up