Skip to main content

 Natives Javascript mit php in Templates einbinden

Die Doku zu Javascript  hat sich bei 5.1 leicht geändert . 

Wer diese Skripten nicht direkt in das Template einbinden will, kann sie auch in einer zur template.php parallelen settings.php eintragen.

<?php   global $page, $config;

$path = $page->theme_dir.'/drop_down_menu.php';

include_once($path); // php aus Templateverzeichnis ist eingebunden

echo $path ; // H:/xammp7025/htdocs/type51/themes/btheme/drop_down_menu.php -- PHP
 

A.  js eines Template aus  dessen Unterverzeichnis /js  einbinden :

$page->head_js[] = dirname($page->theme_path) . '/js/script.js';

Ein neuerer und besserer Standard ist

$page->head_js[] = rawurldecode($page->theme_path).'/js/script.js';

B. Für Scripte :

$page->head .= '<script>alert("hello world")</script>';

C. Für externe Js-Skripte >:

$page->head .= '<script src="jquery-plugins"></script>';

D. Javascripte für Kompatibibilität mit älteren Browsern (im Head!) :

<!--[if lt IE 9]><?php
    // HTML5 shim, for IE6-8 support of HTML5 elements
    gpOutput::GetComponents( 'html5shiv' );
    gpOutput::GetComponents( 'respondjs' );
    ?><![endif]-->

Dieses Laden verzögert allerdings das Laden.


E. Ladbare Komponenten

<?php
 common::LoadComponents( 'bootstrap3-js' );
    gpOutput::GetHead();
    ?>
common::LoadComponents('bootstrap3-all');  

 lädt alle bootstrap-3 Komponenten.  Für die entsprechenden Javascripts :

\gp\tool::LoadComponents('fontawesome,respondjs,bootstrap3-js');

F. Einen php-Befehl mit > Javascript ausführen ...( statt mit php )

let pi = document.createProcessingInstruction('php', 'echo "Hallo Welt";');
 
G. Sicherheit
 
Ein kleines natives Javascript kann für zusätzliche Sicherheit und Google - Wohlwollen (nofollow noopener") sorgen (eingebunden in eine init.js; Ref.)
function externalLinks() {   for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) {     var b = c[a];     
b.getAttribute("href") && b.hostname !== location.hostname && (b.rel = "nofollow noopener")   } } ; externalLinks();
 
<IfModule pagespeed_module>
    ModPagespeed off
</IfModule>

Typesetter hat allerdings schon einen unter "Einstellungen" aktivierbaren eingebauten  Javascript_Minifier. 

Mod_deflate zippt die übertragenen Daten ebenfalls noch weiter.