Zum Inhalt springen

Extension "jwplayer" zum Laufen bringen

Erstellt am 11. Juli 2011 · 5 Antworten · letzte Antwort am 8. Juni 2012

Tags: Frage

wiz ·

Hallo Freunde,

Ich habe die Extension "jwplayer" entdeckt - sie deckt sowohl den Flash-Bereich als auch HTML5 ab - die eierlegende Wollmichsau, nach der ich gesucht habe. Die Version 0.1.0 lief völlig problemlos. Nun gibt es die 1.0, was, den Konfigurationsmöglichkeiten im Backend folgend, sehr komfortabel wird. Allerdings bekomme ich im Frontend nur "Video is loading ..." - sprich das DIV wird nicht ersetzt.

Leider gibt es kein Manual, das mir auf die Sprünge helfen könnte.

Hat schon jemand das Plugin in der 1.0er Version laufen und kann mir einen Tipp geben?

Danke!

Wiebke

timoefeu ·

Hallo,
ich möchte auch den jwplayer (1.2.4) in TYPO3 4.6.4 nutzen. ExtBase und Fluid musste ich zuvor installieren.

Bekomme aber wie ihr nur diese Elemente eingefügt:

<div class="jwplayer">
	<p id="player4f4611b2b5d1b">Video is loading ...</p>
</div>

Ich vermute mal, dass es am Extbase/Fluid liegt..Der Player läuft dann wohl bei keinem mehr?

BackenDüser ·

Hier eine vorläufige Lösung. Ich habe den Entwickler kontaktiert und warte, was er mir sagt... möchte noch sichergehen, ob der Fehler nicht doch bei mir liegt.

Ich hatte 2 Probleme, wobei das zweite eher auf das hier Beschriebene passt. Beide haben mit der Reihenfolge, in der JavaScripts inkludiert werden, zu tun:

1. Fehlermeldung "jQuery is not defined" in der Firebug-Konsolenausgabe. JS-Dateien der Extension können das via jQuery aufgerufene tx_jwplayer.init() (EXT:jwplayer/Resources/Public/Js/tx_jw_player.js) somit nicht ausführen.

Der Grund: die JS-Files der Extension waren über den jQuery-Files positioniert (siehe EXT:jwplayer/Configuration/TypoScript/setup.txt). Lösung: die Includes aus der setup.txt in eigenem Extensiontemplate überschreiben

page{
  includeJSFooterlibs {
    # JS-Dateien von "includeJSlibs" in "includeJSFooterlibs" verschieben, um die Reihenfolge zu korrigieren
    tx_jw_player < page.includeJSlibs.tx_jw_player 
    jwplayer < page.includeJSlibs.jwplayer
  }
  
  includeJSlibs {
    # eigenes jQuery oben inkludieren, ggf. danach noch jquery.forceOnTop = 1, falls die Reihenfolge immernoch nicht stimmt
    jquery = fileadmin/js/jquery-1.7.1.min.js
    # die alten JS-Includes aus dem Header entfernen, um den Code nicht doppelt zu inkludieren
    tx_jw_player >
    jwplayer >
  }
}

2. "Video is loading ..." anstelle des Players:

Die EXT:jwplayer/Resources/Private/Templates/Player/Index.html bindet mit dem extensioneigenen ScriptViewHelper den JS-Code ein, der den Player baut. Dieser ScriptViewHelper (EXT:jwplayer/Classes/Viewhelpers/ScriptViewHelper.php) bindet den in der Index.html folgenden Code mit der TYPO3-PageRenderer-Funktion addJsInlineCode (class.t3lib_pagerenderer.php::addJsInlineCode) ein. Dieser JS-Code landet damit im Header; da er aber in keinerlei Funktion gewrappt liegt, wird er beim Parsen ausgeführt. Zu dem Zeitpunkt existiert der paragraph, der mit dem Scriptcode durch den Player ersetzt werden soll, noch nicht.

Mir hat der folgende Code in der EXT:jwplayer/Classes/Viewhelpers/ScriptViewHelper.php geholfen (wobei Änderungen direkt in der Extension ja eher vermieden werden sollten):

Die Zeile

$pagerender->addJsInlineCode(md5($content), $content, $compress, $forceOnTop);

ersetzen durch

$pagerender->addJsFooterInlineCode(md5($content), $content, $compress, $forceOnTop);

Die Funktion >addJsFooterInlineCode() unterscheidet sich von >addJsInlineCode() dadurch, dass sie den Inlinecode unten in der Seite einbindet. Dann ist der paragraph schon geladen, wird gefunden und durch den Player ersetzt.