[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [v2.2.0] Resource Includer AddOn inkl. LESS/SCSS Support
Seite 1 von 2

[v2.2.0] Resource Includer AddOn inkl. LESS/SCSS Support

Verfasst: 8. Nov 2012, 12:17
von RexDude
Achtung: Addon wird nicht mehr weiterentwickelt und ist ausserdem mit SEO42 fusioniert worden.

Beschreibung:
Dieses AddOn ermöglicht komfortable Einbindung von CSS und JavaScript Dateien über die Klasse `rex_resource_includer` inkl. dem Kombinieren von Dateien um HTTP-Request zu minimieren. Es kommt ausserdem mit einer `.htaccess` Datei welche über einen kompletten Satz an Rewrite Regeln für CSS/JS Versionierung sowie Caching und GZip Einstellungen verfügt.

Features
* Sauber eingestelltes Caching von Resourcen wie Bildern, Fonts, CSS und JS Dateien (.htaccess)
* Alle wichtigen Resourcen werden per GZip ausgeliefert (.htaccess)
* Kombinieren von mehreren JS/CSS Dateien zu einer einzigen Datei um HTTP Request zu minimieren
* Versions-String Mechanismus damit trotz Caching immer die neuste Version einer JS/CSS Datei heruntergeladen wird
* Integrierte LESS sowie SCSS (SASS) Compiler
* Automatische Neukompilierung sowie Neukombinierung der Dateien bei Änderungen der Quell-Dateien
* Überführung von Variablwerten von PHP nach LESS möglich. Mehr Infos in den Codebeispielen und hier: http://leafo.net/lessphp/docs/#setting_ ... s_from_php
* Einbindung von JavaScript Code aus einem REDAXO Template (oder einer Datei) heraus inkl. PHP Interpretierung
* Abgestimmt auf SEO42

Google PageSpeed

Beim Test einer Seite lieferte Google PageSpeed folgende Ergebnisse:

* ohne Resource Includer: 67/100 Punkte
* mit Resource Includer: 96/100 Punkte

Download:
http://www.redaxo.org/de/download/addons/?addon_id=1018

Re: Neues Addon: Smart Includer

Verfasst: 9. Nov 2012, 16:16
von runstop64
Super! Ich habe mich in der letzten Zeit auch an einer solchen Klasse versucht, kam aber nicht so recht voran, das hat sich jetzt wohl erledigt.
Zwei fragen habe ich zum Einsatz:
- Wie steht es um die Möglichkeit den smart_includer in einem Addon zu nutzen?
und
- Planst du eine Methode ein, die die Einzeldateien zusammenfasst?

Danke Dir!
Daniel

Re: Neues Addon: Smart Includer

Verfasst: 9. Nov 2012, 17:47
von jdlx
nice.. vorschlag:

Code: Alles auswählen

$smartIncluder->whiteList('rex_article','4,5,12');
// bzw.
$smartIncluder->blackList('rex_article','7'); 
das 'rex_article' um evtl. später mal noch andere Filtermöglichkeiten unterzubringen.. (auch wenn mir grad keine einfallen ;)

Re: Neues Addon: Smart Includer

Verfasst: 9. Nov 2012, 19:21
von rkemmere
Gute Sache das Ganze! Ggf. kann man die automatische Komprimierung und GZIP Funktion noch mit einbauen ;)

Re: Neues Addon: Smart Includer

Verfasst: 9. Nov 2012, 19:57
von jdlx
rkemmere hat geschrieben:.. automatische Komprimierung ..
yo, +1 dafür ;) Und bei der Gelegenheit in ein (cache)file zusammenlegen.. Thema requests reduzieren (bringt meist mehr als Kompression).

Re: Neues Addon: Smart Includer

