Neu Wie ändere ich die nTemplateVersion? v=1

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Hallo zusammen,
was muss ich machen, um den Zähler bei den einzubindenen Template-Dateien zu ändern? Also das v=1 am Ende der URLs?
HTML:
<link type="text/css" href="xxx/bootstrap.css?v=1" rel="stylesheet">
<link type="text/css" href="xxx/basteltheme.css?v=1" rel="stylesheet">
<link type="text/css" href="xxx/offcanvas-menu.css?v=1" rel="stylesheet">

PHP:
<link type="text/css" href="{$cCSS}?v={$nTemplateVersion}" rel="stylesheet">
Wie ändere ich den Wert von nTemplateVersion?

Ich möchte den Expires Wert auf einen Monat erhöhen, dann brauche ich aber eine Möglichkeit bei einem Update auch die neuen Daten an die User ausliefern zu können.

Danke und frohe Ostern,
Mike
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
Schau am besten in die header.tpl und auch in die footer.tpl, dort werden die einzelnen Dateien ja eingebunden.


Mein Vorschlag, da ich denke das du den cache unter anderem für Google erhöhen möchtest, mach das so

Im Original sieht das im header so aus
Code:
  <link type="text/css" href="asset/{$Einstellungen.template.theme.theme_default}.css{if isset($cPluginCss_arr) && $cPluginCss_arr|@count > 0},plugin_css{/if}?v={$nTemplateVersion}" rel="stylesheet">

ändere das auf
Code:
            <link type="text/css" href="asset/{$Einstellungen.template.theme.theme_default}.css{if isset($cPluginCss_arr) && $cPluginCss_arr|@count > 0},plugin_css{/if}&{$smarty.now|date_format:'%e%I'}" rel="stylesheet">

nun ist dein cache für diese Datei ein Jahr haltbar, in Wirklichkeit erneuert sich der für einen wiederkommenden User aber nach einer Stunde, es könnte ja sein das du mal Änderungen am stylesheet vornimmst.

gleiches machst du auch in den JS Dateien die sich im Footer befinden.

was habe ich gemacht:

aus dem ?v={$nTemplateVersion} was einen cache von 24h produziert, habe ich ein &{$smarty.now|date_format:'%e%I'} gemacht.

warum:
In der config vom minifi steht drin das wenn man &1234 übergibt, wird der cache automatisch auf ein Jahr gesetzt.
Da wir aber wollen das der User unsere css und js nicht wirklich ein Jahr cached weil ja immer Änderungen vorkommen können, habe ich nur einen Teil von einem Zeitstempel übergeben.

Mach das aber nur mit den Minifizierten Daten.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Hi,
so etwas empfinde ich aber eher als "Notlösung". Warum kann man das nicht gleich "richtig" machen? Wir haben damals einen eigenen XTC-Fork rausgebracht. Dort wurden auch die CSS und JS für das Template automatisch zusammengefasst und verkleinert. Bei Änderungen (wenn der Shop die CSS neu generieren musste) wurde automatisch ein Zähler erhöht und alle haben sofort die Änderungen mitbekommen.

Ich habe mir jetzt noch mal den Code angesehen - es war viel zu einfach! :D

Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Template>
    <Name>Basteln-Selbermachen Template</Name>
    <URL>https://www.basteln-selbermachen.de</URL>
    <Version>1.02</Version>
    <ShopVersion>405</ShopVersion>
    <Parent>Evo</Parent>

Ich hatte schon testweise die Version in der tempate.xml hochgezählt - dann sehe ich das im Backend bei der Übersicht schon richtig, aber es hatte keinerlei Auswirkung auf den generierten Code. Ich muss nur einmal in die Einstellungen des Templates, nichts ändern, aber "Speichern" klicken. Dann wird die Version in die Datenbank übernommen und mit dem Code ausgeliefert. Man muss nur drauf achten, dass man bei einer Fließkommazahl bleibt.

Frohe Ostern,
Mike
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
ja dann hast du aber nur einen cache von 24h was Google nicht gefällt.

Im XTC war das alles ein wenig einfacher, da man dort direkt im Code rummurksen "konnte/musste"
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Hm,
ok, in der /includes/libs/minify/config.php habe ich den einen Tag gefunden:
PHP:
$min_serveOptions['maxAge'] = 86400;

Aber ich vermute mal, da läuft was schief, denn in der /includes/libs/minify/index.php gibt es eigentlich diesen Code:
PHP:
// check for URI versioning
if (preg_match('/&\\d/', $_SERVER['QUERY_STRING']) || isset($_GET['v'])) {
    $min_serveOptions['maxAge'] = 31536000;
}
Der sollte dafür sorgen, dass bei einem "v" als GET-Parameter das maxAge auf ein Jahr hoch gesetzt wird.

Aber wenn ich diese URL aufrufe: /asset/basteltheme.css?v=1
dann besteht $_GET nur noch aus:
Code:
 ["g"]=> string(15) "basteltheme.css"
