WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 17.04.2016 16:56:42

colinax
Developer

register_frontend_modfiles - JS einbinden

Hallo Community,

nachdieser Anleitung wbce.at/de/topics/typischer-head-eines-templates.php, auf Chios neuer wbce.at Webseite, habe ich mein altes WB Themeplate auf WBCE aktualisiert.

Als ich die Frage stellte ob es nicht besser wäre die JS an das Bodyende zusetzen, hat Chio mir folgenden Befehl gegeben:

Chio schrieb:

if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body(); }

Nach dem ebenfalls verwendeten Befehl:

<?php if (function_exists('register_frontend_modfiles')) { register_frontend_modfiles('css'); } ?>

habe ich das ganze so fertig gestellt:

<?php if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body('js'); } ?>

Leider funktioniert der register_frontend_modfiles_body nicht.

Ich hoffe das mir jemand bei meinem Problem helfen kann.

LG Colinax

Offline

#2 17.04.2016 17:11:21

florian
Administrator

Re: register_frontend_modfiles - JS einbinden

Hallo und willkommen,
register_frontend_modfiles_body ist für Module gedacht, die im Body eigene Scripte nachladen sollen.
Die Funktion schaut nach, ob es im Modulverzeichnis eine Datei namens frontend_body.js gibt, und lädt diese gegebenenfalls.
D.h. die frontend.js (und auch frontend.css) der Module werden so nicht geladen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 17.04.2016 17:20:13

norhei
Developer

Re: register_frontend_modfiles - JS einbinden

Wenn Du eine Domain hättest Wo wir mal schauen könnten wärs leicher...

Hmm Mal sehen , also 
1. Verschiedene Scripte machen Ärger wenn Jquery nicht zuerst geladen wird. Kann also sein das die nicht funktionieren obwohl alles da ist.
2. register_frontend_modfiles_body() schaut in den Modulen nach ob es eine   frontend_body.js findet . Die meisten Module beinhalten einen frontend.js.
  Die wird allerdings von der register_frontend_modfiles() geladen also die für den Head. Also eventuell die Modul Datei umbenennen.
3. Ich meine Mich zu erinnern das Jquery nur einmal geladen werden kann . Wenn es also im Head geladen wurde , wird es im Body nicht mehr geladen.
Also register_frontend_modfiles('jquery') oder register_frontend_modfiles_body('jquery') funktionieren nur insgesamt einmal.

Wenn Das alles nicht weiterhilft , nochmal melden , dann schaut jemand vor Ort nach.

Offline

#4 17.04.2016 18:15:57

colinax
Developer

Re: register_frontend_modfiles - JS einbinden

@florian und @norhei,

danke für die schnelle Hilfe, ich glaube verstanden zu haben was mein Fehler war.

Der Befehl register_frontend_modfiles_body läd frontend_body Dateien und verschiebt nicht das laden der frontend Dateien an das Bodyende.

Zur Kontrolle gibt's hier meine korrigierte Index Datei:

<?php if(!defined('WB_URL')) {header('Location: ../index.php');	exit(0);} $isfrontpage = false; if ( !isset($page_id) ) { $isfrontpage = true; } ?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta name=viewport content="width=device-width, initial-scale=1">
<?php simplepagehead(); ?>
<link rel="alternate" hreflang="en" href="http://adresse.at/pages/en/" />
<link rel="alternate" hreflang="de" href="http://adresse.at/" />
<link rel="alternate" hreflang="x-default" href=http://adresse.at/" />
<link rel="stylesheet" href="<?php echo TEMPLATE_DIR; ?>/css/normalize.css">
<link rel="stylesheet" media="all" href="<?php echo TEMPLATE_DIR; ?>/css/style.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Forum">
<link rel="stylesheet" href="<?php echo TEMPLATE_DIR; ?>/css/magnific-popup.css">
<?php if (function_exists('register_frontend_modfiles')) { register_frontend_modfiles('css'); } ?>
<script src="<?php echo TEMPLATE_DIR; ?>/js/jquery.min.js" type="text/javascript"></script>
<?php $headerbild_id = ""; $takeit = false;
if (PARENT == 0) {
    if (file_exists(WB_PATH . '/media/heroimages/hero_' . PAGE_ID . '.jpg')) { $headerbild_id = PAGE_ID; $takeit = true; } }