Verfasst: 13. Nov 2012, 11:39
von RexDude
@runstop64: Danke :) Zu deinen Fragen:
runstop64 hat geschrieben: - Wie steht es um die Möglichkeit den smart_includer in einem Addon zu nutzen?
Sollte eigentlich kein Problem sein. Man muss vermutlich nur schauen, dass das Addon zuerst geladen wird vor dem Addon welches dann auf die rex_smart_includer Klasse zugreift...was in REX4 nicht so eingach geht...aber in REX5 dann...habe ich gehört :D Zwischenzeitlich kannst du aber vor Benutzung der rex_smart_includer Klasse diese einfach mit einem require_once inkludieren und dann einfach drauf zugreifen. Das Smart Includer Addon macht nämlich momentan auch nix anderes...besteht eigentlich nur aus einer Zeile Code...hihi ;)
runstop64 hat geschrieben: - Planst du eine Methode ein, die die Einzeldateien zusammenfasst?
Du meinst so:

Code: Alles auswählen

$smartIncluder->addCSSFiles(array("foo.css", "bar.css"));
Hmm, dies hat Joachim auch schon vorgeschlagen. Prinzipiell könnte man das zusätzlich zur Verfügung stellen. Ich stehe allerdings mehr auf das untereinander schreiben. Ist besser lesbar finde ich und gerade bei den CSS Files gebe ich der addCSSFile-Methode sowieso immer noch als zweiten Parameter das media-Attribute (screen, print etc.) mit, was bei der einzeiligen Version schwierig wird bzw. vielleicht die Lesbarkeit mindert.

Re: Neues Addon: Smart Includer

Verfasst: 13. Nov 2012, 11:52
von RexDude
jdlx hat geschrieben:nice..
thx! :)
jdlx hat geschrieben:vorschlag:

Code: Alles auswählen

$smartIncluder->whiteList('rex_article','4,5,12');
// bzw.
$smartIncluder->blackList('rex_article','7'); 
das 'rex_article' um evtl. später mal noch andere Filtermöglichkeiten unterzubringen.. (auch wenn mir grad keine einfallen ;)
hmm, bin mir noch nicht ganz sicher ob ich genau erfasst habe was du gerne habe möchtest ;) Was sollen die Methoden whiteList und blackList genau machen? Und was hat es mit dem ersten Parameter auf sich: 'rex_article'?

Es gibt momtan eine statische Methode isArticleID in der rex_smart_includer Klasse. Man kann damit auf mehrere Artikel prüfen:

Code: Alles auswählen

if (rex_smart_includer::isArticleID(array(4,5,12)) {
    // do somthing
}
Meinst du vielleicht sowas?

Re: Neues Addon: Smart Includer

Verfasst: 13. Nov 2012, 12:06
von RexDude
rkemmere hat geschrieben:Gute Sache das Ganze! Ggf. kann man die automatische Komprimierung und GZIP Funktion noch mit einbauen ;)
jdlx hat geschrieben:yo, +1 dafür ;) Und bei der Gelegenheit in ein (cache)file zusammenlegen.. Thema requests reduzieren (bringt meist mehr als Kompression).
Prinzipiell meint ihr sowas wie minify macht: http://code.google.com/p/minify/

Wäre für eine zukünftige Version aufjedenfall interessant! Ist auf der TODO Liste ;)

Zwischenzeitlich kann man GZIP über die htaccess regel lassen. Man kann dort auch ruhig eine lange Cache-zeit für die CSS/JS Dateien einstellen. Denn der Smart Includer fügt auf Wunsch einen Timestamp-Paramter zum Dateinamen hinzu, so dass bei einer Versionsänderung der Dateien immer die aktuellsten heruntergeladen wird.

Code: Alles auswählen

$autoVersionParameter = true und $versionParameterRewriteMethod = false
/files/default.css?1351941917

Code: Alles auswählen

$autoVersionParameter = true und $versionParameterRewriteMethod = true
/files/default.1351941917.css

Re: Neues Addon: Smart Includer

