Zum Inhalt springen

Werte mit extConf an Extension übergeben

Erstellt am 16. November 2011 · 2 Antworten · letzte Antwort am 18. November 2011

Tags: PHP, JavaScript & AJAX, Frage

Chrissli ·

Hallo zusammen!

Ich nutze die Extension "jquery_fancybox" um meine Bilder schön
aufpoppen zu lassen 🙂

Leider für die Extension den Javascript-Code automatisch selbst ein.
Das wäre prinzipiell kein Problem, allerdings möchte ich für die SEO
sämtliches Javascript komprimiert haben, was beim automatischen Laden leider
nicht der Fall ist.

Die Extension prüft wohl auch ob in der Variable $extConf der Wert "disableJsFramework"
gesetzt ist und entscheidet anhand von diesem, ob das Javascript automatisch eingebunden
werden soll:

...
/**     Patch by: Jesse Adler (jesse.adler@telekom.de)
        Check extConf['disableJsFramework']: If flag is set, do not use the included JS Framework.
        Use own method of including jQuery instead */
        $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['jq_fancybox']);
        if (!$extConf['disableJsFramework']) {
          $GLOBALS['TSFE']->additionalHeaderData['jq_fancybox_jquery'] = '        <script type="text/javascript" src="'.t3lib_extMgm::siteRelPath('jq_fancybox').'fancybox/js/jquery-1.4.2.min.js"></script>';
        }
...

Leider weiß ich nicht wie ich den Wert in $extConf['disableJsFramework'] setzen/übergeben kann.

Habe es schon mit Typoscript

plugin.tx_jqfancybox_pi1.disableJsFramework = 1

und in der localconf.php versucht

$TYPO3_CONF_VARS['EXT']['extConf']['jq_fancybox']['disableJsFramework'] = 1;

hat leider beides nicht funktioniert.

Hat jemand Erfahrung, wie diese Werte gesetzt werden?

Julian.​Hofmann ·

Hallo.

Die $extConf ist überlicherweise das, was Du via Extensionmanager konfigurieren kannst.

Der Ansatz mit/über PHP wäre eine Möglichkeit, die Konfiguration (auf böse Weise) zu überbügeln. Nur hast Du das in falscher Form zugewiesen. $GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['jq_fancybox'] müsste serialisierte Daten enthalten, da ja ein unserialize() drauf angewendet wird. Du hast aber einfach ein Array draus geformt und ein key-Value-Paar erzeugt.

Viele Grüße
julian

Chrissli ·

Danke Julian!

Habe das zwar gesehen, bin aber ohne zu testen
mal davon ausgegangen, dass die Werte in der localconf.php vielleicht
bei einlesen automatisch serialisiert werden und hab' dann später
auch nicht mehr darüber nachgedacht *schäm*

Tatsache ist, das es im Ordner
typo3conf/ext/jq_fancybox/
eine Datei mit dem Namen "ext_conf_template.txt" gibt, mit
der Beschreibung, was die Werte bedeuten z.b.

# type: boolean; description: dont load jquery.js automatically, use your own method... << so ähnlich
disableJsFrameWork = 0

# type: boolean; description: dont load fancybox.js automatically, use your own method... << so ähnlich
disableLightbox = 0

Habe dann auch mal versucht diese Werte zu verändern, hat aber nicht geholfen, ebenso wie das kopieren/umbenennen der Datei von ext_conf_template.txt nach ext_conf.txt ( hät ja sein können 😉 )

Der ExtensionManager hat leider keine Werte unter Konfiguration angezeigt. Vielleicht war ich ja auch völlig falsch?
ExtentionManager -> Plugin auswählen -> Reiter "Konfiguration" ( andere Reiter waren leider ebenso unergiebig )

Schließlich und endlich habe ich dann doch die PHP-Keule mit localconf.php gewählt, Zeit ist ja bekanntlich Geld und dieses nicht immer im Überfluss vorhanden.

Auszug localconf.php:

$TYPO3_CONF_VARS['EXT']['extConf']['jq_fancybox'] = serialize(array('disableJsFramework'=>1));

Bringt den gewünschten Effekt.
Anschließend können mit

page {
  config {
    compressJs = 1
    compressCss = 1
  }
  includeCSS.1 < plugin.tx_jqfancybox_pi1.stylesheetPath  
  includeJS.1 = scripts/jquery.fancybox/jquery.min.js
  includeJS.2 = scripts/jquery.fancybox/fancybox/jquery.fancybox.pack.js
}
plugin.tx_jqfancybox_pi1.stylesheetPath >

die CSS/JS Dateien manuell mit Typoscript eingebunden und komprimiert werden.
Nur die fancybox-Konfiguration wird direkt in der HTML-Output geschrieben, was ja OK ist,
das laut google-Pagespeed kleinere JS direkt ins HTML-können.

Wenn jemand eine bessere Lösung weiß die extConf-Werte zu setzen und ich habe nur was übersehen, immer
her damit, irgendjemand wird sich bestimmt mal darüber freuen ( vorrausgesetzt die Suchfunktion wird
erfolgreich benutzt 😃 )

Ansonsten: Mission accomplished