Scheinbar wird das $_GET-Array bereinigt und damit fehlt das v=1 beim Minify ...

Dazu müssten sich mal die JTL- Shop Entwickler äussern. :(
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
Genau, gezogen werden hier normalerweise die 86400 was 24h sind.
Ich vermute dein ?v geht wegen der .htaccess verloren.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Stimmt ...
Code:
RewriteRule ^asset/(.*)$ includes/libs/minify/?g=$1 [L]
liefert laut einem Online-Tool zwei Fragezeichen (%3F = ?) in der URL:

Ich war schon mal besser in Sachen RegEx :( Hat jemand eine Idee, wie man die .haccess anpassen müsste, dass der GET-Parameter korrekt angehängt wird?

Code:
 http://www.example.com/includes/libs/minify/?g=basteltheme.css&v=1
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Nachtrag:
Wenn ich in $_SERVER["REQUEST_URI"] prüfe, ob das ?v= enthalten ist, dann sind die Daten auch ein Jahr gültig:
PHP:
// check for URI versioning
if (preg_match('/&\\d/', $_SERVER['QUERY_STRING']) || isset($_GET['v']) || (strpos($_SERVER['REQUEST_URI'], '?v=') !== false)) {
    $min_serveOptions['maxAge'] = 31536000;
}

Ich mache mal ein Ticket auf.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
Ich habe das damals zur 4.04er mal angesprochen, da hieß es das es so gedacht ist.

Ich sehe darin auch einige Probleme, wenn man es so macht wie du das gerne hättest, daher habe ich ja den oben gezeigten Weg gewählt.
Ich kann einem User keinen Cache von einem Jahr geben, da ich ja auch innerhalb einer Templateversion an den Styles und auch am JS Änderungen vornehme (jedes Plugin kann beides bei der Installation ändern) und wie du ja schon bemerkt hast gibt es ja keine einzelne Versionierung der Styles und Scripts.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Hm, Änderungen am Code, ohne gleichzeitig eine irgendwie geartete Versionsnummer zu erhöhen, ist auch nicht sauber / wünschenswert, oder? Meinen kompletten Shop habe ich in einem Git-Repository. Wenn ich da an meinem Child-Template etwas ändere, dann kann ich problemlos die Version im Template hochzählen. Aber das macht sicherlich nicht jeder. Um so wichtiger wäre dann aus meine Sicht so etwas wie eine "Build"-Nummer oder vergleichbar zu implementieren. Eine Nummer, die (ggf. sogar automatisch) bei jeder Änderung hoch gezählt wird. Die wird z. B. bei jedem Speichern eines Templates / Plugins im Backend hoch gezählt. Dann bekommen die User immer die korrekte Dateiversion ausgeliefert, die dann auch eine lange Gültigkeit haben. Und wenn ich eine Änderung mache, dann möchte ich auch nicht, dass die User die noch bis zu 24 Stunden weiter verwenden müssen.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
Das jemand das in einem Git hat oder ständig die Version hochzählt wird sehr selten vorkommen, noch dazu schrieb ich ja schon, das auch Plugins die du installierst das css und JS verändern.

plugin_css
plugin_js_body
plugin_js_head

Dann musst du bei jedem Plugin Update deine Templateversion hochzählen.

Hm, Änderungen am Code, ohne gleichzeitig eine irgendwie geartete Versionsnummer zu erhöhen, ist auch nicht sauber / wünschenswert, oder?

Der Core bleibt bei meiner Version ja unberührt, es wird über das Child in der header und footer.tpl geändert.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Dann musst du bei jedem Plugin Update deine Templateversion hochzählen.
Nein - eben nicht. Wenn der Shop so etwas wie eine Build-Nummer automatisch generiert, braucht man das nicht.

PHP:
<link type="text/css" href="{$cCSS}?v={$nTemplateVersion}.{$nTemplateBuildNumber}" rel="stylesheet">

Das Minify Package sieht das Verhalten ja aus gutem Grund genau so vor: https://github.com/mrclay/minify/blob/master/docs/UserGuide.wiki.md#far-future-expires-headers
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.876
2.218
Berlin
Firma
css-umsetzung
Das macht der Shop aber nicht und das Template kann nicht wissen was die Plugins machen, ich glaube der Aufwand die auch noch zu überwachen wäre zu groß.

Ich habe in meinem Child Template z.B. einen eigenen Less Compiler integriert.
Wenn ich die entsprechende Einstellung im Child wähle, werden die einzelnen css und less Dateien aus dem Template überwacht und bei Änderungen automatisch neu compiled oder immer neu Generiert,
An diesem Punkt könnte man vermutlich direkt die Variable {$nTemplateVersion} ändern und um eine Buildnummer erweitern, aber wer weiß was man dann durcheinander bringt, ich glaube es gibt im Shop selbst auch Abfragen welche Templateversion verwendet wird.

Aber auch hier wird nur das Template selbst überwacht und nicht die Plugin Ressourcen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eine Rechnungsposition auf zwei Teilrechnungen berechnen - Wie löst ihr das? Arbeitsabläufe in JTL-Wawi 1
Neu bei bestimmten Kunden muss die Rechnung beigelegt werden / wie erfolgt dies? Arbeitsabläufe in JTL-Wawi 8
Kundenstammdaten: Wie erkenne ich in der Wawi, ob ein Shop-Kunde ein Kundenkonto angelegt hat? JTL-Wawi 1.9 2
Neu Auswahl im JTL Shop - keine Rechnung beilegen - wie in Wawi einlesen ? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Workflows: Wie genau funktioniert die Ausliefern-Aktion User helfen Usern - Fragen zu JTL-Wawi 4
Neu Buchhaltung, Controlling etc. - Wie macht ihr das? User helfen Usern - Fragen zu JTL-Wawi 3
Neu JTL POS: wie Position Übersicht neben dem Eingabebereich? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Shopify Basic mit JTL? Wie einrichten? Ist der JTL Guide noch aktuelle wegen PII Einschränkung? Shopify-Connector 2
Neu B2B Preis für JTL Wawi -> Amazon aktivieren, nur wie? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Verwendung mehrerer Artikeletikett Vorlagen, wie auswählen? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 6
Neu Wie exportiere ich Artikel ohne Lieferanten richtig? JTL Ameise - Eigene Exporte 0
Artikel mit Freitext Variation - oder wie "kundenindividuelle Artikel" handhaben? JTL-Wawi 1.10 1
Neu Kommissionsware --> via Chargen --> saubere Lagerbewerung aber wie? User helfen Usern - Fragen zu JTL-Wawi 7
Neu Versandklassen - wie richtig konfigurieren? Arbeitsabläufe in JTL-Wawi 2
Neu Versandadresse wird nicht wie gewünscht an Amazon übermittelt Einrichtung und Installation von JTL-eazyAuction 0
Neu robots.txt wie richtig einstellen ? Betrieb / Pflege von JTL-Shop 21
Neu Versandkostenberechnung ebay, Kleinpaket International. Wie berechnen in ebay ? eBay-Anbindung - Fehler und Bugs 0
Statistik nicht gleiches Ergebnis wie Ameise JTL-Wawi 1.10 4
Absenderadresse bei Amazon-Versandbestätigungen - wie anpassen? JTL-Wawi 1.10 0
Neu Wie füge ich dem News-System eigene Input-Felder hinzu? Technische Fragen zu Plugins und Templates 3
Neu Rechnungsdatenservice 2.0 : Wie initial Übergabe von Rechnungen mit Belegtyp (Belegkreis) "Rechnungsausgang" an Datev Unternehmen online? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Wie bringe ich die Anzeige der Lieferzeit in alle Artikelseiten? Allgemeine Fragen zu JTL-Shop 7
Neu Leider funktioniert der Support im Forum nicht so, wie es eigentlich sein soll. JTL-Wawi - Fehler und Bugs 15
Neu Wie kann man einen Artikel auf einen bestehenden Artikel bei Amazon aufschalten? Amazon-Lister - Ideen, Lob und Kritik 4
Neu Wie kann ich den Token manuell hinzufügen? Allgemeine Fragen zu JTL-Shop 2
Neu Wie lange ist der JTL Token gültig? Ich bekomme rel. schnell die Meldung "Fehlerhafter Token" User helfen Usern - Fragen zu JTL-Wawi 0
Wie ist euer Fazit zur 1.10? JTL-Wawi 1.10 20
SCX -> ausländische Marktplätze zB Kaufland, Conrad - wie kann ich Titel und Beschreibung auf italienisch übergeben (oder generell Sprache wechseln) kaufland.de - Anbindung (SCX) 0
Neu PayPal Plugin 2.0 - Vaulting - Ist IMMER ein neues Onboarding nötig? Wie prüfen, ob OK? Plugins für JTL-Shop 6
Neu Bekomme ich hier im Forum für mein Projekt Support? User helfen Usern 7
Neu Im Shop-Backend (5.5.3) erhalte ich bei einigen Menüpunkten "HTTP 500 Error" Seiten Allgemeine Fragen zu JTL-Shop 2
Neu Wo kann ich folgendes Wort übersetzen? Allgemeine Fragen zu JTL-Shop 2
Neu Ich habe eben einen neuen Shop erstellt und alle Artikel übertragen, aber leider werden mir bei den Versandarten die Versandklassen nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion Ich habe eine neue TSE-Karte gekauft (Swissbit TSE). Wo finde ich den PIN und PUK? Einrichtung / Updates von JTL-POS 3
Neu Kann ich irgendwie ausgeben, welches JTL-Konto das Dokument gedruckt hat? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 11
Neu Kredit- und Debitkarte, wo finde ich diese Zahlungen ? Allgemeine Fragen zu JTL-Shop 6

Ähnliche Themen