Verfasst: 13. Nov 2012, 12:36
von jdlx
RexDude hat geschrieben:hmm, bin mir noch nicht ganz sicher ob ich genau erfasst habe was du gerne habe möchtest ;) Was sollen die Methoden whiteList und blackList genau machen?
Das bezieht sich auf dein README Beispiel.. wobei es in der Form wie ich schrob zu unflexibel ist..
Allgemein: wärs cool wenn man conditions für den include eines bestimmten files oder eine gruppe von files definieren kann.. ohne es mit irgendwelchen if schleifen oder sonstigem extra code machen zu müssen, sondern eben per Klassenmethode, sprich:

Code: Alles auswählen

// fancybox only for article with id = 7
if ($REX["ARTICLE_ID"] == 7) { ...
// stattdessen:
$smartIncluder->blackList('rex_article','7');
 
Daher auch der param "rex_article" in dem Fall.. denkbar wären noch andere sinnvolle Standard FiIlter, UND wichtig imho: custom callbacks.. sprich das wenn ich smart includer verwende, dann z.b. so einen OPF check (oder halt sonstwas spezifisches) per callback als filter einhängen kann.

Was mein obiges Beispiel eben noch nicht berücksichtig sind Zuordnungen.. sprich das man definieren kann welcher filter für welche(s) file (bzw. gruppe von files.. namspaces?) anzuwenden ist.

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 13. Nov 2012, 13:10
von RexDude
@jdlx: Ok habs verstanden...du störst dich an den "uncoolen" If-Abfragen ;) Für mich ist das halt die einfachste und lesbarste Variante eine ganze Gruppe von Stuff (CSS, JS, Code) pro Artikel zu adden.

Zur Callback-Idee: konkretes Use Case auf den Smart Includer bezogen?

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 13. Nov 2012, 13:11
von Joachim.Dörr
Für CSS min Dateien hab ich für BaseCondition folgende Mehtode Entwickelt: https://github.com/joachimdoerr/basecon ... p#L179-189

Code: Alles auswählen

  /*
minimalizer function
*/
  public function process_minimalize ($strBuffer)
  {
    /* remove comments */
    $strBuffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $strBuffer);
    /* remove tabs, spaces, newlines, etc. */
    $strBuffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $strBuffer);
    return $strBuffer;
  }
Kannst Du gerne übernehmen. Funktioniert jedenfalls perfekt.

lg
Joachim

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 13. Nov 2012, 13:50
von RexDude
@Joachim.Dörr: Hey, super vielen Dank! Gerade das preg_replace zur Comments-Entfernung kann ich für den JS Code Output gut gebrauchen!

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 13. Nov 2012, 22:09
von runstop64
Hi, dank dir für die Info. Meine zweite Frage war auf das komprimieren der Daten in einem File bezogen, aber das hast du ja inzwischen auch beantwortet.

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 14. Nov 2012, 02:37
von jdlx
RexDude hat geschrieben:@jdlx: Ok habs verstanden...du störst dich an den "uncoolen" If-Abfragen ;)
Geht nicht um "uncool"... geht darum - wenn man schon eine eigene Klasse dafür hat - typische oder ergänzende Funktionen direkt über Klassenmethoden abzufrühstücken. Das sicherlich typischste Beispiel wäre eben eine article_id white/blacklist.. aber eben auch potentiell andere:
RexDude hat geschrieben:Zur Callback-Idee: konkretes Use Case auf den Smart Includer bezogen?
Wie in dem verlinkten Code.. sprich ein include der vom vorkommen bestimmter Trigger gesteuert wird. In dem konkreten Fall eben kucken ob irgendwo ein rel="shadowbox.. oder rel="lightbox.. im page Output auftaucht, und nur dann die assets einbinden.

Re: Neues Addon: Smart Includer (Einfache Einbindung von JS/

Verfasst: 17. Feb 2013, 17:38
von RexDude
Neue Version 1.4.3:
-Changelog eingeführt
-Dateirechte korrekt gesetzt
-CSS/JS/Image Verzeichnisse lassen sich nun über den Konstruktor einstellen
-Kleine Minifixes, PHP Notices entfernt

Coming soon:
- Einstellungspage a la PHPMailer
- Doku ;)