else {
    if (file_exists(WB_PATH . '/media/heroimages/hero_' . PARENT . '.jpg')) { $headerbild_id = PARENT; $takeit = true; }
    if (file_exists(WB_PATH . '/media/heroimages/hero_' . PAGE_ID . '.jpg')) { $headerbild_id = PAGE_ID; $takeit = true; } }
if ($takeit) {} ?>
<style type="text/css">.header { background-image:url(<?php echo WB_URL . '/media/heroimages/hero_' . $headerbild_id . '.jpg'; ?>); } .hero { background-image:url(<?php echo WB_URL . '/media/heroimages/hero_' . $headerbild_id . '.jpg'; ?>); }</style>
</head>
<body>
<div class="header"> ... </div>
<div class="hero"> ... </div>
<div class="content"> ... </div>
<div class="footer"> ... </div>
<?php if (function_exists('register_frontend_modfiles')) { register_frontend_modfiles('js'); } ?>
<?php if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body('js'); } ?>
<script type="text/javascript" src="<?php echo TEMPLATE_DIR; ?>/js/tinynav.min.js"></script> 
<script type="text/javascript">$('html').addClass('js'); $(function () { $(".menu-top").tinyNav({ header: 'Navigation', indent: '» '});	});</script> 
<script type="text/javascript">window.cookieconsent_options = {"message":"Diese Webseite verwendet Cookies. Durch die weitere Nutzung unserer Webseite stimmen Sie der Verwendung von Cookies zu.","dismiss":"OK!","learnMore":"Mehr Infos","link":"/pages/de/impressum.php","theme":"dark-bottom"};</script> 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/1.0.9/cookieconsent.min.js"></script> 
<script src="<?php echo TEMPLATE_DIR; ?>/js/jquery.magnific-popup.min.js" type="text/javascript"></script> 
<script>$('.open-popup-link').magnificPopup({ type:'inline', midClick: false });</script> 
<script>$('.gallery').each(function() { $(this).magnificPopup({ delegate: 'a', type: 'image', gallery: { enabled: true,  preload: [1,1], navigateByImgClick: true,
  arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', tPrev: 'Previous (Left arrow key)', tNext: 'Next (Right arrow key)', tCounter: '<span class="mfp-counter">%curr% of %total%</span>' } }); });</script> 
<script type="text/javascript">var $buoop = {vs:{i:11,f:40,o:30,s:9}, reminder: 0,}; $buoop.ol = window.onload; window.onload=function(){ try {if ($buoop.ol) $buoop.ol();}catch (e) {} var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", "//browser-update.org/update.js"); document.body.appendChild(e); }</script>
</body>
</html>

@norhei

norhei schrieb:

Ich meine Mich zu erinnern das Jquery nur einmal geladen werden kann . Wenn es also im Head geladen wurde , wird es im Body nicht mehr geladen. Also register_frontend_modfiles('jquery') oder register_frontend_modfiles_body('jquery') funktionieren nur insgesamt einmal.

Was ich weis, gilt dass nur, wenn bei beiden Befehlen dieselbe JQuery geladen wird. Wenn ich es manuell einbinde, kann ich schon mehrere JQuery's einbinden, muss nur beachten, dass die Älteren vor den Jüngeren geladen werden und dass sie miteinander kompatibel sind.

Den Befehl register_frontend_modfiles('jquery') finde ich ansich sehr gut, nur durch den Support der JQuery Versionen 1.3.2, 1.6.1, 1.6.4, 1.7.0 und 1.7.1, ist meiner Ansicht die Einbindung des Befehles höchstriskant.

Offline

Fußzeile des Forums

up