Und hier nochmal ein Real-life-Beispiel wie so ein Smart-Includer Template aussehen könnte. Vielleicht kommt ja noch der ein oder andere auf den Geschmack ;)

Code: Alles auswählen

<?php

define('ID_HOME', 1);

$smartIncluder = new rex_smart_includer(/* $enableIE = */ true, 
                                        /* $enableTracking = */ true, 
                                        /* $autoJSMinExt = */ true, 
                                        /* $autoVersionParameter = */ true, 
                                        /* $versionParameterRewriteMethod = */ true,
                                        /* $cssDir = */ '/layout/css',
                                        /* $jsDir = */ '/layout/js', 
                                        /* $imageDir = */ '/layout/images');

/* ------------------------------------------------------------------ */
/* Default                                                            */
/* ------------------------------------------------------------------ */

$smartIncluder->addCSSFile('default.css', 'screen,print');
$smartIncluder->addJSFile('jquery.js');

/* ------------------------------------------------------------------ */
/* Tooltip                                                            */
/* ------------------------------------------------------------------ */

// for all but home article
if (!rex_smart_includer::isArticleID(ID_HOME)) {
    $smartIncluder->addJSFile('jquery.tooltip.js');

    $code = 'tooltip();';

    $smartIncluder->addJSCode($code);
}

/* ------------------------------------------------------------------ */
/* Slider                                                             */
/* ------------------------------------------------------------------ */

// for home article only
if (rex_smart_includer::isArticleID(ID_HOME)) {
    $smartIncluder->addJSFile('modernizr.custom.js');
    $smartIncluder->addJSFile('jquery.cslider.js');
    $smartIncluder->addCSSFile('cslider.css', 'screen');

    $code = <<<EOT
        $('#da-slider').cslider({
            current     : 0,    
            bgincrement : 0,
            autoplay    : true,
            interval    : 4000
        });
EOT;

    $smartIncluder->addJSCode($code);
}

/* ------------------------------------------------------------------ */
/* Fancybox                                                           */
/* ------------------------------------------------------------------ */

if (rex_globals::articleHasFancyBoxLink()) {
    $smartIncluder->addJSFile('jquery.fancybox.js');
    $smartIncluder->addCSSFile('fancybox.css', 'screen');
    $smartIncluder->preloadImage('icon_magnify.png');
    
    $code = <<<EOT
        $("a.fancybox").fancybox();
EOT;

    $smartIncluder->addJSCode($code);
}

/* ------------------------------------------------------------------ */
/* Print CSS                                                          */
/* ------------------------------------------------------------------ */

$smartIncluder->addCSSFile('print.css', 'print');

?>

Re: [v1.4.3] Smart Includer - Elegante Einbindung von JS/CSS

Verfasst: 17. Feb 2013, 20:39
von Ingo
Das ist für mich viel zu komplex. Meine typische minify Konfigurationsdatei sieht so aus:

Code: Alles auswählen

$css = array();
$css[] = '//layout/normalize.css';
$css[] = '//layout/base.css';
$css[] = '//layout/structure.css';
$css[] = '//layout/home.css';
$css[] = '//layout/navs.css';
$css[] = '//layout/forms.css';
$css[] = '//layout/modules.css';
$css[] = '//layout/fancybox/jquery.fancybox-1.3.4.css';

$js = array();
$js[] = '//layout/jquery.js';
$js[] = '//layout/standard.js';
$js[] = '//layout/fancybox/jquery.fancybox-1.3.4.js';
$js[] = '//layout/jquery.scrollto.js';
$js[] = '//layout/jquery.cycle.js';

return array(
    'css' => $css,
    'js' => $js,
);
 
Und der Aufruf im Template so:

Code: Alles auswählen

<head>
    ...
    <link href="/min/?g=css" rel="stylesheet" media="screen" />
    <script src="/min/?g=js"></script>
</head>
Versionierung, Caching und Lint ist in minify drin. Inline Skripte binde ich über Templates ein, wenn sie mehrfach genutzt werden. Knackpunkt ist die Komprimierung und Zusammenfassung der Skripte (nur noch ein Request für alle Skripte/Stylesheet).

Sollte eine Ressource tatsächlich mal abhängig von der Artikel-Id geladen werden sollen (den Fall hatte ich ehrlichgesagt noch nie), würde ich die Abfrage lieber direkt im Template machen (bzw. dem Artikel ein eigenes Template spendieren).

Aber so hat jeder seine eingenen Vorlieben ;)

Re: [v1.4.3] Smart Includer - Elegante Einbindung von JS/CSS

Verfasst: 17. Feb 2013, 20:49
von RexDude
Ingo hat geschrieben:Aber so hat jeder seine eingenen Vorlieben ;)
Genau so ist es ;)

Re: [v1.4.3] Smart Includer - Elegante Einbindung von JS/CSS

Verfasst: 17. Feb 2013, 21:14
von RexDude
Übrigens würde dein Code übersetzt für den Smart Includer nicht viel komplexer aussehen:

Code: Alles auswählen

$smartIncluder = new rex_smart_includer();

$smartIncluder->addCSSFile('normalize.css');
$smartIncluder->addCSSFile('base.css');
$smartIncluder->addCSSFile('home.css');
$smartIncluder->addCSSFile('navs.css');
$smartIncluder->addCSSFile('forms.css');
$smartIncluder->addCSSFile('modules.css');
$smartIncluder->addCSSFile('jquery.fancybox-1.3.4.css');

$smartIncluder->addJSFile('jquery.js');
$smartIncluder->addJSFile('standard.js');
$smartIncluder->addJSFile('jquery.fancybox-1.3.4.js');
$smartIncluder->addJSFile('jquery.scrollto.js');
$smartIncluder->addJSFile('jquery.cycle.js'); 
In Zukunft auch so möglich:

Code: Alles auswählen

$smartIncluder->addCSSFiles('normalize.css', 'base.css', 'home.css', 'navs.css', 'forms.css', 'module.css', 'jquery.fancybox1.3.4.css', );
$smartIncluder->addJSFiles('jquery.js', 'standard.js', 'jquery.fancybox1.3.4.js', 'jquery.scrollto.js',  'jquery.cycle.js',);
Ausgabe:

Code: Alles auswählen

<head>
    ...
    <?php $smartIncluder->printCSS(); ?>
    <?php $smartIncluder->printJS(); ?>
</head>
Was mir am Smart Includer so gefällt ist, dass ich alle meine CSS- und JS-Dateien sowie JS-Code an einer Stelle habe in einem Template. Desweiteren kann ich diese wunderbar gruppieren, sodass ich immer genau sehen kann was zusammengehört. In späteren Projekten muss ich lediglich die Gruppe rauskopieren die ich dann brauche. Und zu guter letzt kann ich per PHP meinen JS-Code speisen um z.B. einen Slider der die Images per JS übergeben haben will per MEDIA_LIST zu befüllen. Oder der Interval kann ausm nem MetaInfo gezogen werden etc.

Re: [v1.5.0] Smart Includer AddOn inkl. LESS/SCSS Support

Verfasst: 19. Mai 2013, 14:38
von RexDude
### Version 1.5.0 - 18. Mai 2013

* SCSS/LESS Unterstützung über die Methoden `addSCSSFile(...)` und `addLESSFile(...)` inkl. automatischer Kompilierung zu CSS
* `$autoVersionParameter` (Bool) und `$versionParameterRewriteMethod` gekickt, stattdessen kann man bei `$autoVersionParameter` folgende Werte eingeben: `none`, `querystring`, `rewriterule`
* Kleinere Bugfixes und Korrekturen

### Version 1.4.5 - 23. April 2013

* Methode `autoVersionParameter` umbenannt in `getFileWithParameter`
* Variable `versionParameterRewriteMethod` entfernt, stattdessen `autoVersionParameter` abgeändert
* Tracking Stuff entfernt
* Notices beseitigt
* getCSS()/getJS() Methoden hinzugefügt

------------------------------------------------------------------------------------------------------------

Man kann prinzipiell des Smart Includer auch als reinen LESS/SCSS Compiler einsetzen ohne alle CSS/JS Dateien drüberlaufen zu lassen:

Code: Alles auswählen

$smartIncluder = new rex_smart_includer();
$smartIncluder->addSCSSFile("theme.scss", "screen");
$smartIncluder->printCSS();
Ausgabe: <link rel="stylesheet" href="/files/theme.css" type="text/css" media="screen" />

(Die Ausgabe mit printCSS() kann man sich aber auch sparen und theme.css "von Hand" in den Template Code eintragen)

------------------------------------------------------------------------------------------------------------

Was auch interessant ist: Der LESS Compiler "lessphp" bietet die Möglichkeit Variabelwerte aus PHP ins LESS und damit ins CSS zu überführen. http://leafo.net/lessphp/docs/#setting_ ... s_from_php

Per Smart Includer kann man das Variablen-Array als zweiten Parameter übergeben.

Code: Alles auswählen

function addLESSFile($lessFile, $lessVars = array(), $media = 'screen', $ieOnly = false, $ieCondition = '') 
------------------------------------------------------------------------------------------------------------

Have fun! :)

EDIT 28.05.2013: Es ist ein kleiner Bug aufgetaucht (https://github.com/RexDude/smart_includer/issues/6) der in der aktuellen GitHub Version aber bereits gefixt ist.

Re: [v1.5.0] Smart Includer AddOn inkl. LESS/SCSS Support

Verfasst: 19. Mai 2013, 17:04
von Peter.Bickel
Danke für LESS/SCSS-Support. Klasse Sache!

Re: [v1.5.2] Smart Includer AddOn inkl. LESS/SCSS Support

Verfasst: 1. Aug 2013, 16:57
von RexDude
### Version 1.5.2 - 12. September 2013

* `addCSS()` und `addJS()` Methoden können nun auch URLs aufnehmen. Siehe Beispielanwendung.
* Konstanten SM_VERSIONPARAM_NONE, SM_VERSIONPARAM_QUERYSTRING, SM_VERSIONPARAM_REWRITERULE eingeführt als Werte für die Konstruktorvariable `$autoVersionParameter`

## Version 1.5.1 - 01. August 2013

* lessphp und scssphp Klassen auf die neusten Versionen gebracht
* Kleine Codeverbesserungen/Fixes. Danke an Gregor :)
* Fixed #6: Bug behoben der zu unkorrekten scss/less Dateinamen führte

Re: [v2.0.0] Resource Includer AddOn inkl. LESS/SCSS Support

Verfasst: 7. Nov 2013, 13:57
von RexDude
So nun hab ich endlich auch mal den Rewrite meines Smart Includer Addons geschafft (was jetzt auch Resource Includer heißt :lol: ).

Features:
https://github.com/RexDude/resource_includer#features

Hier wird der Gebrauch der öffentlichen PHP-Methoden gezeigt:

Code: Alles auswählen

<!DOCTYPE html>

<html lang="de">
<head>
    <link rel="stylesheet" href="<?php echo rex_resource_includer::getCSSFile("default.css"); ?>" type="text/css" media="screen,print" />
    <link rel="stylesheet" href="<?php echo rex_resource_includer::getCSSFile("theme.scss"); ?>" type="text/css" media="screen,print" />
    <link rel="stylesheet" href="<?php echo rex_resource_includer::getCSSFile("stuff.less", array("color" => "red", "base" => "960px")); ?>" type="text/css" media="screen" />
    <link rel="stylesheet" href="<?php echo rex_resource_includer::getCSSFile("http://fonts.googleapis.com/css?family=Fjalla+One"); ?>" type="text/css" media="screen" />
    <link rel="stylesheet" href="<?php echo rex_resource_includer::getCombinedCSSFile("combined.css", array("foo.css", "bar.scss", "batz.less"); ?>" type="text/css" media="screen" />
    <link rel="shortcut icon" href="<?php echo rex_resource_includer::getImageFile("favicon.ico"); ?>" type="image/x-icon" />
</head>

<body>
<div id="container"></div>
<script type="text/javascript" src="<?php echo rex_resource_includer::getJSFile("http://codeorigin.jquery.com/jquery-2.0.3.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo rex_resource_includer::getCombinedJSFile("combined.js", array("jquery.magnific-popup.min.js", "jquery.nivo-slider.min.js")); ?>"></script>
<script type="text/javascript" src="<?php echo rex_resource_includer::getJSFile("init.js"); ?>"></script>
<script type="text/javascript"><?php echo rex_resource_includer::getJSCodeFromTemplate(5); ?></script>
</body>
</html>
Und so sieht dann die Ausgabe aus:

Code: Alles auswählen

<!DOCTYPE html>

<html lang="de">
<head>
    <link rel="stylesheet" href="/resources/css/default.1383590596.css" type="text/css" media="screen,print" />
    <link rel="stylesheet" href="/resources/css/theme.1387210364.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="/resources/css/stuff.13835987210.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Fjalla+One" type="text/css" media="print" />
    <link rel="stylesheet" href="/resources/css/combined.13887210596.css" type="text/css" media="screen" />
    <link rel="shortcut icon" href="/resources/images/favicon.ico" type="image/x-icon" />
</head>

<body>
<div id="container"></div>
<script type="text/javascript" src="http://codeorigin.jquery.com/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="/resources/js/combined.13835987210.js"></script>
<script type="text/javascript" src="/resources/js/init.13887210596.js"></script>
<script type="text/javascript">var foo = "dieser string kommt aus einer php variable :)"; alert(foo);</script>
</body>
</html>
Viel Spaß damit wer es nutzen möchte. Download wie immer im Downloadbereich oder per GitHub. Und Bugs bitte wie immer direkt auf GitHub melden :)

Re: [v2.1.0] Resource Includer AddOn inkl. LESS/SCSS Support

Verfasst: 10. Nov 2013, 15:59
von RexDude
Falls noch jemand ein Grund sucht das Baby einzusetzen... ;)

Beim Test einer Seite (kein 1und1 Server ;)) lieferte Google PageSpeed folgende Ergebnisse:

* ohne Resource Includer: 67/100 Punkte
* mit Resource Includer: 96/100 Punkte

### Version 2.1.1 - 13. Novermber 2013

* `.htaccess` Datei SEO42 2.8.0 angepasst
* Textkorrekturen

### Version 2.1.0 - 10. Novermber 2013

* `.htaccess` verbessert. An Boilerplate `.htaccess` Datei orientiert
* Patch verbessert. Hartcodierten Header rausgenommen
* 1 neue Einstellungen um den X-UA-Compatible zu senden

Re: [v2.1.0] Resource Includer AddOn inkl. LESS/SCSS Support

Verfasst: 10. Nov 2013, 16:42
von Peter.Bickel
:)
Ich brauch keinen Grund, ich hab schon genügend.
Ich finde das Ding super, wirklich sehr flexibel.

Re: [v2.1.2] Resource Includer AddOn inkl. LESS/SCSS Support

Verfasst: 23. Nov 2013, 23:31
von RexDude
Vielen Dank Peter :)

### Version 2.1.2 - 23. November 2013

* Hinweis aufgenommen: Der Patch in Setup Schritt 3 ist ab REDAXO 4.5.1 nicht mehr nötig!
* `.htaccess` Datei an SEO42 2.8.1 angepasst